From 78d3ed63f265d62d3ddb6537e7c2e35063a0c1bb Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sat, 22 Apr 2023 20:49:19 +0100 Subject: [PATCH] Citrine Rocket House This map is pretty much finished, save for the map sprites for Jessie, James, and the unused Cat (aka Meowth) being imported, as well as an & symbol. This adds everything else - the marts, the Rocket Trio fight, the meeting music, the tileset, the trainer class for Jessie/James, I could go on. A ton of work well-done. --- README.md | 6 +- constants/map_constants.asm | 2 +- constants/music_constants.asm | 1 + constants/tileset_constants.asm | 1 + constants/trainer_constants.asm | 1 + crysaudio/music_pointers_red.asm | 1 + data/items/prices.asm | 8 +- data/maps/headers/CitrineRocketHouse.asm | 2 + data/maps/map_header_banks.asm | 2 +- data/maps/map_header_pointers.asm | 2 +- data/maps/objects/CitrineCity.asm | 1 + data/maps/objects/CitrineRocketHouse.asm | 19 ++++ data/maps/songs.asm | 2 +- data/maps/town_map_entries.asm | 1 - data/tilesets/bookshelf_tile_ids.asm | 2 + data/tilesets/collision_tile_ids.asm | 5 +- data/tilesets/dungeon_tilesets.asm | 1 + data/tilesets/tileset_headers.asm | 1 + data/tilesets/warp_tile_ids.asm | 6 +- data/trainers/ai_pointers.asm | 1 + data/trainers/encounter_types.asm | 1 + data/trainers/move_choices.asm | 1 + data/trainers/names.asm | 1 + data/trainers/parties.asm | 8 ++ data/trainers/pic_pointers_money.asm | 1 + gfx/blocksets/rockethouse.bst | Bin 0 -> 560 bytes gfx/pics.asm | 1 + gfx/tilesets.asm | 3 + gfx/tilesets/rockethouse.png | Bin 0 -> 2055 bytes maps.asm | 13 ++- maps/CitrineRocketHouse.blk | 2 + ram/wram.asm | 2 +- scan_includes.exe.stackdump | 10 +-- scripts/CeladonUniversityOutside.asm | 8 +- scripts/CitrineRocketHouse.asm | 106 +++++++++++++++++++++++ text.asm | 3 + text/CitrineRocketHouse.asm | 90 +++++++++++++++++++ 37 files changed, 287 insertions(+), 28 deletions(-) create mode 100644 data/maps/headers/CitrineRocketHouse.asm create mode 100644 data/maps/objects/CitrineRocketHouse.asm create mode 100644 gfx/blocksets/rockethouse.bst create mode 100644 gfx/tilesets/rockethouse.png create mode 100644 maps/CitrineRocketHouse.blk create mode 100644 scripts/CitrineRocketHouse.asm create mode 100644 text/CitrineRocketHouse.asm diff --git a/README.md b/README.md index a1d9fada..93ea82bd 100644 --- a/README.md +++ b/README.md @@ -261,9 +261,9 @@ Galarian and Paldean formes are accessed on the S.S. Anne, which now returns aft Credits ==== -* Plague von Karma - Creator of the Showdown Mod, Developer -* Martha's Against Humanity - Developer, tweaks of Albatross's sprites. -* Ema Skye - Developer +* Plague von Karma - Creator of the Showdown Mod, Developer, Maps, and occasional spriter (assisting with Tsubomitto, Carapthor) +* Martha's Against Humanity - Developer, Pokemon implementation, tweaks of Albatross's sprites. +* Ema Skye - Developer, Maps, Showdown Mod assistance * pret et al - Pokémon Red and Blue Disassembly Project, many tutorials helped us! * ausma - Showdown Mod assistance * Paulluxx - Showdown Mod assistance diff --git a/constants/map_constants.asm b/constants/map_constants.asm index fdcef86a..e1b5b19a 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -98,7 +98,7 @@ DEF FIRST_INDOOR_MAP EQU const_value map_const CELESTE_HILL, 12, 12 ; $4C - Was copy of above & unused map_const ROUTE_7_GATE, 3, 4 ; $4D map_const UNDERGROUND_PATH_ROUTE_7, 4, 4 ; $4E - map_const UNDERGROUND_PATH_ROUTE_7_COPY, 4, 4 ; $4F - Unused + map_const CITRINE_ROCKET_HOUSE, 5, 5 ; $4F - Unused, was UNDERGROUND_PATH_ROUTE_7_COPY map_const ROUTE_8_GATE, 3, 4 ; $50 map_const UNDERGROUND_PATH_ROUTE_8, 4, 4 ; $51 map_const ROCK_TUNNEL_POKECENTER, 7, 4 ; $52 diff --git a/constants/music_constants.asm b/constants/music_constants.asm index 12535aa7..3fc389d3 100644 --- a/constants/music_constants.asm +++ b/constants/music_constants.asm @@ -57,6 +57,7 @@ const MUSIC_MEET_MALE_TRAINER const MUSIC_DIGDA01 const MUSIC_FIELD06 + const MUSIC_MEET_JESSIE_JAMES const NUM_SONGS diff --git a/constants/tileset_constants.asm b/constants/tileset_constants.asm index 82f8deaa..26d2b146 100644 --- a/constants/tileset_constants.asm +++ b/constants/tileset_constants.asm @@ -28,4 +28,5 @@ const PREGYM ; 24 const CITRINE ; 25 const CELESTE ; 26 + const ROCKETHOUSE DEF NUM_TILESETS EQU const_value diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index 18038cf6..f747bfc2 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -66,4 +66,5 @@ ENDM trainer_const FIREFIGHTER trainer_const JUNIOR trainer_const JACK + trainer_const JESSIE_JAMES DEF NUM_TRAINERS EQU const_value - 1 diff --git a/crysaudio/music_pointers_red.asm b/crysaudio/music_pointers_red.asm index 1049451d..ba8d8458 100644 --- a/crysaudio/music_pointers_red.asm +++ b/crysaudio/music_pointers_red.asm @@ -51,3 +51,4 @@ Music: dba Music_MeetMaleTrainer dba Music_Digda01 dba Music_Field06 + dba Music_MeetJessieJames diff --git a/data/items/prices.asm b/data/items/prices.asm index faed1aad..e7bac30b 100644 --- a/data/items/prices.asm +++ b/data/items/prices.asm @@ -30,7 +30,7 @@ ItemPrices:: bcd3 0 ; EARTHBADGE bcd3 550 ; ESCAPE_ROPE bcd3 350 ; REPEL - bcd3 0 ; OLD_AMBER + bcd3 7000 ; OLD_AMBER bcd3 2100 ; FIRE_STONE bcd3 2100 ; THUNDER_STONE bcd3 2100 ; WATER_STONE @@ -40,8 +40,8 @@ ItemPrices:: bcd3 9800 ; CARBOS bcd3 9800 ; CALCIUM bcd3 4800 ; RARE_CANDY - bcd3 0 ; DOME_FOSSIL - bcd3 0 ; HELIX_FOSSIL + bcd3 7000 ; DOME_FOSSIL + bcd3 7000 ; HELIX_FOSSIL bcd3 0 ; SECRET_KEY bcd3 2100 ; HEART_STONE bcd3 0 ; BIKE_VOUCHER @@ -49,7 +49,7 @@ ItemPrices:: bcd3 2100 ; LEAF_STONE bcd3 0 ; CARD_KEY bcd3 10000 ; NUGGET - bcd3 0 ; WING_FOSSIL + bcd3 7000 ; WING_FOSSIL bcd3 1000 ; POKE_DOLL bcd3 600 ; FULL_HEAL bcd3 1500 ; REVIVE diff --git a/data/maps/headers/CitrineRocketHouse.asm b/data/maps/headers/CitrineRocketHouse.asm new file mode 100644 index 00000000..68cc8640 --- /dev/null +++ b/data/maps/headers/CitrineRocketHouse.asm @@ -0,0 +1,2 @@ + map_header CitrineRocketHouse, CITRINE_ROCKET_HOUSE, ROCKETHOUSE, 0 + end_map_header \ No newline at end of file diff --git a/data/maps/map_header_banks.asm b/data/maps/map_header_banks.asm index 53f7c3a5..9c9f307b 100644 --- a/data/maps/map_header_banks.asm +++ b/data/maps/map_header_banks.asm @@ -80,7 +80,7 @@ MapHeaderBanks:: db BANK(CelesteHill_h) ; was db BANK(UndergroundPathRoute6_h), UNDERGROUND_PATH_ROUTE_6_COPY db BANK(Route7Gate_h) db BANK(UndergroundPathRoute7_h) - db BANK(UndergroundPathRoute7Copy_h) + db BANK(CitrineRocketHouse_h) ; was db BANK(UndergroundPathRoute7Copy_h) db BANK(Route8Gate_h) db BANK(UndergroundPathRoute8_h) db BANK(RockTunnelPokecenter_h) diff --git a/data/maps/map_header_pointers.asm b/data/maps/map_header_pointers.asm index 30d7c5ea..2c20d408 100644 --- a/data/maps/map_header_pointers.asm +++ b/data/maps/map_header_pointers.asm @@ -80,7 +80,7 @@ MapHeaderPointers:: dw CelesteHill_h ; was dw UndergroundPathRoute6_h, UNDERGROUND_PATH_ROUTE_6_COPY dw Route7Gate_h dw UndergroundPathRoute7_h - dw UndergroundPathRoute7Copy_h + dw CitrineRocketHouse_h ; was dw UndergroundPathRoute7Copy_h dw Route8Gate_h dw UndergroundPathRoute8_h dw RockTunnelPokecenter_h diff --git a/data/maps/objects/CitrineCity.asm b/data/maps/objects/CitrineCity.asm index ba42e829..604e3c42 100644 --- a/data/maps/objects/CitrineCity.asm +++ b/data/maps/objects/CitrineCity.asm @@ -2,6 +2,7 @@ CitrineCity_Object: db $43 ; border block def_warp_events + warp_event 9, 27, CITRINE_ROCKET_HOUSE, 1 def_bg_events diff --git a/data/maps/objects/CitrineRocketHouse.asm b/data/maps/objects/CitrineRocketHouse.asm new file mode 100644 index 00000000..da939e66 --- /dev/null +++ b/data/maps/objects/CitrineRocketHouse.asm @@ -0,0 +1,19 @@ +CitrineRocketHouse_Object: + db $01 ; border block + + def_warp_events + warp_event 4, 9, CITRINE_CITY, 1 + warp_event 5, 9, CITRINE_CITY, 1 + + def_bg_events + + def_object_events + object_event 4, 1, SPRITE_ROCKET, STAY, DOWN, 1 ; Mart Guy + object_event 5, 1, SPRITE_ROCKET, STAY, DOWN, 2 ; Mart Guy + object_event 1, 6, SPRITE_ROCKET, STAY, RIGHT, 3 ; person + object_event 9, 3, SPRITE_ROCKET, STAY, UP, 4 ; person + object_event 9, 8, SPRITE_ROCKET, STAY, UP, 5 ; Meowth ; SPRITE_CAT + object_event 9, 5, SPRITE_ROCKET, STAY, DOWN, 6 ; James ; SPRITE_JAMES + object_event 7, 6, SPRITE_ROCKET, STAY, RIGHT, 7 ; Jessie ; SPRITE_JESSIE + + def_warps_to CITRINE_ROCKET_HOUSE \ No newline at end of file diff --git a/data/maps/songs.asm b/data/maps/songs.asm index eb10a7b6..2dbfb8fe 100644 --- a/data/maps/songs.asm +++ b/data/maps/songs.asm @@ -79,7 +79,7 @@ MapSongBanks:: db MUSIC_DUNGEON2, 0 ; CELESTE_HILL, was UNDERGROUND_PATH_ROUTE_6_COPY db MUSIC_CITIES1, 0 ; ROUTE_7_GATE db MUSIC_CITIES1, 0 ; UNDERGROUND_PATH_ROUTE_7 - db MUSIC_CELADON, 0 ; UNDERGROUND_PATH_ROUTE_7_COPY + db MUSIC_DUNGEON1, 0 ; Rocket House, UNDERGROUND_PATH_ROUTE_7_COPY db MUSIC_CITIES1, 0 ; ROUTE_8_GATE db MUSIC_CITIES1, 0 ; UNDERGROUND_PATH_ROUTE_8 db MUSIC_POKECENTER, 0 ; ROCK_TUNNEL_POKECENTER diff --git a/data/maps/town_map_entries.asm b/data/maps/town_map_entries.asm index 2534c4ac..6be281c3 100644 --- a/data/maps/town_map_entries.asm +++ b/data/maps/town_map_entries.asm @@ -69,7 +69,6 @@ InternalMapEntries: internal_map DAYCARE, 10, 4, Route5Name internal_map UNDERGROUND_PATH_ROUTE_6, 10, 8, Route6Name internal_map CELESTE_HILL, 6, 10, CelesteHillName - internal_map UNDERGROUND_PATH_ROUTE_7_COPY, 9, 5, Route7Name internal_map UNDERGROUND_PATH_ROUTE_8, 11, 5, Route8Name internal_map ROCK_TUNNEL_1F, 14, 3, RockTunnelName internal_map POWER_PLANT, 15, 4, PowerPlantName diff --git a/data/tilesets/bookshelf_tile_ids.asm b/data/tilesets/bookshelf_tile_ids.asm index 43e2d2a7..e321c6fb 100644 --- a/data/tilesets/bookshelf_tile_ids.asm +++ b/data/tilesets/bookshelf_tile_ids.asm @@ -24,4 +24,6 @@ BookshelfTileIDs: bookshelf_tile SHIP, $36, BookOrSculptureText bookshelf_tile PREGYM, $56, BookOrSculptureText bookshelf_tile PREGYM, $57, BookOrSculptureText + bookshelf_tile ROCKETHOUSE, $38, BookOrSculptureText + bookshelf_tile ROCKETHOUSE, $39, BookOrSculptureText db -1 ; end diff --git a/data/tilesets/collision_tile_ids.asm b/data/tilesets/collision_tile_ids.asm index ae9b53af..079ab39f 100644 --- a/data/tilesets/collision_tile_ids.asm +++ b/data/tilesets/collision_tile_ids.asm @@ -76,4 +76,7 @@ Citrine_Coll:: coll_tiles $2C, $31, $3F, $55, $0E, $2F, $23, $20, $10, $03, $1C, $1B, $0B, $0C, $21, $39, $3C, $48, $49, $58, $59 Celeste_Coll:: - coll_tiles $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f, $09, $08, $18, $19 \ No newline at end of file + coll_tiles $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f, $09, $08, $18, $19 + +RocketHouse_Coll:: + coll_tiles $13, $31, $01, $53 diff --git a/data/tilesets/dungeon_tilesets.asm b/data/tilesets/dungeon_tilesets.asm index 2af36696..6a679ced 100644 --- a/data/tilesets/dungeon_tilesets.asm +++ b/data/tilesets/dungeon_tilesets.asm @@ -10,4 +10,5 @@ DungeonTilesets: db FACILITY db CEMETERY db GYM + db ROCKETHOUSE db -1 ; end diff --git a/data/tilesets/tileset_headers.asm b/data/tilesets/tileset_headers.asm index ea8e5aad..c34b8c81 100644 --- a/data/tilesets/tileset_headers.asm +++ b/data/tilesets/tileset_headers.asm @@ -36,4 +36,5 @@ Tilesets: tileset PreGym, $3A, $3B, -1, -1, TILEANIM_NONE tileset Citrine, -1, -1, -1, $3F, TILEANIM_WATER_FLOWER tileset Celeste, -1, -1, -1, $19, TILEANIM_WATER_FLOWER + tileset RocketHouse, $0A, -1, -1, -1, TILEANIM_NONE assert_table_length NUM_TILESETS diff --git a/data/tilesets/warp_tile_ids.asm b/data/tilesets/warp_tile_ids.asm index f3290d50..94b16224 100644 --- a/data/tilesets/warp_tile_ids.asm +++ b/data/tilesets/warp_tile_ids.asm @@ -27,6 +27,7 @@ WarpTileIDPointers: dw .PreGymWarpTileIDs dw .CitrineWarpTileIDs dw .CelesteWarpTileIDs + dw .RocketHouseWarpTileIDs assert_table_length NUM_TILESETS MACRO warp_tiles @@ -97,11 +98,14 @@ ENDM warp_tiles $23 .CitrineWarpTileIDs: - warp_tiles $1B, $1C + warp_tiles $1B, $1C, $0B, $0C .CelesteWarpTileIDs: warp_tiles $5A, $5C, $3A, $30, $50, $51 ; Like Forest but a bit better +.RocketHouseWarpTileIDs: + warp_tiles $53 + .ShipPortWarpTileIDs: .ClubWarpTileIDs: warp_tiles ; end diff --git a/data/trainers/ai_pointers.asm b/data/trainers/ai_pointers.asm index 9b3e53e4..1ec9ce0c 100644 --- a/data/trainers/ai_pointers.asm +++ b/data/trainers/ai_pointers.asm @@ -55,4 +55,5 @@ TrainerAIPointers: dbw 3, GenericAI ; Firefighter dbw 3, GenericAI ; Junior dbw 2, BlackbeltAI ; Jack + dbw 2, GenericAI ; Jessie & James assert_table_length NUM_TRAINERS diff --git a/data/trainers/encounter_types.asm b/data/trainers/encounter_types.asm index 71232b41..6ab860bf 100644 --- a/data/trainers/encounter_types.asm +++ b/data/trainers/encounter_types.asm @@ -14,4 +14,5 @@ EvilTrainerList:: db OPP_SCIENTIST db OPP_GIOVANNI db OPP_ROCKET + db OPP_JESSIE_JAMES db -1 ; end diff --git a/data/trainers/move_choices.asm b/data/trainers/move_choices.asm index d2b570e9..59965c97 100644 --- a/data/trainers/move_choices.asm +++ b/data/trainers/move_choices.asm @@ -60,4 +60,5 @@ TrainerClassMoveChoiceModifications: move_choices 1, 3, ; FIREFIGHTER move_choices 1, 3, ; JUNIOR move_choices 1, 3, ; JACK + move_choices 1, 3, ; JESSIE_JAMES assert_list_length NUM_TRAINERS diff --git a/data/trainers/names.asm b/data/trainers/names.asm index 3633d0e7..6b9da65c 100644 --- a/data/trainers/names.asm +++ b/data/trainers/names.asm @@ -51,4 +51,5 @@ TrainerNames:: li "FIREFIGHTER" li "JUNIOR" li "JACK" + li "JESSIE&JAMES" assert_list_length NUM_TRAINERS diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 86ba28b9..48f658da 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -51,6 +51,7 @@ TrainerDataPointers: dw FirefighterData dw JuniorData dw JackData + dw JessieJamesData assert_table_length NUM_TRAINERS ; if first byte != $FF, then @@ -676,5 +677,12 @@ JuniorData: JackData: +JessieJamesData: + db 14, EKANS, MEOWTH, KOFFING, 0 ; Mt. Moon + db 25, KOFFING, LICKITUNG, MEOWTH, EKANS, 0 ; Rocket Hideout + db 27, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, 0 ; Pokemon Tower + db 31, WEEZING, ARBOK, LICKITUNG, VICTREEBEL, GYARADOS, MEOWTH, 0 ; Silph Co. + db $FF, 80, MEOWTH, 72, ARBOK, 71, WEEZING, 74, LICKILICKY, 74, VICTREEBEL, 74, GYARADOS, 0 ; Citrine Rocket House + INCLUDE "data/trainers/scaled_parties.asm" INCLUDE "data/trainers/rival_parties.asm" \ No newline at end of file diff --git a/data/trainers/pic_pointers_money.asm b/data/trainers/pic_pointers_money.asm index 9dd434bd..6c5ee303 100644 --- a/data/trainers/pic_pointers_money.asm +++ b/data/trainers/pic_pointers_money.asm @@ -58,4 +58,5 @@ TrainerPicAndMoneyPointers:: pic_money FirefighterPic, 1500 pic_money JuniorPic, 1000 pic_money JackPic, 5000 + pic_money JessieJamesPic, 9900 assert_table_length NUM_TRAINERS diff --git a/gfx/blocksets/rockethouse.bst b/gfx/blocksets/rockethouse.bst new file mode 100644 index 0000000000000000000000000000000000000000..8951a8692391d18d3a0ccd3b898f1a42601a5fd8 GIT binary patch literal 560 zcmZ8c$x?$*5KMzgf_bI}ToM8%aZU8%0t$LzIk}e0|No0K^)kVvsi}V5v(o9T<7fle z0Cjsr!x5=X-pMI>clWB5r!(N@79b)|0@&IH_7C{YxVQu!9)bD7YFf<$US5HZPvGqx z`1)Q~K)2_(!%+}AuHyz_5bC}?V+Omv-&a<@<>^c=lKeP|;^QQlNPU{g6*lq$NV7DX zFYK2Wd0`knL+5b6;l7n-Ibhk>JYe^zZu8c+|9f^0TwMcC&t+9sbyGKG1=J02$ORJW s|C?hH1~85#jEQ2F6P~~HZKdoJU;C7ImQek}_+{vxmhBy?wO;T01564lqW}N^ literal 0 HcmV?d00001 diff --git a/gfx/pics.asm b/gfx/pics.asm index 2c72fcc8..5384650d 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -593,3 +593,4 @@ StudentPic:: INCBIN "gfx/trainers/student.pic" FirefighterPic:: INCBIN "gfx/trainers/firefighter.pic" JuniorPic:: INCBIN "gfx/trainers/junior.pic" JackPic:: INCBIN "gfx/trainers/jack.pic" +JessieJamesPic:: INCBIN "gfx/trainers/jessiejames.pic" diff --git a/gfx/tilesets.asm b/gfx/tilesets.asm index 3f90c961..ff32d4d4 100644 --- a/gfx/tilesets.asm +++ b/gfx/tilesets.asm @@ -71,3 +71,6 @@ Citrine_Block:: INCBIN "gfx/blocksets/citrine.bst" Celeste_GFX:: INCBIN "gfx/tilesets/celeste.2bpp" Celeste_Block:: INCBIN "gfx/blocksets/celeste.bst" + +RocketHouse_GFX:: INCBIN "gfx/tilesets/rockethouse.2bpp" +RocketHouse_Block:: INCBIN "gfx/blocksets/rockethouse.bst" diff --git a/gfx/tilesets/rockethouse.png b/gfx/tilesets/rockethouse.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9c23ddd1dd372a1a3094bb1d5179496c316562 GIT binary patch literal 2055 zcmV+i2>ADjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf2b@VnK~#8N?VJg6 z6iW;RZGtPpA>ojG=iqca>(|=d-iXPFqBcpTlGHr|1|I)B@i5@`@88d(zvCZ2e%xAX zeYOAj^XIeX!)?9;HjXXmfT^zi(*eWK0eR> zQf;?L8-PwvujND1TfdUg`7_XM6<=ZuCu#g2>V3ccdIB%l>mdWsO1zi!&4BJMc?M{s zuJpSp+1W%bzU-<@4Me z&&ZFa7TDkQNisI#TK2NzH|)r#?6d%Isyg3tHf2(_KJoda{ z`O3T})87STLRxqk9B;{L9y#`z*S7%|H?Y-)cHM`ag!F=4!LQj}(@*a(JO3;*`^I$j zo`O8>y8{kt^|V%1x|ed0&a?t*;97+sdFiy_dG34e$iJgtv)XW+{^hvE*#yn(pXHl} z^m<{QO&sT1g+!Z3g0TW;*Ym~kihpOQKEPGBKMUWuAeZX(FuOFev=%<)KBdlkPk#&T zr%$lz-zxZM6VA-_-1`@}eFPZTUQgR0U)%Lnk4@RJtDZWkyX#*M{lw?I14*y*e}(BA zz^XR^;94sXy(c~cSmB(}eg$8uKdb&#QijC)5mjx}Ipp}OGW`xfPpkCS>t{SRvbAtM zi=bz}#g2a!Whm602CM$P2ff&~NWZ_M$U?7g(OUyW@~?&G%+5XQ z*AZ6kLd+KT+lEuD7l6}73E4_7@?R)Mj zRdz=gGU48Fht#Rxn^y7THhtNF^SeI{tWS39DXd^nr*@bHZzZ@_y@{~X>LJ%!_^P+< zup755n%%RK+n)m@T#kyWRmpnqpjHJVi_T~dR-T^TzPbi}2joX~vtI>!z2aD5^&a&M z3v?Ik+LK%ICbd=edq|K(E?8OV5W~-}Q3`?lUW(Ub1)m%DCM= z0t{v^`M?^7Aakb56YOcXb>@iFIr6bHLVGQ{qqBNBYtG4YZ@L>lHkoc&z5=)pr0cN%gf17-R#ndcX+J zIcrP()!???U{@8<6|59nkDcVh?K=RV#F)eBYcPFvc|htN<&18RBYvUNDvA-rXZ4JH z@@MDFig=`NZgzP22&jpr5VAp)Ig8Hn);ZFyggepXJS~i`?wSS3Gf^(0A zT**!xJ-g~0&Bd!f2cS95OR`4gx#t=jJ@~W1eQ23rpEjSsUh<9G4(|~+3%TX9y!v5K zR(@5=J%a_T^UA6hVon?F$?j*WT>U!yD2TPim2qydBfG+@0uYijs_5L;nVMu^ZL}x5 zPmi?hj&>qz}D>v}CS`-&rVtQ|&0|Qh=j&)V{iB8$1=sZA|Zc)TiF4M=tL;lJk6; zv2m`QoGY(vHgJ6VZ6IeHXv)0X;d21Ucp= z%{@qcd)Cw$fxYQJ4_`sYcEQQdMg|v1qW5Fnpt7d_InIPIR>wXIUt8?Cj;$)6=L>tS z_^GQ;7Er=mo0q%+-Wr0i+cH?K{ZS)8>Kj0VXkx^%fd_i!T&Kr&%IDbLvl(m8vq9VL zL2E5_T6ibQ?&*%lKF_%jSWUakoRpb=d2z{r?A%YC)aQPTGb!S_3#!OqR z8w-6+d2K4gyv8oqQeJyiUM?vB1F%a5uLm+K{uxYR?%MAC)TN