diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index d7e7377a26..cb460bd2f1 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -20,7 +20,7 @@ var/hibernate = 0 //Do we even process? var/scrubbing = 1 //0 = siphoning, 1 = scrubbing - var/list/scrubbing_gas = list("carbon_dioxide", "phoron") + var/list/scrubbing_gas = list("carbon_dioxide") var/panic = 0 //is this scrubber panicked? diff --git a/code/ZAS/Phoron.dm b/code/ZAS/Phoron.dm index fc0d5a1191..b8ca13521c 100644 --- a/code/ZAS/Phoron.dm +++ b/code/ZAS/Phoron.dm @@ -40,15 +40,11 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi') obj/var/contaminated = 0 -obj/var/phoronproof = 0 - /obj/item/proc/can_contaminate() //Clothing and backpacks can be contaminated. if(flags & PHORONGUARD) return 0 - else if(phoronproof == 1) - return 0 else if(istype(src,/obj/item/weapon/storage/backpack)) return 0 //Cannot be washed :( else if(istype(src,/obj/item/clothing)) @@ -144,7 +140,7 @@ obj/var/phoronproof = 0 //Checks if the head is adequately sealed. //This is just odd. TODO: Make this respect the body_parts_covered stuff like thermal gear does. if(head) if(vsc.plc.PHORONGUARD_ONLY) - if(head.flags & PHORONGUARD || head.phoronproof) + if(head.flags & PHORONGUARD) return 1 else if(head.body_parts_covered & EYES) return 1 @@ -156,7 +152,7 @@ obj/var/phoronproof = 0 for(var/obj/item/protection in list(wear_suit, gloves, shoes)) //This is why it's odd. If I'm in a full suit, but my shoes and gloves aren't phoron proof, damage. if(!protection) continue - if(vsc.plc.PHORONGUARD_ONLY && !(protection.flags & PHORONGUARD) && !protection.phoronproof) + if(vsc.plc.PHORONGUARD_ONLY && !(protection.flags & PHORONGUARD)) return 0 coverage |= protection.body_parts_covered diff --git a/code/__defines/color.dm b/code/__defines/color.dm new file mode 100644 index 0000000000..ba9efe20de --- /dev/null +++ b/code/__defines/color.dm @@ -0,0 +1,17 @@ +//Color defines used by the assembly detailer. +#define COLOR_ASSEMBLY_BLACK "#545454" +#define COLOR_ASSEMBLY_BGRAY "#9497AB" +#define COLOR_ASSEMBLY_WHITE "#E2E2E2" +#define COLOR_ASSEMBLY_RED "#CC4242" +#define COLOR_ASSEMBLY_ORANGE "#E39751" +#define COLOR_ASSEMBLY_BEIGE "#AF9366" +#define COLOR_ASSEMBLY_BROWN "#97670E" +#define COLOR_ASSEMBLY_GOLD "#AA9100" +#define COLOR_ASSEMBLY_YELLOW "#CECA2B" +#define COLOR_ASSEMBLY_GURKHA "#999875" +#define COLOR_ASSEMBLY_LGREEN "#789876" +#define COLOR_ASSEMBLY_GREEN "#44843C" +#define COLOR_ASSEMBLY_LBLUE "#5D99BE" +#define COLOR_ASSEMBLY_BLUE "#38559E" +#define COLOR_ASSEMBLY_PURPLE "#6F6192" +#define COLOR_ASSEMBLY_HOT_PINK "#FF69B4" \ No newline at end of file diff --git a/code/__defines/integrated_circuits.dm b/code/__defines/integrated_circuits.dm new file mode 100644 index 0000000000..b2859a232d --- /dev/null +++ b/code/__defines/integrated_circuits.dm @@ -0,0 +1,3 @@ +// Methods of obtaining a circuit. +#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer. +#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it. \ No newline at end of file diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 17c3ab8923..d1344e55c5 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -1,18 +1,3 @@ -//Timing subsystem -//Don't run if there is an identical unique timer active -#define TIMER_UNIQUE 0x1 -//For unique timers: Replace the old timer rather then not start this one -#define TIMER_OVERRIDE 0x2 -//Timing should be based on how timing progresses on clients, not the sever. -// tracking this is more expensive, -// should only be used in conjuction with things that have to progress client side, such as animate() or sound() -#define TIMER_CLIENT_TIME 0x4 -//Timer can be stopped using deltimer() -#define TIMER_STOPPABLE 0x8 -//To be used with TIMER_UNIQUE -//prevents distinguishing identical timers with the wait variable -#define TIMER_NO_HASH_WAIT 0x10 -#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something #define INITIALIZATION_INSSATOMS 0 //New should not call Initialize #define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE) @@ -22,15 +7,6 @@ #define INITIALIZE_HINT_LATELOAD 1 //Call LateInitialize #define INITIALIZE_HINT_QDEL 2 //Call qdel on the atom -//type and all subtypes should always call Initialize in New() -#define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){\ - ..();\ - if(!initialized) {\ - args[1] = TRUE;\ - SSatoms.InitAtom(src, args);\ - }\ -} - // SS runlevels #define RUNLEVEL_INIT 0 // "Initialize Only" - Used for subsystems that should never be fired (Should also have SS_NO_FIRE set) @@ -58,6 +34,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_HOLOMAPS -5 #define INIT_ORDER_OVERLAY -6 #define INIT_ORDER_XENOARCH -20 +#define INIT_ORDER_CIRCUIT -21 // Subsystem fire priority, from lowest to highest priority diff --git a/code/_helpers/icons.dm b/code/_helpers/icons.dm index da4385ef6f..c6cae7b464 100644 --- a/code/_helpers/icons.dm +++ b/code/_helpers/icons.dm @@ -634,7 +634,6 @@ as a single icon. Useful for when you want to manipulate an icon via the above a The _flatIcons list is a cache for generated icon files. */ -// Creates a single icon from a given /atom or /image. Only the first argument is required. /proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE) // We start with a blank canvas, otherwise some icon procs crash silently var/icon/flat = icon('icons/effects/effects.dmi', "nothing") // Final flattened icon @@ -677,7 +676,7 @@ The _flatIcons list is a cache for generated icon files. var/curdir var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have - + //These should use the parent's direction (most likely) if(!A.dir || A.dir == SOUTH) curdir = defdir @@ -686,7 +685,7 @@ The _flatIcons list is a cache for generated icon files. //Let's check if the icon actually contains any diagonals, just skip if it's south to save (lot of) time if(curdir != SOUTH) - var/icon/test_icon + var/icon/test_icon var/directionals_exist = FALSE var/list/dirs_to_check = cardinal - SOUTH outer: @@ -824,6 +823,9 @@ The _flatIcons list is a cache for generated icon files. else return icon(flat, "", SOUTH) + + + /proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A. for(var/I in A.overlays)//For every image in overlays. var/image/I will not work, don't try it. @@ -874,9 +876,10 @@ The _flatIcons list is a cache for generated icon files. if(4) I.pixel_y++ overlays += I//And finally add the overlay. -/proc/getHologramIcon(icon/A, safety=1)//If safety is on, a new icon is not created. +/proc/getHologramIcon(icon/A, safety=1, no_color = FALSE)//If safety is on, a new icon is not created. var/icon/flat_icon = safety ? A : new(A)//Has to be a new icon to not constantly change the same icon. - flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. + if(!no_color) + flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. flat_icon.ChangeOpacity(0.5)//Make it half transparent. var/icon/alpha_mask = new('icons/effects/effects.dmi', "scanline")//Scanline effect. flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. diff --git a/code/_macros.dm b/code/_macros.dm index cd28ee612d..7bc2345d5b 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -91,4 +91,6 @@ // Null-safe L.Cut() #define LAZYCLEARLIST(L) if(L) L.Cut() // Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression. -#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) \ No newline at end of file +#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) +// Turns LAZYINITLIST(L) L[K] = V into ... for associated lists +#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V; \ No newline at end of file diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index e64d4f946f..1dcc2bc955 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -76,7 +76,7 @@ if(A == loc || (A in loc) || (A in contents)) // No adjacency checks - var/resolved = A.attackby(W,src) + var/resolved = A.attackby(W, src, 1) if(!resolved && A && W) W.afterattack(A,src,1,params) return @@ -88,7 +88,7 @@ if(isturf(A) || isturf(A.loc)) if(A.Adjacent(src)) // see adjacent.dm - var/resolved = A.attackby(W, src) + var/resolved = A.attackby(W, src, 1) if(!resolved && A && W) W.afterattack(A, src, 1, params) return diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 428485573d..afe99e2c1d 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -28,20 +28,20 @@ avoid code duplication. This includes items that may sometimes act as a standard return //I would prefer to rename this to attack(), but that would involve touching hundreds of files. -/obj/item/proc/resolve_attackby(atom/A, mob/user) +/obj/item/proc/resolve_attackby(atom/A, mob/user, var/attack_modifier = 1) pre_attack(A, user) add_fingerprint(user) - return A.attackby(src, user) + return A.attackby(src, user, attack_modifier) // No comment -/atom/proc/attackby(obj/item/W, mob/user) +/atom/proc/attackby(obj/item/W, mob/user, var/attack_modifier) return -/atom/movable/attackby(obj/item/W, mob/user) +/atom/movable/attackby(obj/item/W, mob/user, var/attack_modifier) if(!(W.flags & NOBLUDGEON)) visible_message("[src] has been hit by [user] with [W].") -/mob/living/attackby(obj/item/I, mob/user) +/mob/living/attackby(obj/item/I, mob/user, var/attack_modifier) if(!ismob(user)) return 0 if(can_operate(src) && I.do_surgery(src,user)) @@ -49,7 +49,7 @@ avoid code duplication. This includes items that may sometimes act as a standard return 1 else return 0 - return I.attack(src, user, user.zone_sel.selecting) + return I.attack(src, user, user.zone_sel.selecting, attack_modifier) // Used to get how fast a mob should attack, and influences click delay. // This is just for inheritence. @@ -73,7 +73,7 @@ avoid code duplication. This includes items that may sometimes act as a standard return //I would prefer to rename this attack_as_weapon(), but that would involve touching hundreds of files. -/obj/item/proc/attack(mob/living/M, mob/living/user, var/target_zone) +/obj/item/proc/attack(mob/living/M, mob/living/user, var/target_zone, var/attack_modifier) if(!force || (flags & NOBLUDGEON)) return 0 if(M == user && user.a_intent != I_HURT) @@ -92,12 +92,12 @@ avoid code duplication. This includes items that may sometimes act as a standard var/hit_zone = M.resolve_item_attack(src, user, target_zone) if(hit_zone) - apply_hit_effect(M, user, hit_zone) + apply_hit_effect(M, user, hit_zone, attack_modifier) return 1 //Called when a weapon is used to make a successful melee attack on a mob. Returns the blocked result -/obj/item/proc/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) +/obj/item/proc/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone, var/attack_modifier) user.break_cloak() if(hitsound) playsound(loc, hitsound, 50, 1, -1) @@ -106,7 +106,10 @@ avoid code duplication. This includes items that may sometimes act as a standard for(var/datum/modifier/M in user.modifiers) if(!isnull(M.outgoing_melee_damage_percent)) power *= M.outgoing_melee_damage_percent + if(HULK in user.mutations) power *= 2 - return target.hit_with_weapon(src, user, power, hit_zone) + power *= attack_modifier + + return target.hit_with_weapon(src, user, power, hit_zone) \ No newline at end of file diff --git a/code/controllers/subsystems/circuits.dm b/code/controllers/subsystems/circuits.dm new file mode 100644 index 0000000000..8fda048c60 --- /dev/null +++ b/code/controllers/subsystems/circuits.dm @@ -0,0 +1,96 @@ +// +// This is for custom circuits, mostly the initialization of global properties about them. +// Might make this also process them in the future if its better to do that than using the obj ticker. +// +SUBSYSTEM_DEF(circuit) + name = "Circuit" + init_order = INIT_ORDER_CIRCUIT + flags = SS_NO_FIRE + var/list/all_components = list() // Associative list of [component_name]:[component_path] pairs + var/list/cached_components = list() // Associative list of [component_path]:[component] pairs + var/list/all_assemblies = list() // Associative list of [assembly_name]:[assembly_path] pairs + var/list/cached_assemblies = list() // Associative list of [assembly_path]:[assembly] pairs + var/list/all_circuits = list() // Associative list of [circuit_name]:[circuit_path] pairs + var/list/circuit_fabricator_recipe_list = list() // Associative list of [category_name]:[list_of_circuit_paths] pairs +// var/cost_multiplier = MINERAL_MATERIAL_AMOUNT / 10 // Each circuit cost unit is 200cm3 + +/datum/controller/subsystem/circuit/Recover() + flags |= SS_NO_INIT // Make extra sure we don't initialize twice. + +/datum/controller/subsystem/circuit/Initialize(timeofday) + circuits_init() + return ..() + +/datum/controller/subsystem/circuit/proc/circuits_init() + //Cached lists for free performance + for(var/path in typesof(/obj/item/integrated_circuit)) + var/obj/item/integrated_circuit/IC = path + var/name = initial(IC.name) + all_components[name] = path // Populating the component lists + cached_components[IC] = new path + + if(!(initial(IC.spawn_flags) & (IC_SPAWN_DEFAULT | IC_SPAWN_RESEARCH))) + continue + + var/category = initial(IC.category_text) + if(!circuit_fabricator_recipe_list[category]) + circuit_fabricator_recipe_list[category] = list() + var/list/category_list = circuit_fabricator_recipe_list[category] + category_list += IC // Populating the fabricator categories + + for(var/path in typesof(/obj/item/device/electronic_assembly)) + var/obj/item/device/electronic_assembly/A = path + var/name = initial(A.name) + all_assemblies[name] = path + cached_assemblies[A] = new path + + + circuit_fabricator_recipe_list["Assemblies"] = list( + /obj/item/device/electronic_assembly/default, + /obj/item/device/electronic_assembly/calc, + /obj/item/device/electronic_assembly/clam, + /obj/item/device/electronic_assembly/simple, + /obj/item/device/electronic_assembly/hook, + /obj/item/device/electronic_assembly/pda, + /obj/item/device/electronic_assembly/tiny/default, + /obj/item/device/electronic_assembly/tiny/cylinder, + /obj/item/device/electronic_assembly/tiny/scanner, + /obj/item/device/electronic_assembly/tiny/hook, + /obj/item/device/electronic_assembly/tiny/box, + /obj/item/device/electronic_assembly/medium/default, + /obj/item/device/electronic_assembly/medium/box, + /obj/item/device/electronic_assembly/medium/clam, + /obj/item/device/electronic_assembly/medium/medical, + /obj/item/device/electronic_assembly/medium/gun, + /obj/item/device/electronic_assembly/medium/radio, + /obj/item/device/electronic_assembly/large/default, + /obj/item/device/electronic_assembly/large/scope, + /obj/item/device/electronic_assembly/large/terminal, + /obj/item/device/electronic_assembly/large/arm, + /obj/item/device/electronic_assembly/large/tall, + /obj/item/device/electronic_assembly/large/industrial, + /obj/item/device/electronic_assembly/drone/default, + /obj/item/device/electronic_assembly/drone/arms, + /obj/item/device/electronic_assembly/drone/secbot, + /obj/item/device/electronic_assembly/drone/medbot, + /obj/item/device/electronic_assembly/drone/genbot, + /obj/item/device/electronic_assembly/drone/android, + /obj/item/device/electronic_assembly/wallmount/tiny, + /obj/item/device/electronic_assembly/wallmount/light, + /obj/item/device/electronic_assembly/wallmount, + /obj/item/device/electronic_assembly/wallmount/heavy, + /obj/item/weapon/implant/integrated_circuit, + /obj/item/clothing/under/circuitry, + /obj/item/clothing/gloves/circuitry, + /obj/item/clothing/glasses/circuitry, + /obj/item/clothing/shoes/circuitry, + /obj/item/clothing/head/circuitry, + /obj/item/clothing/ears/circuitry, + /obj/item/clothing/suit/circuitry + ) + + circuit_fabricator_recipe_list["Tools"] = list( + /obj/item/device/integrated_electronics/wirer, + /obj/item/device/integrated_electronics/debugger, + /obj/item/device/integrated_electronics/detailer + ) diff --git a/code/datums/observation/helpers.dm b/code/datums/observation/helpers.dm index 7857434170..9116026700 100644 --- a/code/datums/observation/helpers.dm +++ b/code/datums/observation/helpers.dm @@ -1,5 +1,5 @@ /atom/movable/proc/recursive_move(var/atom/movable/am, var/old_loc, var/new_loc) - moved_event.raise_event(src, old_loc, new_loc) + GLOB.moved_event.raise_event(src, old_loc, new_loc) /atom/movable/proc/move_to_destination(var/atom/movable/am, var/old_loc, var/new_loc) var/turf/T = get_turf(new_loc) @@ -10,9 +10,9 @@ set_dir(new_dir) /proc/register_all_movement(var/event_source, var/listener) - moved_event.register(event_source, listener, /atom/movable/proc/recursive_move) + GLOB.moved_event.register(event_source, listener, /atom/movable/proc/recursive_move) GLOB.dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set) /proc/unregister_all_movement(var/event_source, var/listener) - moved_event.unregister(event_source, listener, /atom/movable/proc/recursive_move) + GLOB.moved_event.unregister(event_source, listener, /atom/movable/proc/recursive_move) GLOB.dir_set_event.unregister(event_source, listener, /atom/proc/recursive_dir_set) diff --git a/code/datums/observation/logged_in.dm b/code/datums/observation/logged_in.dm index 311ff8acb6..c59e146a48 100644 --- a/code/datums/observation/logged_in.dm +++ b/code/datums/observation/logged_in.dm @@ -6,7 +6,7 @@ // Arguments that the called proc should expect: // /mob/joiner: The mob that has logged in -var/decl/observ/logged_in/logged_in_event = new() +GLOBAL_DATUM_INIT(logged_in_event, /decl/observ/logged_in, new) /decl/observ/logged_in name = "Logged In" @@ -18,4 +18,4 @@ var/decl/observ/logged_in/logged_in_event = new() /mob/Login() ..() - logged_in_event.raise_event(src) + GLOB.logged_in_event.raise_event(src) diff --git a/code/datums/observation/moved.dm b/code/datums/observation/moved.dm index 86a6b793ac..311f9673f6 100644 --- a/code/datums/observation/moved.dm +++ b/code/datums/observation/moved.dm @@ -8,7 +8,8 @@ // /atom/old_loc: The loc before the move. // /atom/new_loc: The loc after the move. -var/decl/observ/moved/moved_event = new() + +GLOBAL_DATUM_INIT(moved_event, /decl/observ/moved, new) /decl/observ/moved name = "Moved" @@ -27,26 +28,26 @@ var/decl/observ/moved/moved_event = new() /atom/Entered(var/atom/movable/am, var/atom/old_loc) . = ..() - moved_event.raise_event(am, old_loc, am.loc) + GLOB.moved_event.raise_event(am, old_loc, am.loc) /atom/movable/Entered(var/atom/movable/am, atom/old_loc) . = ..() - if(moved_event.has_listeners(am)) - moved_event.register(src, am, /atom/movable/proc/recursive_move) + if(GLOB.moved_event.has_listeners(am)) + GLOB.moved_event.register(src, am, /atom/movable/proc/recursive_move) /atom/movable/Exited(var/atom/movable/am, atom/old_loc) . = ..() - moved_event.unregister(src, am, /atom/movable/proc/recursive_move) + GLOB.moved_event.unregister(src, am, /atom/movable/proc/recursive_move) // Entered() typically lifts the moved event, but in the case of null-space we'll have to handle it. /atom/movable/Move() var/old_loc = loc . = ..() if(. && !loc) - moved_event.raise_event(src, old_loc, null) + GLOB.moved_event.raise_event(src, old_loc, null) /atom/movable/forceMove(atom/destination) var/old_loc = loc . = ..() if(. && !loc) - moved_event.raise_event(src, old_loc, null) + GLOB.moved_event.raise_event(src, old_loc, null) diff --git a/code/datums/observation/unequipped.dm b/code/datums/observation/unequipped.dm index 3287c0a3b5..6ad8d8eca0 100644 --- a/code/datums/observation/unequipped.dm +++ b/code/datums/observation/unequipped.dm @@ -7,7 +7,7 @@ // /mob/equipped: The mob that unequipped/dropped the item. // /obj/item/item: The unequipped item. -var/decl/observ/mob_unequipped/mob_unequipped_event = new() +GLOBAL_DATUM_INIT(mob_unequipped_event, /decl/observ/mob_unequipped, new) /decl/observ/mob_unequipped name = "Mob Unequipped" @@ -22,7 +22,7 @@ var/decl/observ/mob_unequipped/mob_unequipped_event = new() // /obj/item/item: The unequipped item. // /mob/equipped: The mob that unequipped/dropped the item. -var/decl/observ/item_unequipped/item_unequipped_event = new() +GLOBAL_DATUM_INIT(item_unequipped_event, /decl/observ/item_unequipped, new) /decl/observ/item_unequipped name = "Item Unequipped" @@ -34,5 +34,5 @@ var/decl/observ/item_unequipped/item_unequipped_event = new() /obj/item/dropped(var/mob/user) ..() - mob_unequipped_event.raise_event(user, src) - item_unequipped_event.raise_event(src, user) + GLOB.mob_unequipped_event.raise_event(user, src) + GLOB.item_unequipped_event.raise_event(src, user) diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index 46f4a9a5b7..88510e0525 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -122,7 +122,7 @@ var/global/repository/radiation/radiation_repository = new() /turf/simulated/wall/calc_rad_resistance() radiation_repository.resistance_cache[src] = (length(contents) + 1) - cached_rad_resistance = (density ? material.weight : 0) + cached_rad_resistance = (density ? material.weight + material.radiation_resistance : 0) /obj var/rad_resistance = 0 // Allow overriding rad resistance diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 67292de654..1c1eb7f2bb 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -176,4 +176,25 @@ cost = 30 containertype = /obj/structure/closet/crate/secure/science containername = "Jumper kit crate" - access = access_robotics \ No newline at end of file + access = access_robotics + +/datum/supply_pack/robotics/bike + name = "Spacebike Crate" + contains = list() + cost = 350 + containertype = /obj/structure/largecrate/vehicle/bike + containername = "Spacebike Crate" + +/datum/supply_pack/robotics/quadbike + name = "ATV Crate" + contains = list() + cost = 300 + containertype = /obj/structure/largecrate/vehicle/quadbike + containername = "ATV Crate" + +/datum/supply_pack/robotics/quadtrailer + name = "ATV Trailer Crate" + contains = list() + cost = 250 + containertype = /obj/structure/largecrate/vehicle/quadtrailer + containername = "ATV Trailer Crate" diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index 0a40cae6a3..8397dc8c87 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -124,14 +124,14 @@ /datum/supply_pack/supply/cargotrain name = "Cargo Train Tug" - contains = list(/obj/vehicle/train/cargo/engine) + contains = list(/obj/vehicle/train/engine) cost = 35 containertype = /obj/structure/largecrate containername = "Cargo Train Tug Crate" /datum/supply_pack/supply/cargotrailer name = "Cargo Train Trolley" - contains = list(/obj/vehicle/train/cargo/trolley) + contains = list(/obj/vehicle/train/trolley) cost = 15 containertype = /obj/structure/largecrate containername = "Cargo Train Trolley Crate" \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 5311d642a2..7f7bbaa3b3 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -16,8 +16,10 @@ var/mob/pulledby = null var/item_state = null // Used to specify the item state for the on-mob overlays. var/icon_scale = 1 // Used to scale icons up or down in update_transform(). + var/icon_rotation = 0 // Used to rotate icons in update_transform() var/old_x = 0 var/old_y = 0 + var/does_spin = TRUE // Does the atom spin when thrown (of course it does :P) /atom/movable/Destroy() . = ..() @@ -125,17 +127,23 @@ src.throw_impact(A,speed) /atom/movable/proc/throw_at(atom/target, range, speed, thrower) - if(!target || !src) return 0 + if(!target || !src) + return 0 + if(target.z != src.z) + return 0 //use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target - src.throwing = 1 src.thrower = thrower src.throw_source = get_turf(src) //store the origin turf - + src.pixel_z = 0 if(usr) if(HULK in usr.mutations) src.throwing = 2 // really strong throw! + var/dist_travelled = 0 + var/dist_since_sleep = 0 + var/area/a = get_area(src.loc) + var/dist_x = abs(target.x - src.x) var/dist_y = abs(target.y - src.y) @@ -150,77 +158,57 @@ dy = NORTH else dy = SOUTH - var/dist_travelled = 0 - var/dist_since_sleep = 0 - var/area/a = get_area(src.loc) + + var/error + var/major_dir + var/major_dist + var/minor_dir + var/minor_dist if(dist_x > dist_y) - var/error = dist_x/2 - dist_y - - - - while(src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) - // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up - if(error < 0) - var/atom/step = get_step(src, dy) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check(speed) - error += dist_x - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - else - var/atom/step = get_step(src, dx) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check(speed) - error -= dist_y - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - a = get_area(src.loc) + error = dist_x/2 - dist_y + major_dir = dx + major_dist = dist_x + minor_dir = dy + minor_dist = dist_y else - var/error = dist_y/2 - dist_x - while(src && target &&((((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) - // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up - if(error < 0) - var/atom/step = get_step(src, dx) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check(speed) - error += dist_y - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) - else - var/atom/step = get_step(src, dy) - if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge - break - src.Move(step) - hit_check(speed) - error -= dist_x - dist_travelled++ - dist_since_sleep++ - if(dist_since_sleep >= speed) - dist_since_sleep = 0 - sleep(1) + error = dist_y/2 - dist_x + major_dir = dy + major_dist = dist_y + minor_dir = dx + minor_dist = dist_x - a = get_area(src.loc) + while(src && target && src.throwing && istype(src.loc, /turf) \ + && ((abs(target.x - src.x)+abs(target.y - src.y) > 0 && dist_travelled < range) \ + || (a && a.has_gravity == 0) \ + || istype(src.loc, /turf/space))) + // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up + var/atom/step + if(error >= 0) + step = get_step(src, major_dir) + error -= minor_dist + else + step = get_step(src, minor_dir) + error += major_dist + if(!step) // going off the edge of the map makes get_step return null, don't let things go off the edge + break + src.Move(step) + hit_check(speed) + dist_travelled++ + dist_since_sleep++ + if(dist_since_sleep >= speed) + dist_since_sleep = 0 + sleep(1) + a = get_area(src.loc) + // and yet it moves + if(src.does_spin) + src.SpinAnimation(speed = 4, loops = 1) //done throwing, either because it hit something or it finished moving if(isobj(src)) src.throw_impact(get_turf(src),speed) src.throwing = 0 src.thrower = null src.throw_source = null + fall() //Overlays @@ -290,9 +278,14 @@ /atom/movable/proc/update_transform() var/matrix/M = matrix() M.Scale(icon_scale) + M.Turn(icon_rotation) src.transform = M // Use this to set the object's scale. /atom/movable/proc/adjust_scale(new_scale) icon_scale = new_scale update_transform() + +/atom/movable/proc/adjust_rotation(new_rotation) + icon_rotation = new_rotation + update_transform() \ No newline at end of file diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index 63b85c4773..af3a21a053 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -22,7 +22,7 @@ icon_screen = "supply" light_color = "#b88b2e" req_access = list(access_cargo) - circuit = /obj/item/weapon/circuitboard/supplycomp + circuit = /obj/item/weapon/circuitboard/supplycomp/control authorization = SUP_SEND_SHUTTLE | SUP_ACCEPT_ORDERS /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) @@ -43,8 +43,6 @@ return 1 - - /obj/machinery/computer/supplycomp/ui_interact(mob/user, ui_key = "supply_records", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null) var/data[0] var/shuttle_status[0] // Supply shuttle status @@ -166,7 +164,7 @@ data["supply_packs"] = pack_list data["orders"] = orders data["receipts"] = receipts - data["contraband"] = can_order_contraband + data["contraband"] = can_order_contraband || (authorization & SUP_CONTRABAND) // update the ui if it exists, returns null if no ui is passed/found ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -182,8 +180,6 @@ ui.set_auto_update(20) // Longer term to reduce the rate of data collection and processing - - /obj/machinery/computer/supplycomp/Topic(href, href_list) if(!supply_controller) world.log << "## ERROR: The supply_controller datum is missing." @@ -398,7 +394,6 @@ if("send_to_station") shuttle.launch(src) to_chat(usr, "The supply shuttle has been called and will arrive in approximately [round(supply_controller.movetime/600,1)] minutes.") - post_signal("supply") if("cancel_shuttle") shuttle.cancel_launch(src) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 64987c863c..6993d988dd 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -205,7 +205,7 @@ var/mob/M = grab.affecting qdel(grab) put_mob(M) - + return /obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(var/mob/target, var/mob/user) //Allows borgs to put people into cryo without external assistance diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a56ce2a880..55bcedfaca 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -205,80 +205,83 @@ /obj/machinery/door/attackby(obj/item/I as obj, mob/user as mob) src.add_fingerprint(user) - if(istype(I, /obj/item/stack/material) && I.get_material_name() == src.get_material_name()) - if(stat & BROKEN) - user << "It looks like \the [src] is pretty busted. It's going to need more than just patching up now." - return - if(health >= maxhealth) - user << "Nothing to fix!" - return - if(!density) - user << "\The [src] must be closed before you can repair it." - return + if(istype(I)) + if(istype(I, /obj/item/stack/material) && I.get_material_name() == src.get_material_name()) + if(stat & BROKEN) + user << "It looks like \the [src] is pretty busted. It's going to need more than just patching up now." + return + if(health >= maxhealth) + user << "Nothing to fix!" + return + if(!density) + user << "\The [src] must be closed before you can repair it." + return - //figure out how much metal we need - var/amount_needed = (maxhealth - health) / DOOR_REPAIR_AMOUNT - amount_needed = (round(amount_needed) == amount_needed)? amount_needed : round(amount_needed) + 1 //Why does BYOND not have a ceiling proc? + //figure out how much metal we need + var/amount_needed = (maxhealth - health) / DOOR_REPAIR_AMOUNT + amount_needed = (round(amount_needed) == amount_needed)? amount_needed : round(amount_needed) + 1 //Why does BYOND not have a ceiling proc? - var/obj/item/stack/stack = I - var/transfer - if (repairing) - transfer = stack.transfer_to(repairing, amount_needed - repairing.amount) - if (!transfer) - user << "You must weld or remove \the [repairing] from \the [src] before you can add anything else." - else - repairing = stack.split(amount_needed) + var/obj/item/stack/stack = I + var/transfer if (repairing) - repairing.loc = src - transfer = repairing.amount + transfer = stack.transfer_to(repairing, amount_needed - repairing.amount) + if (!transfer) + user << "You must weld or remove \the [repairing] from \the [src] before you can add anything else." + else + repairing = stack.split(amount_needed) + if (repairing) + repairing.loc = src + transfer = repairing.amount - if (transfer) - user << "You fit [transfer] [stack.singular_name]\s to damaged and broken parts on \the [src]." + if (transfer) + user << "You fit [transfer] [stack.singular_name]\s to damaged and broken parts on \the [src]." - return - - if(repairing && istype(I, /obj/item/weapon/weldingtool)) - if(!density) - user << "\The [src] must be closed before you can repair it." return - var/obj/item/weapon/weldingtool/welder = I - if(welder.remove_fuel(0,user)) - user << "You start to fix dents and weld \the [repairing] into place." - playsound(src, welder.usesound, 50, 1) - if(do_after(user, (5 * repairing.amount) * welder.toolspeed) && welder && welder.isOn()) - user << "You finish repairing the damage to \the [src]." - health = between(health, health + repairing.amount*DOOR_REPAIR_AMOUNT, maxhealth) - update_icon() - qdel(repairing) - repairing = null + if(repairing && istype(I, /obj/item/weapon/weldingtool)) + if(!density) + user << "\The [src] must be closed before you can repair it." + return + + var/obj/item/weapon/weldingtool/welder = I + if(welder.remove_fuel(0,user)) + user << "You start to fix dents and weld \the [repairing] into place." + playsound(src, welder.usesound, 50, 1) + if(do_after(user, (5 * repairing.amount) * welder.toolspeed) && welder && welder.isOn()) + user << "You finish repairing the damage to \the [src]." + health = between(health, health + repairing.amount*DOOR_REPAIR_AMOUNT, maxhealth) + update_icon() + qdel(repairing) + repairing = null + return + + if(repairing && I.is_crowbar()) + user << "You remove \the [repairing]." + playsound(src, I.usesound, 100, 1) + repairing.loc = user.loc + repairing = null + return + + //psa to whoever coded this, there are plenty of objects that need to call attack() on doors without bludgeoning them. + if(src.density && istype(I, /obj/item/weapon) && user.a_intent == I_HURT && !istype(I, /obj/item/weapon/card)) + var/obj/item/weapon/W = I + user.setClickCooldown(user.get_attack_speed(W)) + if(W.damtype == BRUTE || W.damtype == BURN) + user.do_attack_animation(src) + if(W.force < min_force) + user.visible_message("\The [user] hits \the [src] with \the [W] with no visible effect.") + else + user.visible_message("\The [user] forcefully strikes \the [src] with \the [W]!") + playsound(src.loc, hitsound, 100, 1) + take_damage(W.force) + return + + if(src.operating > 0 || isrobot(user)) + return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. + + if(src.operating) return - if(repairing && I.is_crowbar()) - user << "You remove \the [repairing]." - playsound(src, I.usesound, 100, 1) - repairing.loc = user.loc - repairing = null - return - - //psa to whoever coded this, there are plenty of objects that need to call attack() on doors without bludgeoning them. - if(src.density && istype(I, /obj/item/weapon) && user.a_intent == I_HURT && !istype(I, /obj/item/weapon/card)) - var/obj/item/weapon/W = I - user.setClickCooldown(user.get_attack_speed(W)) - if(W.damtype == BRUTE || W.damtype == BURN) - user.do_attack_animation(src) - if(W.force < min_force) - user.visible_message("\The [user] hits \the [src] with \the [W] with no visible effect.") - else - user.visible_message("\The [user] forcefully strikes \the [src] with \the [W]!") - playsound(src.loc, hitsound, 100, 1) - take_damage(W.force) - return - - if(src.operating > 0 || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. - - if(src.operating) return - if(src.allowed(user) && operable()) if(src.density) open() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 5cb6b0ba06..41a30feaa5 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -643,6 +643,20 @@ departments = list("Mercenary", "Charring") can_repair = 1 +/obj/machinery/suit_cycler/exploration + name = "Explorer suit cycler" + model_text = "Exploration" + departments = list("Exploration","Old Exploration") + +/obj/machinery/suit_cycler/exploreration/initialize() + species -= SPECIES_TESHARI + return ..() + +/obj/machinery/suit_cycler/pilot + name = "Pilot suit cycler" + model_text = "Pilot" + departments = list("Pilot Blue","Pilot") + /obj/machinery/suit_cycler/attack_ai(mob/user as mob) return attack_hand(user) @@ -1106,6 +1120,51 @@ suit.icon_state = "rig-firebug" suit.item_state_slots[slot_r_hand_str] = "rig-firebug" suit.item_state_slots[slot_l_hand_str] = "rig-firebug" + if("Exploration") + if(helmet) + helmet.name = "exploration voidsuit helmet" + helmet.icon_state = "helm_explorer" + helmet.item_state = "helm_explorer" + if(suit) + suit.name = "exploration voidsuit" + suit.icon_state = "void_explorer" + suit.item_state = "void_explorer" + suit.item_state_slots[slot_r_hand_str] = "wiz_voidsuit" + suit.item_state_slots[slot_l_hand_str] = "wiz_voidsuit" + if("Old Exploration") + if(helmet) + helmet.name = "exploration voidsuit helmet" + helmet.icon_state = "helm_explorer2" + helmet.item_state = "helm_explorer2" + if(suit) + suit.name = "exploration voidsuit" + suit.icon_state = "void_explorer2" + suit.item_state = "void_explorer2" + suit.item_state_slots[slot_r_hand_str] = "wiz_voidsuit" + suit.item_state_slots[slot_l_hand_str] = "wiz_voidsuit" + if("Pilot") + if(helmet) + helmet.name = "pilot voidsuit helmet" + helmet.icon_state = "rig0_pilot" + helmet.item_state = "pilot_helm" + if(suit) + suit.name = "pilot voidsuit" + suit.icon_state = "rig-pilot" + suit.item_state = "rig-pilot" + suit.item_state_slots[slot_r_hand_str] = "sec_voidsuitTG" + suit.item_state_slots[slot_l_hand_str] = "sec_voidsuitTG" + if("Pilot Blue") + if(helmet) + helmet.name = "pilot voidsuit helmet" + helmet.icon_state = "rig0_pilot2" + helmet.item_state = "pilot_helm2" + if(suit) + suit.name = "pilot voidsuit" + suit.icon_state = "rig-pilot2" + suit.item_state = "rig-pilot2" + suit.item_state_slots[slot_r_hand_str] = "sec_voidsuitTG" + suit.item_state_slots[slot_l_hand_str] = "sec_voidsuitTG" + if(helmet) helmet.name = "refitted [helmet.name]" if(suit) suit.name = "refitted [suit.name]" diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 5dda5866d1..8eadacdc7e 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -1266,11 +1266,6 @@ to_chat(L, span("warning", "You have other entities attached to yourself. Remove them first.")) return - for(var/mob/living/simple_mob/slime/xenobio/M in range(1,usr)) - if(M.victim == usr) - usr << "You're too busy getting your life sucked out of you." - return - //search for a valid passenger compartment var/feedback = 0 //for nicer user feedback for(var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P in src) @@ -1392,4 +1387,4 @@ /obj/item/mecha_parts/mecha_equipment/tool/jetpack/do_after_cooldown() sleep(equip_cooldown) wait = 0 - return 1 \ No newline at end of file + return 1 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 5f2b7254e4..a53c471eb3 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -71,13 +71,7 @@ if(!istype(P)) return - // Certain statuses make it harder to aim, blindness especially. Same chances as melee, however guns accuracy uses multiples of 15. - if(user.eye_blind) - P.accuracy -= 75 - if(user.eye_blurry) - P.accuracy -= 30 - if(user.confused) - P.accuracy -= 45 + P.accuracy -= user.get_accuracy_penalty() // Some modifiers make it harder or easier to hit things. for(var/datum/modifier/M in user.modifiers) @@ -472,6 +466,7 @@ if(istype(G)) G.det_time = det_time G.activate(chassis.occupant) //Grenades actually look primed and dangerous, handle their own stuff. + AM.throw_at(target,missile_range, missile_speed, chassis) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang//Because I am a heartless bastard -Sieve name = "\improper SOP-6 grenade launcher" diff --git a/code/game/mecha/mech_sensor.dm b/code/game/mecha/mech_sensor.dm index 5173f182ce..eee1ecefdb 100644 --- a/code/game/mecha/mech_sensor.dm +++ b/code/game/mecha/mech_sensor.dm @@ -45,8 +45,8 @@ var/obj/mecha/R = O if(R && R.occupant) R.occupant << block_message - else if(istype(O, /obj/vehicle/train/cargo/engine)) - var/obj/vehicle/train/cargo/engine/E = O + else if(istype(O, /obj/vehicle/train/engine)) + var/obj/vehicle/train/engine/E = O if(E && E.load && E.is_train_head()) E.load << block_message diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 9f4f0fa118..7504b6e65f 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -94,3 +94,8 @@ icon_state = "snowwall" plane = MOB_PLANE layer = ABOVE_MOB_LAYER + +/obj/effect/overlay/holographic + mouse_opacity = FALSE + anchored = TRUE + plane = ABOVE_PLANE diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4a80379c16..6c4895e42b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -200,6 +200,9 @@ /obj/item/attack_hand(mob/living/user as mob) if (!user) return + if(anchored) + to_chat(user, span("notice", "\The [src] won't budge, you can't pick it up!")) + return if (hasorgans(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 9dfb2c3173..bf034508de 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -655,6 +655,7 @@ var/global/list/obj/item/device/pda/PDAs = list() ui = new(user, src, ui_key, "pda.tmpl", title, 520, 400, state = inventory_state) // add templates for screens in common with communicator. ui.add_template("atmosphericScan", "atmospheric_scan.tmpl") + ui.add_template("crewManifest", "crew_manifest.tmpl") // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window diff --git a/code/game/objects/items/devices/communicator/UI.dm b/code/game/objects/items/devices/communicator/UI.dm index 445b0b59c5..d414232a80 100644 --- a/code/game/objects/items/devices/communicator/UI.dm +++ b/code/game/objects/items/devices/communicator/UI.dm @@ -14,7 +14,6 @@ var/im_list_ui[0] //List of messages. var/weather[0] - var/injection = null var/modules_ui[0] //Home screen info. //First we add other 'local' communicators. @@ -82,12 +81,14 @@ ) weather[++weather.len] = W - injection = "
Test
" + // Update manifest + data_core.get_manifest_list() //Modules for homescreen. for(var/list/R in modules) modules_ui[++modules_ui.len] = R + data["user"] = "\ref[user]" // For receiving input() via topic, because input(usr,...) wasn't working on cartridges data["owner"] = owner ? owner : "Unset" data["occupation"] = occupation ? occupation : "Swipe ID to set." data["connectionStatus"] = get_connection_to_tcomms() @@ -111,16 +112,29 @@ data["weather"] = weather data["aircontents"] = src.analyze_air() data["flashlight"] = fon - data["injection"] = injection + data["manifest"] = PDA_Manifest + data["feeds"] = compile_news() + data["latest_news"] = get_recent_news() + if(cartridge) // If there's a cartridge, we need to grab the information from it + data["cart_devices"] = cartridge.get_device_status() + data["cart_templates"] = cartridge.ui_templates + for(var/list/L in cartridge.get_data()) + data[L["field"]] = L["value"] + // cartridge.get_data() returns a list of tuples: + // The field element is the tag used to access the information by the template + // The value element is the actual data, and can take any form necessary for the template // update the ui if it exists, returns null if no ui is passed/found ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700, state = key_state) + data["currentTab"] = 1 // Reset the current tab, because we're going to home page + ui = new(user, src, ui_key, "communicator_header.tmpl", "Communicator", 475, 700, state = key_state) // add templates for screens in common with communicator. ui.add_template("atmosphericScan", "atmospheric_scan.tmpl") + ui.add_template("crewManifest", "crew_manifest.tmpl") + ui.add_template("Body", "communicator.tmpl") // Main body // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window @@ -168,7 +182,7 @@ if(href_list["dial"]) if(!get_connection_to_tcomms()) - usr << "Error: Cannot connect to Exonet node." + to_chat(usr, "Error: Cannot connect to Exonet node.") return var/their_address = href_list["dial"] exonet.send_message(their_address, "voice") @@ -181,7 +195,7 @@ if(href_list["message"]) if(!get_connection_to_tcomms()) - usr << "Error: Cannot connect to Exonet node." + to_chat(usr, "Error: Cannot connect to Exonet node.") return var/their_address = href_list["message"] var/text = sanitizeSafe(input(usr,"Enter your message.","Text Message")) @@ -246,9 +260,21 @@ note = "" notehtml = note + if(href_list["switch_template"]) + var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(usr, src, "main") + if(ui) + ui.add_template("Body", href_list["switch_template"]) + if(href_list["Light"]) fon = !fon set_light(fon * flum) + if(href_list["toggle_device"]) + var/obj/O = cartridge.internal_devices[text2num(href_list["toggle_device"])] + cartridge.active_devices ^= list(O) // Exclusive or, will toggle its presence + + if(href_list["cartridge_topic"] && cartridge) // Has to have a cartridge to perform these functions + cartridge.Topic(href, href_list) + GLOB.nanomanager.update_uis(src) add_fingerprint(usr) diff --git a/code/game/objects/items/devices/communicator/cartridge.dm b/code/game/objects/items/devices/communicator/cartridge.dm index e69de29bb2..6b29f1121e 100644 --- a/code/game/objects/items/devices/communicator/cartridge.dm +++ b/code/game/objects/items/devices/communicator/cartridge.dm @@ -0,0 +1,952 @@ +// Communicator peripheral devices +// Internal devices that attack() can be relayed to +// Additional UI menus for added functionality +/obj/item/weapon/commcard + name = "generic commcard" + desc = "A peripheral plug-in for personal communicators." + icon = 'icons/obj/pda.dmi' + icon_state = "cart" + item_state = "electronic" + w_class = ITEMSIZE_TINY + + var/list/internal_devices = list() // Devices that can be toggled on to trigger on attack() + var/list/active_devices = list() // Devices that will be triggered on attack() + var/list/ui_templates = list() // List of ui templates the commcard can access + var/list/internal_data = list() // Data that shouldn't be updated every time nanoUI updates, or needs to persist between updates + + +/obj/item/weapon/commcard/proc/get_device_status() + var/list/L = list() + var/i = 1 + for(var/obj/I in internal_devices) + if(I in active_devices) + L[++L.len] = list("name" = "\proper[I.name]", "active" = 1, "index" = i++) + else + L[++L.len] = list("name" = I.name, "active" = 0, "index" = i++) + return L + + +// cartridge.get_data() returns a list of tuples: +// The field element is the tag used to access the information by the template +// The value element is the actual data, and can take any form necessary for the template +/obj/item/weapon/commcard/proc/get_data() + return list() + +// Handles cartridge-specific functions +// The helper.link() MUST HAVE 'cartridge_topic' passed into the href in order for cartridge functions to be processed. +// Doesn't matter what the value of it is for now, it's just a flag to say, "Hey, there's cartridge data to change!" +/obj/item/weapon/commcard/Topic(href, href_list) + + // Signalers + if(href_list["signaler_target"]) + + var/obj/item/device/assembly/signaler/S = locate(href_list["signaler_target"]) // Should locate the correct signaler + + if(!istype(S)) // Ref is no longer valid + return + + if(S.loc != src) // No longer within the cartridge + return + + switch(href_list["signaler_action"]) + if("Pulse") + S.activate() + + if("Edit") + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Ref no longer valid + return + + var/newVal = input(user, "Input a new [href_list["signaler_value"]].", href_list["signaler_value"], (href_list["signaler_value"] == "Code" ? S.code : S.frequency)) as num|null + if(newVal) + switch(href_list["signaler_value"]) + if("Code") + S.code = newVal + + if("Frequency") + S.frequency = newVal + + // Refresh list of powernet sensors + if(href_list["powernet_refresh"]) + internal_data["grid_sensors"] = find_powernet_sensors() + + // Load apc's on targeted powernet + if(href_list["powernet_target"]) + internal_data["powernet_target"] = href_list["powernet_target"] + + // GPS units + if(href_list["gps_target"]) + var/obj/item/device/gps/G = locate(href_list["gps_target"]) + + if(!istype(G)) // Ref is no longer valid + return + + if(G.loc != src) // No longer within the cartridge + return + + switch(href_list["gps_action"]) + if("Power") + G.tracking = text2num(href_list["value"]) + + if("Long_Range") + G.local_mode = text2num(href_list["value"]) + + if("Hide_Signal") + G.hide_signal = text2num(href_list["value"]) + + if("Tag") + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Ref no longer valid + return + + var/newTag = input(user, "Please enter desired tag.", G.tag) as text|null + + if(newTag) + G.tag = newTag + + if(href_list["active_category"]) + internal_data["supply_category"] = href_list["active_category"] + + // Supply topic + // Copied from /obj/machinery/computer/supplycomp/Topic() + // code\game\machinery\computer\supply.dm, line 188 + // Unfortunately, in order to support complete functionality, the whole thing is necessary + if(href_list["pack_ref"]) + var/datum/supply_pack/S = locate(href_list["pack_ref"]) + + // Invalid ref + if(!istype(S)) + return + + // Expand the supply pack's contents + if(href_list["expand"]) + internal_data["supply_pack_expanded"] ^= S + + // Make a request for the pack + if(href_list["request"]) + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Invalid ref + return + + if(world.time < internal_data["supply_reqtime"]) + visible_message("[src] flashes, \"[internal_data["supply_reqtime"] - world.time] seconds remaining until another requisition form may be printed.\"") + return + + var/timeout = world.time + 600 + var/reason = sanitize(input(user, "Reason:","Why do you require this item?","") as null|text) + if(world.time > timeout) + to_chat(user, "Error. Request timed out.") + return + if(!reason) + return + + supply_controller.create_order(S, user, reason) + internal_data["supply_reqtime"] = (world.time + 5) % 1e5 + + if(href_list["order_ref"]) + var/datum/supply_order/O = locate(href_list["order_ref"]) + + // Invalid ref + if(!istype(O)) + return + + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Invalid ref + return + + if(href_list["edit"]) + var/new_val = sanitize(input(user, href_list["edit"], "Enter the new value for this field:", href_list["default"]) as null|text) + if(!new_val) + return + + switch(href_list["edit"]) + if("Supply Pack") + O.name = new_val + + if("Cost") + var/num = text2num(new_val) + if(num) + O.cost = num + + if("Index") + var/num = text2num(new_val) + if(num) + O.index = num + + if("Reason") + O.comment = new_val + + if("Ordered by") + O.ordered_by = new_val + + if("Ordered at") + O.ordered_at = new_val + + if("Approved by") + O.approved_by = new_val + + if("Approved at") + O.approved_at = new_val + + if(href_list["approve"]) + supply_controller.approve_order(O, user) + + if(href_list["deny"]) + supply_controller.deny_order(O, user) + + if(href_list["delete"]) + supply_controller.delete_order(O, user) + + if(href_list["clear_all_requests"]) + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Invalid ref + return + + supply_controller.deny_all_pending(user) + + if(href_list["export_ref"]) + var/datum/exported_crate/E = locate(href_list["export_ref"]) + + // Invalid ref + if(!istype(E)) + return + + var/mob/user = locate(href_list["user"]) + if(!istype(user)) // Invalid ref + return + + if(href_list["index"]) + var/list/L = E.contents[href_list["index"]] + + if(href_list["edit"]) + var/field = alert(user, "Select which field to edit", , "Name", "Quantity", "Value") + + var/new_val = sanitize(input(user, href_list["edit"], "Enter the new value for this field:", href_list["default"]) as null|text) + if(!new_val) + return + + switch(field) + if("Name") + L["object"] = new_val + + if("Quantity") + var/num = text2num(new_val) + if(num) + L["quantity"] = num + + if("Value") + var/num = text2num(new_val) + if(num) + L["value"] = num + + if(href_list["delete"]) + E.contents.Cut(href_list["index"], href_list["index"] + 1) + + // Else clause means they're editing/deleting the whole export report, rather than a specific item in it + else if(href_list["edit"]) + var/new_val = sanitize(input(user, href_list["edit"], "Enter the new value for this field:", href_list["default"]) as null|text) + if(!new_val) + return + + switch(href_list["edit"]) + if("Name") + E.name = new_val + + if("Value") + var/num = text2num(new_val) + if(num) + E.value = num + + else if(href_list["delete"]) + supply_controller.delete_export(E, user) + + else if(href_list["add_item"]) + supply_controller.add_export_item(E, user) + + if(supply_controller && supply_controller.shuttle) + switch(href_list["send_shuttle"]) + if("send_away") + if(supply_controller.shuttle.forbidden_atoms_check()) + to_chat(usr, "For safety reasons the automated supply shuttle cannot transport live organisms, classified nuclear weaponry or homing beacons.") + else + supply_controller.shuttle.launch(src) + to_chat(usr, "Initiating launch sequence.") + + if("send_to_station") + supply_controller.shuttle.launch(src) + to_chat(usr, "The supply shuttle has been called and will arrive in approximately [round(supply_controller.movetime/600,1)] minutes.") + + if("cancel_shuttle") + supply_controller.shuttle.cancel_launch(src) + + if("force_shuttle") + supply_controller.shuttle.force_launch(src) + + // Status display + switch(href_list["stat_display"]) + if("message") + post_status("message", internal_data["stat_display_line1"], internal_data["stat_display_line2"]) + internal_data["stat_display_special"] = "message" + if("alert") + post_status("alert", href_list["alert"]) + internal_data["stat_display_special"] = href_list["alert"] + if("setmsg") + internal_data["stat_display_line[href_list["line"]]"] = reject_bad_text(sanitize(input("Line 1", "Enter Message Text", internal_data["stat_display_line[href_list["line"]]"]) as text|null, 40), 40) + else + post_status(href_list["stat_display"]) + internal_data["stat_display_special"] = href_list["stat_display"] + + // Merc shuttle blast door controls + switch(href_list["all_blast_doors"]) + if("open") + for(var/obj/machinery/door/blast/B in internal_data["shuttle_doors"]) + B.open() + if("close") + for(var/obj/machinery/door/blast/B in internal_data["shuttle_doors"]) + B.close() + + if(href_list["scan_blast_doors"]) + internal_data["shuttle_doors"] = find_blast_doors() + + if(href_list["toggle_blast_door"]) + var/obj/machinery/door/blast/B = locate(href_list["toggle_blast_door"]) + if(!B) + return + spawn(0) + if(B.density) + B.open() + else + B.close() + + +// Updates status displays with a new message +// Copied from /obj/item/weapon/cartridge/proc/post_status(), +// code/game/objects/items/devices/PDA/cart.dm, line 251 +/obj/item/weapon/commcard/proc/post_status(var/command, var/data1, var/data2) + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) + if(!frequency) + return + + var/datum/signal/status_signal = new + status_signal.source = src + status_signal.transmission_method = 1 + status_signal.data["command"] = command + + switch(command) + if("message") + status_signal.data["msg1"] = data1 + status_signal.data["msg2"] = data2 + internal_data["stat_display_active1"] = data1 // Update the internally stored message, we won't get receive_signal if we're the sender + internal_data["stat_display_active2"] = data2 + if(loc) + var/obj/item/PDA = loc + var/mob/user = PDA.fingerprintslast + log_admin("STATUS: [user] set status screen with [src]. Message: [data1] [data2]") + message_admins("STATUS: [user] set status screen with [src]. Message: [data1] [data2]") + + if("alert") + status_signal.data["picture_state"] = data1 + + frequency.post_signal(src, status_signal) + +// Receives updates by external devices to the status displays +/obj/item/weapon/commcard/receive_signal(var/datum/signal/signal, var/receive_method, var/receive_param) + internal_data["stat_display_special"] = signal.data["command"] + switch(signal.data["command"]) + if("message") + internal_data["stat_display_active1"] = signal.data["msg1"] + internal_data["stat_display_active2"] = signal.data["msg2"] + if("alert") + internal_data["stat_display_special"] = signal.data["picture_state"] + + +/////////////////////////// +// SUBTYPES +/////////////////////////// + + +// Engineering Cartridge: +// Devices +// *- Halogen Counter +// Templates +// *- Power Monitor +/obj/item/weapon/commcard/engineering + name = "\improper Power-ON cartridge" + icon_state = "cart-e" + ui_templates = list(list("name" = "Power Monitor", "template" = "comm_power_monitor.tmpl")) + +/obj/item/weapon/commcard/engineering/New() + ..() + internal_devices |= new /obj/item/device/halogen_counter(src) + +/obj/item/weapon/commcard/engineering/initialize() + internal_data["grid_sensors"] = find_powernet_sensors() + internal_data["powernet_target"] = "" + +/obj/item/weapon/commcard/engineering/get_data() + return list( + list("field" = "powernet_monitoring", "value" = get_powernet_monitoring_list()), + list("field" = "powernet_target", "value" = get_powernet_target(internal_data["powernet_target"])) + ) + +// Atmospherics Cartridge: +// Devices +// *- Gas scanner +/obj/item/weapon/commcard/atmos + name = "\improper BreatheDeep cartridge" + icon_state = "cart-a" + +/obj/item/weapon/commcard/atmos/New() + ..() + internal_devices |= new /obj/item/device/analyzer(src) + + +// Medical Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// Templates +// *- Medical Records +/obj/item/weapon/commcard/medical + name = "\improper Med-U cartridge" + icon_state = "cart-m" + ui_templates = list(list("name" = "Medical Records", "template" = "med_records.tmpl")) + +/obj/item/weapon/commcard/medical/New() + ..() + internal_devices |= new /obj/item/device/healthanalyzer(src) + internal_devices |= new /obj/item/device/halogen_counter(src) + +/obj/item/weapon/commcard/medical/get_data() + return list(list("field" = "med_records", "value" = get_med_records())) + + +// Chemistry Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// *- Reagent Scanner +// Templates +// *- Medical Records +/obj/item/weapon/commcard/medical/chemistry + name = "\improper ChemWhiz cartridge" + icon_state = "cart-chem" + +/obj/item/weapon/commcard/medical/chemistry/New() + ..() + internal_devices |= new /obj/item/device/reagent_scanner(src) + + +// Detective Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// Templates +// *- Medical Records +// *- Security Records +/obj/item/weapon/commcard/medical/detective + name = "\improper D.E.T.E.C.T. cartridge" + icon_state = "cart-s" + ui_templates = list( + list("name" = "Medical Records", "template" = "med_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl") + ) + +/obj/item/weapon/commcard/medical/detective/get_data() + var/list/data = ..() + data[++data.len] = list("field" = "sec_records", "value" = get_sec_records()) + return data + + +// Internal Affairs Cartridge: +// Templates +// *- Security Records +// *- Employment Records +/obj/item/weapon/commcard/int_aff + name = "\improper P.R.O.V.E. cartridge" + icon_state = "cart-s" + ui_templates = list( + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl") + ) + +/obj/item/weapon/commcard/int_aff/get_data() + return list( + list("field" = "emp_records", "value" = get_emp_records()), + list("field" = "sec_records", "value" = get_sec_records()) + ) + + +// Security Cartridge: +// Templates +// *- Security Records +// *- Security Bot Access +/obj/item/weapon/commcard/security + name = "\improper R.O.B.U.S.T. cartridge" + icon_state = "cart-s" + ui_templates = list( + list("name" = "Security Records", "template" = "sec_records.tmpl"), + list("name" = "Security Bot Control", "template" = "sec_bot_access.tmpl") + ) + +/obj/item/weapon/commcard/security/get_data() + return list( + list("field" = "sec_records", "value" = get_sec_records()), + list("field" = "sec_bot_access", "value" = get_sec_bot_access()) + ) + + +// Janitor Cartridge: +// Templates +// *- Janitorial Locator Magicbox +/obj/item/weapon/commcard/janitor + name = "\improper CustodiPRO cartridge" + desc = "The ultimate in clean-room design." + ui_templates = list( + list("name" = "Janitorial Supply Locator", "template" = "janitorialLocator.tmpl") + ) + +/obj/item/weapon/commcard/janitor/get_data() + return list( + list("field" = "janidata", "value" = get_janitorial_locations()) + ) + + +// Signal Cartridge: +// Devices +// *- Signaler +// Templates +// *- Signaler Access +/obj/item/weapon/commcard/signal + name = "generic signaler cartridge" + desc = "A data cartridge with an integrated radio signaler module." + ui_templates = list( + list("name" = "Integrated Signaler Control", "template" = "signaler_access.tmpl") + ) + +/obj/item/weapon/commcard/signal/New() + ..() + internal_devices |= new /obj/item/device/assembly/signaler(src) + +/obj/item/weapon/commcard/signal/get_data() + return list( + list("field" = "signaler_access", "value" = get_int_signalers()) + ) + + +// Science Cartridge: +// Devices +// *- Signaler +// *- Reagent Scanner +// *- Gas Scanner +// Templates +// *- Signaler Access +/obj/item/weapon/commcard/signal/science + name = "\improper Signal Ace 2 cartridge" + desc = "Complete with integrated radio signaler!" + icon_state = "cart-tox" + // UI templates inherited + +/obj/item/weapon/commcard/signal/science/New() + ..() + internal_devices |= new /obj/item/device/reagent_scanner(src) + internal_devices |= new /obj/item/device/analyzer(src) + + +// Supply Cartridge: +// Templates +// *- Supply Records +/obj/item/weapon/commcard/supply + name = "\improper Space Parts & Space Vendors cartridge" + desc = "Perfect for the Quartermaster on the go!" + icon_state = "cart-q" + ui_templates = list( + list("name" = "Supply Records", "template" = "supply_records.tmpl") + ) + +/obj/item/weapon/commcard/supply/New() + ..() + internal_data["supply_category"] = null + internal_data["supply_controls"] = FALSE // Cannot control the supply shuttle, cannot accept orders + internal_data["supply_pack_expanded"] = list() + internal_data["supply_reqtime"] = -1 + +/obj/item/weapon/commcard/supply/get_data() + // Supply records data + var/list/shuttle_status = get_supply_shuttle_status() + var/list/orders = get_supply_orders() + var/list/receipts = get_supply_receipts() + var/list/misc_supply_data = get_misc_supply_data() // Packaging this stuff externally so it's less hardcoded into the specific cartridge + var/list/pack_list = list() // List of supply packs within the currently selected category + + if(internal_data["supply_category"]) + pack_list = get_supply_pack_list() + + return list( + list("field" = "shuttle_auth", "value" = misc_supply_data["shuttle_auth"]), + list("field" = "order_auth", "value" = misc_supply_data["order_auth"]), + list("field" = "supply_points", "value" = misc_supply_data["supply_points"]), + list("field" = "categories", "value" = misc_supply_data["supply_categories"]), + list("field" = "contraband", "value" = misc_supply_data["contraband"]), + list("field" = "active_category", "value" = internal_data["supply_category"]), + list("field" = "shuttle", "value" = shuttle_status), + list("field" = "orders", "value" = orders), + list("field" = "receipts", "value" = receipts), + list("field" = "supply_packs", "value" = pack_list) + ) + + +// Command Cartridge: +// Templates +// *- Status Display Access +// *- Employment Records +/obj/item/weapon/commcard/head + name = "\improper Easy-Record DELUXE" + icon_state = "cart-h" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl") + ) + +/obj/item/weapon/commcard/head/New() + ..() + internal_data["stat_display_line1"] = null + internal_data["stat_display_line2"] = null + internal_data["stat_display_active1"] = null + internal_data["stat_display_active2"] = null + internal_data["stat_display_special"] = null + +/obj/item/weapon/commcard/head/initialize() + // Have to register the commcard with the Radio controller to receive updates to the status displays + radio_controller.add_object(src, 1435) + ..() + +/obj/item/weapon/commcard/head/Destroy() + // Have to unregister the commcard for proper bookkeeping + radio_controller.remove_object(src, 1435) + ..() + +/obj/item/weapon/commcard/head/get_data() + return list( + list("field" = "emp_records", "value" = get_emp_records()), + list("field" = "stat_display", "value" = get_status_display()) + ) + +// Head of Personnel Cartridge: +// Templates +// *- Status Display Access +// *- Employment Records +// *- Security Records +// *- Supply Records +// ?- Supply Bot Access +// *- Janitorial Locator Magicbox +/obj/item/weapon/commcard/head/hop + name = "\improper HumanResources9001 cartridge" + icon_state = "cart-h" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl"), + list("name" = "Supply Records", "template" = "supply_records.tmpl"), + list("name" = "Janitorial Supply Locator", "template" = "janitorialLocator.tmpl") + ) + + +/obj/item/weapon/commcard/head/hop/get_data() + var/list/data = ..() + + // Sec records + data[++data.len] = list("field" = "sec_records", "value" = get_sec_records()) + + // Supply records data + var/list/shuttle_status = get_supply_shuttle_status() + var/list/orders = get_supply_orders() + var/list/receipts = get_supply_receipts() + var/list/misc_supply_data = get_misc_supply_data() // Packaging this stuff externally so it's less hardcoded into the specific cartridge + var/list/pack_list = list() // List of supply packs within the currently selected category + + if(internal_data["supply_category"]) + pack_list = get_supply_pack_list() + + data[++data.len] = list("field" = "shuttle_auth", "value" = misc_supply_data["shuttle_auth"]) + data[++data.len] = list("field" = "order_auth", "value" = misc_supply_data["order_auth"]) + data[++data.len] = list("field" = "supply_points", "value" = misc_supply_data["supply_points"]) + data[++data.len] = list("field" = "categories", "value" = misc_supply_data["supply_categories"]) + data[++data.len] = list("field" = "contraband", "value" = misc_supply_data["contraband"]) + data[++data.len] = list("field" = "active_category", "value" = internal_data["supply_category"]) + data[++data.len] = list("field" = "shuttle", "value" = shuttle_status) + data[++data.len] = list("field" = "orders", "value" = orders) + data[++data.len] = list("field" = "receipts", "value" = receipts) + data[++data.len] = list("field" = "supply_packs", "value" = pack_list) + + // Janitorial locator magicbox + data[++data.len] = list("field" = "janidata", "value" = get_janitorial_locations()) + + return data + + +// Head of Security Cartridge: +// Templates +// *- Status Display Access +// *- Employment Records +// *- Security Records +// *- Security Bot Access +/obj/item/weapon/commcard/head/hos + name = "\improper R.O.B.U.S.T. DELUXE" + icon_state = "cart-hos" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl"), + list("name" = "Security Bot Control", "template" = "sec_bot_access.tmpl") + ) + +/obj/item/weapon/commcard/head/hos/get_data() + var/list/data = ..() + // Sec records + data[++data.len] = list("field" = "sec_records", "value" = get_sec_records()) + // Sec bot access + data[++data.len] = list("field" = "sec_bot_access", "value" = get_sec_bot_access()) + return data + + +// Research Director Cartridge: +// Devices +// *- Signaler +// *- Gas Scanner +// *- Reagent Scanner +// Templates +// *- Status Display Access +// *- Employment Records +// *- Signaler Access +/obj/item/weapon/commcard/head/rd + name = "\improper Signal Ace DELUXE" + icon_state = "cart-rd" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Integrated Signaler Control", "template" = "signaler_access.tmpl") + ) + +/obj/item/weapon/commcard/head/rd/New() + ..() + internal_devices |= new /obj/item/device/analyzer(src) + internal_devices |= new /obj/item/device/reagent_scanner(src) + internal_devices |= new /obj/item/device/assembly/signaler(src) + +/obj/item/weapon/commcard/head/rd/get_data() + var/list/data = ..() + // Signaler access + data[++data.len] = list("field" = "signaler_access", "value" = get_int_signalers()) + return data + + +// Chief Medical Officer Cartridge: +// Devices +// *- Health Analyzer +// *- Reagent Scanner +// *- Halogen Counter +// Templates +// *- Status Display Access +// *- Employment Records +// *- Medical Records +/obj/item/weapon/commcard/head/cmo + name = "\improper Med-U DELUXE" + icon_state = "cart-cmo" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Medical Records", "template" = "med_records.tmpl") + ) + +/obj/item/weapon/commcard/head/cmo/New() + ..() + internal_devices |= new /obj/item/device/healthanalyzer(src) + internal_devices |= new /obj/item/device/reagent_scanner(src) + internal_devices |= new /obj/item/device/halogen_counter(src) + +/obj/item/weapon/commcard/head/cmo/get_data() + var/list/data = ..() + // Med records + data[++data.len] = list("field" = "med_records", "value" = get_med_records()) + return data + +// Chief Engineer Cartridge: +// Devices +// *- Gas Scanner +// *- Halogen Counter +// Templates +// *- Status Display Access +// *- Employment Records +// *- Power Monitoring +/obj/item/weapon/commcard/head/ce + name = "\improper Power-On DELUXE" + icon_state = "cart-ce" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Power Monitor", "template" = "comm_power_monitor.tmpl") + ) + +/obj/item/weapon/commcard/head/ce/New() + ..() + internal_devices |= new /obj.item/device/analyzer(src) + internal_devices |= new /obj/item/device/halogen_counter(src) + +/obj/item/weapon/commcard/head/ce/initialize() + internal_data["grid_sensors"] = find_powernet_sensors() + internal_data["powernet_target"] = "" + +/obj/item/weapon/commcard/head/ce/get_data() + var/list/data = ..() + // Add power monitoring data + data[++data.len] = list("field" = "powernet_monitoring", "value" = get_powernet_monitoring_list()) + data[++data.len] = list("field" = "powernet_target", "value" = get_powernet_target(internal_data["powernet_target"])) + return data + + +// Captain Cartridge: +// Devices +// *- Health analyzer +// *- Gas Scanner +// *- Reagent Scanner +// *- Halogen Counter +// X- GPS - Balance +// *- Signaler +// Templates +// *- Status Display Access +// *- Employment Records +// *- Medical Records +// *- Security Records +// *- Power Monitoring +// *- Supply Records +// X- Supply Bot Access - Mulebots usually break when used +// *- Security Bot Access +// *- Janitorial Locator Magicbox +// X- GPS Access - Balance +// *- Signaler Access +/obj/item/weapon/commcard/head/captain + name = "\improper Value-PAK cartridge" + desc = "Now with 200% more value!" + icon_state = "cart-c" + ui_templates = list( + list("name" = "Status Display Access", "template" = "stat_display_access.tmpl"), + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Medical Records", "template" = "med_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl"), + list("name" = "Security Bot Control", "template" = "sec_bot_access.tmpl"), + list("name" = "Power Monitor", "template" = "comm_power_monitor.tmpl"), + list("name" = "Supply Records", "template" = "supply_records.tmpl"), + list("name" = "Janitorial Supply Locator", "template" = "janitorialLocator.tmpl"), + list("name" = "Integrated Signaler Control", "template" = "signaler_access.tmpl") + ) + +/obj/item/weapon/commcard/head/captain/New() + ..() + internal_devices |= new /obj.item/device/analyzer(src) + internal_devices |= new /obj/item/device/healthanalyzer(src) + internal_devices |= new /obj/item/device/reagent_scanner(src) + internal_devices |= new /obj/item/device/halogen_counter(src) + internal_devices |= new /obj/item/device/assembly/signaler(src) + +/obj/item/weapon/commcard/head/captain/get_data() + var/list/data = ..() + //Med records + data[++data.len] = list("field" = "med_records", "value" = get_med_records()) + + // Sec records + data[++data.len] = list("field" = "sec_records", "value" = get_sec_records()) + + // Sec bot access + data[++data.len] = list("field" = "sec_bot_access", "value" = get_sec_bot_access()) + + // Power Monitoring + data[++data.len] = list("field" = "powernet_monitoring", "value" = get_powernet_monitoring_list()) + data[++data.len] = list("field" = "powernet_target", "value" = get_powernet_target(internal_data["powernet_target"])) + + // Supply records data + var/list/shuttle_status = get_supply_shuttle_status() + var/list/orders = get_supply_orders() + var/list/receipts = get_supply_receipts() + var/list/misc_supply_data = get_misc_supply_data() // Packaging this stuff externally so it's less hardcoded into the specific cartridge + var/list/pack_list = list() // List of supply packs within the currently selected category + + if(internal_data["supply_category"]) + pack_list = get_supply_pack_list() + + data[++data.len] = list("field" = "shuttle_auth", "value" = misc_supply_data["shuttle_auth"]) + data[++data.len] = list("field" = "order_auth", "value" = misc_supply_data["order_auth"]) + data[++data.len] = list("field" = "supply_points", "value" = misc_supply_data["supply_points"]) + data[++data.len] = list("field" = "categories", "value" = misc_supply_data["supply_categories"]) + data[++data.len] = list("field" = "contraband", "value" = misc_supply_data["contraband"]) + data[++data.len] = list("field" = "active_category", "value" = internal_data["supply_category"]) + data[++data.len] = list("field" = "shuttle", "value" = shuttle_status) + data[++data.len] = list("field" = "orders", "value" = orders) + data[++data.len] = list("field" = "receipts", "value" = receipts) + data[++data.len] = list("field" = "supply_packs", "value" = pack_list) + + // Janitorial locator magicbox + data[++data.len] = list("field" = "janidata", "value" = get_janitorial_locations()) + + // Signaler access + data[++data.len] = list("field" = "signaler_access", "value" = get_int_signalers()) + + return data + + +// Mercenary Cartridge +// Templates +// *- Merc Shuttle Door Controller +/obj/item/weapon/commcard/mercenary + name = "\improper Detomatix cartridge" + icon_state = "cart" + ui_templates = list( + list("name" = "Shuttle Blast Door Control", "template" = "merc_blast_door_control.tmpl") + ) + +/obj/item/weapon/commcard/mercenary/initialize() + internal_data["shuttle_door_code"] = "smindicate" // Copied from PDA code + internal_data["shuttle_doors"] = find_blast_doors() + +/obj/item/weapon/commcard/mercenary/get_data() + var/door_status[0] + for(var/obj/machinery/door/blast/B in internal_data["shuttle_doors"]) + door_status[++door_status.len] += list( + "open" = B.density, + "name" = B.name, + "ref" = "\ref[B]" + ) + + return list( + list("field" = "blast_door", "value" = door_status) + ) + + +// Explorer Cartridge +// Devices +// *- GPS +// Templates +// *- GPS Access + +// IMPORTANT: NOT MAPPED IN DUE TO BALANCE CONCERNS RE: FINDING THE VICTIMS OF ANTAGS. +// See suit sensors, specifically ease of turning them off, and variable level of settings which may or may not give location +// A GPS in your phone that is either broadcasting position or totally off, and can be hidden in pockets, coats, bags, boxes, etc, is much harder to disable +/obj/item/weapon/commcard/explorer + name = "\improper Explorator cartridge" + icon_state = "cart-tox" + ui_templates = list( + list("name" = "Integrated GPS", "template" = "gps_access.tmpl") + ) + +/obj/item/weapon/commcard/explorer/New() + ..() + internal_devices |= new /obj/item/device/gps/explorer(src) + +/obj/item/weapon/commcard/explorer/get_data() + var/list/GPS = get_GPS_lists() + + return list( + list("field" = "gps_access", "value" = GPS[1]), + list("field" = "gps_signal", "value" = GPS[2]), + list("field" = "gps_status", "value" = GPS[3]) + ) \ No newline at end of file diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index d7e62a53c7..ec9c09c161 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -4,6 +4,18 @@ var/global/list/obj/item/device/communicator/all_communicators = list() +// List of core tabs the communicator can switch to +#define HOMETAB 1 +#define PHONTAB 2 +#define CONTTAB 3 +#define MESSTAB 4 +#define NEWSTAB 5 +#define NOTETAB 6 +#define WTHRTAB 7 +#define MANITAB 8 +#define SETTTAB 9 +#define EXTRTAB 10 + /obj/item/device/communicator name = "communicator" desc = "A personal device used to enable long range dialog between two people, utilizing existing telecommunications infrastructure to allow \ @@ -31,20 +43,22 @@ var/global/list/obj/item/device/communicator/all_communicators = list() var/note = "Thank you for choosing the T-14.2 Communicator, this is your notepad!" //Current note in the notepad function var/notehtml = "" - var/obj/item/weapon/cartridge/cartridge = null //current cartridge + var/obj/item/weapon/commcard/cartridge = null //current cartridge var/fon = 0 // Internal light var/flum = 2 // Brightness var/list/modules = list( - list("module" = "Phone", "icon" = "phone64", "number" = 2), - list("module" = "Contacts", "icon" = "person64", "number" = 3), - list("module" = "Messaging", "icon" = "comment64", "number" = 4), - list("module" = "Note", "icon" = "note64", "number" = 5), - list("module" = "Weather", "icon" = "sun64", "number" = 6), - list("module" = "Settings", "icon" = "gear64", "number" = 7) + list("module" = "Phone", "icon" = "phone64", "number" = PHONTAB), + list("module" = "Contacts", "icon" = "person64", "number" = CONTTAB), + list("module" = "Messaging", "icon" = "comment64", "number" = MESSTAB), + list("module" = "News", "icon" = "note64", "number" = NEWSTAB), // Need a different icon, + list("module" = "Note", "icon" = "note64", "number" = NOTETAB), + list("module" = "Weather", "icon" = "sun64", "number" = WTHRTAB), + list("module" = "Crew Manifest", "icon" = "note64", "number" = MANITAB), // Need a different icon, + list("module" = "Settings", "icon" = "gear64", "number" = SETTTAB), ) //list("module" = "Name of Module", "icon" = "icon name64", "number" = "what tab is the module") - var/selected_tab = 1 + var/selected_tab = HOMETAB var/owner = "" var/occupation = "" var/alert_called = 0 @@ -89,7 +103,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /obj/item/device/communicator/examine(mob/user) . = ..(user, 1) if(. && video_source) - user << "It looks like it's on a video call: \[view\]" + to_chat(user, "It looks like it's on a video call: \[view\]") // Proc: initialize_exonet() // Parameters: 1 (user - the person the communicator belongs to) @@ -130,7 +144,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() else msg += "The device doesn't appear to be transmitting any data.\n" msg += "" - user << msg + to_chat(user, msg) return // Proc: emp_act() @@ -188,10 +202,22 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(!get_connection_to_tcomms()) close_connection(reason = "Connection timed out") +// Proc: attack() +// Parameters: 2 (M - what is being attacked. user - the mob that has the communicator) +// Description: When the communicator has an attached commcard with internal devices, relay the attack() through to those devices. +// Contents of the for loop are copied from gripper code, because that does approximately what we want to do. +/obj/item/device/communicator/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + if(cartridge && cartridge.active_devices) + for(var/obj/item/wrapped in cartridge.active_devices) + if(wrapped) //The force of the wrapped obj gets set to zero during the attack() and afterattack(). + wrapped.attack(M,user) + return 0 + // Proc: attackby() // Parameters: 2 (C - what is used on the communicator. user - the mob that has the communicator) // Description: When an ID is swiped on the communicator, the communicator reads the job and checks it against the Owner name, if success, the occupation is added. /obj/item/device/communicator/attackby(obj/item/C as obj, mob/user as mob) + ..() if(istype(C, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/idcard = C if(!idcard.registered_name || !idcard.assignment) @@ -201,12 +227,14 @@ var/global/list/obj/item/device/communicator/all_communicators = list() else if(owner == idcard.registered_name) occupation = idcard.assignment to_chat(user, "Occupation updated.") -// else if(istype(C, /obj/item/weapon/cartridge)) -// if(cartridge) -// to_chat(user, "\The [src] already has an external device attached!") -// else -// modules.Add(list("module" = "External Device", "icon = external64", "number" = 8)) -// cartridge = C + + if(istype(C, /obj/item/weapon/commcard) && !cartridge) + cartridge = C + user.drop_item() + cartridge.forceMove(src) + to_chat(usr, "You slot \the [cartridge] into \the [src].") + modules[++modules.len] = list("module" = "External Device", "icon" = "external64", "number" = EXTRTAB) + GLOB.nanomanager.update_uis(src) // update all UIs attached to src return // Proc: attack_self() @@ -330,6 +358,38 @@ var/global/list/obj/item/device/communicator/all_communicators = list() client_huds |= global_hud.whitense client_huds |= global_hud.darkMask +/obj/item/device/communicator/verb/verb_remove_cartridge() + set category = "Object" + set name = "Remove commcard" + set src in usr + + // Can't remove what isn't there + if(!cartridge) + to_chat(usr, "There isn't a commcard to remove!") + return + + // Can't remove if you're physically unable to + if(usr.stat || usr.restrained() || usr.paralysis || usr.stunned || usr.weakened) + to_chat(usr, "You cannot do this while restrained.") + return + + var/turf/T = get_turf(src) + cartridge.loc = T + // If it's in someone, put the cartridge in their hands + if (ismob(loc)) + var/mob/M = loc + M.put_in_hands(cartridge) + // Else just set it on the ground + else + cartridge.loc = get_turf(src) + cartridge = null + // We have to iterate through the modules to find EXTRTAB, because list procs don't play nice with a list of lists + for(var/i = 1, i <= modules.len, i++) + if(modules[i]["number"] == EXTRTAB) + modules.Cut(i, i+1) + break + to_chat(usr, "You remove \the [cartridge] from the [name].") + //It's the 26th century. We should have smart watches by now. /obj/item/device/communicator/watch name = "communicator watch" diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index 9c121112ac..b7a3b752d9 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -11,17 +11,532 @@ var/co2_level = environment.gas["carbon_dioxide"]/total_moles var/phoron_level = environment.gas["phoron"]/total_moles var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level) + + // Label is what the entry is describing + // Type identifies which unit or other special characters to use + // Val is the information reported + // Bad_high/_low are the values outside of which the entry reports as dangerous + // Poor_high/_low are the values outside of which the entry reports as unideal + // Values were extracted from the template itself results = list( - "pressure" = "[round(pressure,0.1)]", - "nitrogen" = "[round(n2_level*100,0.1)]", - "oxygen" = "[round(o2_level*100,0.1)]", - "carbon_dioxide" = "[round(co2_level*100,0.1)]", - "phoron" = "[round(phoron_level*100,0.01)]", - "other" = "[round(unknown_level, 0.01)]", - "temp" = "[round(environment.temperature-T0C,0.1)]", - "reading" = 1 + list("entry" = "Pressure", "type" = "pressure", "val" = "[round(pressure,0.1)]", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80), + list("entry" = "Temperature", "type" = "temp", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5), + list("entry" = "Oxygen", "type" = "pressure", "val" = "[round(o2_level*100,0.1)]", "bad_high" = 140, "poor_high" = 135, "poor_low" = 19, "bad_low" = 17), + list("entry" = "Nitrogen", "type" = "pressure", "val" = "[round(n2_level*100,0.1)]", "bad_high" = 105, "poor_high" = 85, "poor_low" = 50, "bad_low" = 40), + list("entry" = "Carbon Dioxide", "type" = "pressure", "val" = "[round(co2_level*100,0.1)]", "bad_high" = 10, "poor_high" = 5, "poor_low" = 0, "bad_low" = 0), + list("entry" = "Phoron", "type" = "pressure", "val" = "[round(phoron_level*100,0.01)]", "bad_high" = 0.5, "poor_high" = 0, "poor_low" = 0, "bad_low" = 0), + list("entry" = "Other", "type" = "pressure", "val" = "[round(unknown_level, 0.01)]", "bad_high" = 1, "poor_high" = 0.5, "poor_low" = 0, "bad_low" = 0) ) if(isnull(results)) - results = list("reading" = 0) - return results \ No newline at end of file + results = list(list("entry" = "pressure", "val" = "0")) + return results + + +// Proc - compile_news() +// Parameters - none +// Description - Returns the list of newsfeeds, compiled for template processing +/obj/item/device/communicator/proc/compile_news() + var/list/feeds = list() + for(var/datum/feed_channel/channel in news_network.network_channels) + var/list/messages = list() + if(!channel.censored) + var/index = 0 + for(var/datum/feed_message/FM in channel.messages) + index++ + if(FM.img) + usr << browse_rsc(FM.img, "pda_news_tmp_photo_[feeds["channel"]]_[index].png") + // News stories are HTML-stripped but require newline replacement to be properly displayed in NanoUI + var/body = replacetext(FM.body, "\n", "
") + messages[++messages.len] = list( + "author" = FM.author, + "body" = body, + "message_type" = FM.message_type, + "time_stamp" = FM.time_stamp, + "has_image" = (FM.img != null), + "caption" = FM.caption, + "index" = index + ) + + feeds[++feeds.len] = list( + "name" = channel.channel_name, + "censored" = channel.censored, + "author" = channel.author, + "messages" = messages + ) + return feeds + +// Proc - get_recent_news() +// Parameters - none +// Description - Returns the latest three newscasts, compiled for template processing +/obj/item/device/communicator/proc/get_recent_news() + var/list/news = list() + + // Compile all the newscasts + for(var/datum/feed_channel/channel in news_network.network_channels) + if(!channel.censored) + for(var/datum/feed_message/FM in channel.messages) + var/body = replacetext(FM.body, "\n", "
") + news[++news.len] = list( + "channel" = channel.channel_name, + "author" = FM.author, + "body" = body, + "message_type" = FM.message_type, + "time_stamp" = FM.time_stamp, + "has_image" = (FM.img != null), + "caption" = FM.caption, + ) + + // Cut out all but the youngest three + while(news.len > 3) + var/oldest = min(news[0]["time_stamp"], news[1]["time_stamp"], news[2]["time_stamp"], news[3]["time_stamp"]) + for(var/i = 0, i < 4, i++) + if(news[i]["time_stamp"] == oldest) + news.Remove(news[i]) + + return news + + + +// Putting the commcard data harvesting helpers here +// Not ideal to put all the procs on the base type +// but it may open options for adminbus, +// And it saves duplicated code + + +// Medical records +/obj/item/weapon/commcard/proc/get_med_records() + var/med_records[0] + for(var/datum/data/record/M in sortRecord(data_core.medical)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = M.fields["name"]) + record[++record.len] = list("tab" = "ID", "val" = M.fields["id"]) + record[++record.len] = list("tab" = "Blood Type", "val" = M.fields["b_type"]) + record[++record.len] = list("tab" = "DNA #", "val" = M.fields["b_dna"]) + record[++record.len] = list("tab" = "Gender", "val" = M.fields["id_gender"]) + record[++record.len] = list("tab" = "Entity Classification", "val" = M.fields["brain_type"]) + record[++record.len] = list("tab" = "Minor Disorders", "val" = M.fields["mi_dis"]) + record[++record.len] = list("tab" = "Major Disorders", "val" = M.fields["ma_dis"]) + record[++record.len] = list("tab" = "Allergies", "val" = M.fields["alg"]) + record[++record.len] = list("tab" = "Condition", "val" = M.fields["cdi"]) + record[++record.len] = list("tab" = "Notes", "val" = M.fields["notes"]) + + med_records[++med_records.len] = list("name" = M.fields["name"], "record" = record) + return med_records + + +// Employment records +/obj/item/weapon/commcard/proc/get_emp_records() + var/emp_records[0] + for(var/datum/data/record/G in sortRecord(data_core.general)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = G.fields["name"]) + record[++record.len] = list("tab" = "ID", "val" = G.fields["id"]) + record[++record.len] = list("tab" = "Rank", "val" = G.fields["rank"]) + record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields["fingerprint"]) + record[++record.len] = list("tab" = "Entity Classification", "val" = G.fields["brain_type"]) + record[++record.len] = list("tab" = "Sex", "val" = G.fields["sex"]) + record[++record.len] = list("tab" = "Species", "val" = G.fields["species"]) + record[++record.len] = list("tab" = "Age", "val" = G.fields["age"]) + record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) + + emp_records[++emp_records.len] = list("name" = G.fields["name"], "record" = record) + return emp_records + + +// Security records +/obj/item/weapon/commcard/proc/get_sec_records() + var/sec_records[0] + for(var/datum/data/record/G in sortRecord(data_core.general)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Sex", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Species", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Age", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Rank", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Physical Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Mental Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Criminal Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Major Crimes", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Minor Crimes", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) + + sec_records[++sec_records.len] = list("name" = G.fields["name"], "record" = record) + return sec_records + + +// Status of all secbots +// Weaker than what PDAs appear to do, but as of 7/1/2018 PDA secbot access is nonfunctional +/obj/item/weapon/commcard/proc/get_sec_bot_access() + var/sec_bots[0] + for(var/mob/living/bot/secbot/S in mob_list) + // Get new bot + var/status[0] + status[++status.len] = list("tab" = "Name", "val" = sanitize(S.name)) + + // If it's turned off, then it shouldn't be broadcasting any further info + if(!S.on) + status[++status.len] = list("tab" = "Power", "val" = "Off") // Encoding the span classes here so I don't have to do complicated switches in the ui template + continue + status[++status.len] = list("tab" = "Power", "val" = "On") + + // -- What it's doing + // If it's engaged, then say who it thinks it's engaging + if(S.target) + status[++status.len] = list("tab" = "Status", "val" = "Apprehending Target") + status[++status.len] = list("tab" = "Target", "val" = S.target_name(S.target)) + // Else if it's patrolling + else if(S.will_patrol) + status[++status.len] = list("tab" = "Status", "val" = "Patrolling") + // Otherwise we don't know what it's doing + else + status[++status.len] = list("tab" = "Status", "val" = "Idle") + + // Where it is + status[++status.len] = list("tab" = "Location", "val" = sanitize("[get_area(S.loc)]")) + + // Append bot to the list + sec_bots[++sec_bots.len] = list("bot" = S.name, "status" = status) + return sec_bots + + +// Code and frequency of stored signalers +// Supports multiple signalers within the device +/obj/item/weapon/commcard/proc/get_int_signalers() + var/signalers[0] + for(var/obj/item/device/assembly/signaler/S in internal_devices) + var/unit[0] + unit[++unit.len] = list("tab" = "Code", "val" = S.code) + unit[++unit.len] = list("tab" = "Frequency", "val" = S.frequency) + + signalers[++signalers.len] = list("ref" = "\ref[S]", "status" = unit) + + return signalers + +// Returns list of all powernet sensors currently visible to the commcard +/obj/item/weapon/commcard/proc/find_powernet_sensors() + var/grid_sensors[0] + + // Find all the powernet sensors we need to pull data from + // Copied from /datum/nano_module/power_monitor/proc/refresh_sensors(), + // located in '/code/modules/nano/modules/power_monitor.dm' + // Minor tweaks for efficiency and cleanliness + var/turf/T = get_turf(src) + if(T) + var/list/levels = using_map.get_map_levels(T.z, FALSE) + for(var/obj/machinery/power/sensor/S in machines) + if((S.long_range) || (S.loc.z in levels) || (S.loc.z == T.z)) // Consoles have range on their Z-Level. Sensors with long_range var will work between Z levels. + if(S.name_tag == "#UNKN#") // Default name. Shouldn't happen! + warning("Powernet sensor with unset ID Tag! [S.x]X [S.y]Y [S.z]Z") + else + grid_sensors += S + return grid_sensors + +// List of powernets +/obj/item/weapon/commcard/proc/get_powernet_monitoring_list() + // Fetch power monitor data + var/sensors[0] + + for(var/obj/machinery/power/sensor/S in internal_data["grid_sensors"]) + var/list/focus = S.return_reading_data() + + sensors[++sensors.len] = list( + "name" = S.name_tag, + "alarm" = focus["alarm"] + ) + + return sensors + +// Information about the targeted powernet +/obj/item/weapon/commcard/proc/get_powernet_target(var/target_sensor) + if(!target_sensor) + return + + var/powernet_target[0] + + for(var/obj/machinery/power/sensor/S in internal_data["grid_sensors"]) + var/list/focus = S.return_reading_data() + + // Packages the span class here so it doesn't need to be interpreted w/in the for loop in the ui template + var/load_stat = "Optimal" + if(focus["load_percentage"] >= 95) + load_stat = "DANGER: Overload" + else if(focus["load_percentage"] >= 85) + load_stat = "WARNING: High Load" + + var/alarm_stat = focus["alarm"] ? "WARNING: Abnormal activity detected!" : "Secure" + + if(target_sensor == S.name_tag) + powernet_target = list( + "name" = S.name_tag, + "alarm" = focus["alarm"], + "error" = focus["error"], + "apc_data" = focus["apc_data"], + "status" = list( + list("field" = "Network Load Status", "statval" = load_stat), + list("field" = "Network Security Status", "statval" = alarm_stat), + list("field" = "Load Percentage", "statval" = focus["load_percentage"]), + list("field" = "Available Power", "statval" = focus["total_avail"]), + list("field" = "APC Power Usage", "statval" = focus["total_used_apc"]), + list("field" = "Other Power Usage", "statval" = focus["total_used_other"]), + list("field" = "Total Usage", "statval" = focus["total_used_all"]) + ) + ) + + return powernet_target + +// Compiles the locations of all janitorial paraphernalia, as used by janitorialLocator.tmpl +/obj/item/weapon/commcard/proc/get_janitorial_locations() + // Fetch janitorial locator + var/janidata[0] + var/list/cleaningList = list() + cleaningList += all_mops + all_mopbuckets + all_janitorial_carts + + // User's location + var/turf/userloc = get_turf(src) + if(isturf(userloc)) + janidata[++janidata.len] = list("field" = "Current Location", "val" = "[userloc.x], [userloc.y], [using_map.get_zlevel_name(userloc.z)]") + else + janidata[++janidata.len] = list("field" = "Current Location", "val" = "Unknown") + return janidata // If the user isn't on a valid turf, then it shouldn't be able to find anything anyways + + // Mops, mop buckets, janitorial carts. + for(var/obj/C in cleaningList) + var/turf/T = get_turf(C) + if(isturf(T) )//&& T.z in using_map.get_map_levels(userloc, FALSE)) + if(T.z == userloc.z) + janidata[++janidata.len] = list("field" = apply_text_macros("\proper [C.name]"), "val" = "[T.x], [T.y], [using_map.get_zlevel_name(T.z)]") + else + janidata[++janidata.len] = list("field" = apply_text_macros("\proper [C.name]"), "val" = "[T.x], [T.y], [using_map.get_zlevel_name(T.z)]") + + // Cleanbots + for(var/mob/living/bot/cleanbot/B in living_mob_list) + var/turf/T = get_turf(B) + if(isturf(T) )//&& T.z in using_map.get_map_levels(userloc, FALSE)) + var/textout = "" + if(B.on) + textout += "Status: Online
" + if(T.z == userloc.z) + textout += "[T.x], [T.y], [using_map.get_zlevel_name(T.z)]" + else + textout += "[T.x], [T.y], [using_map.get_zlevel_name(T.z)]" + else + textout += "Status: Offline" + + janidata[++janidata.len] = list("field" = "[B.name]", "val" = textout) + + return janidata + +// Compiles the three lists used by GPS_access.tmpl +// The contents of the three lists are inherently related, so separating them into different procs would be largely redundant +/obj/item/weapon/commcard/proc/get_GPS_lists() + // GPS Access + var/intgps[0] // Gps devices within the commcard -- Allow tag edits, turning on/off, etc + var/extgps[0] // Gps devices not inside the commcard -- Print locations if a gps is on + var/stagps[0] // Gps net status, location, whether it's on, if it's got long range + var/obj/item/device/gps/cumulative = new(src) + cumulative.tracking = FALSE + cumulative.local_mode = TRUE // Won't detect long-range signals automatically + cumulative.long_range = FALSE + var/list/toggled_gps = list() // List of GPS units that are turned off before display_list() is called + + for(var/obj/item/device/gps/G in internal_devices) + var/gpsdata[0] + if(G.tracking && !G.emped) + cumulative.tracking = TRUE // Turn it on + if(G.long_range) + cumulative.long_range = TRUE // It can detect long-range + if(!G.local_mode) + cumulative.local_mode = FALSE // It is detecting long-range + + gpsdata["ref"] = "\ref[G]" + gpsdata["tag"] = G.gps_tag + gpsdata["power"] = G.tracking + gpsdata["local_mode"] = G.local_mode + gpsdata["long_range"] = G.long_range + gpsdata["hide_signal"] = G.hide_signal + gpsdata["can_hide"] = G.can_hide_signal + + intgps[++intgps.len] = gpsdata // Add it to the list + + if(G.tracking) + G.tracking = FALSE // Disable the internal gps units so they don't show up in the report + toggled_gps += G + + var/list/remote_gps = cumulative.display_list() // Fetch information for all units except the ones inside of this device + + for(var/obj/item/device/gps/G in toggled_gps) // Reenable any internal GPS units + G.tracking = TRUE + + stagps["enabled"] = cumulative.tracking + stagps["long_range_en"] = (cumulative.long_range && !cumulative.local_mode) + + stagps["my_area_name"] = remote_gps["my_area_name"] + stagps["curr_x"] = remote_gps["curr_x"] + stagps["curr_y"] = remote_gps["curr_y"] + stagps["curr_z"] = remote_gps["curr_z"] + stagps["curr_z_name"] = remote_gps["curr_z_name"] + + extgps = remote_gps["gps_list"] // Compiled by the GPS + + qdel(cumulative) // Don't want spare GPS units building up in the contents + + return list( + intgps, + extgps, + stagps + ) + +// Collects the current status of the supply shuttle +// Copied from /obj/machinery/computer/supplycomp/ui_interact(), +// code\game\machinery\computer\supply.dm, starting at line 55 +/obj/item/weapon/commcard/proc/get_supply_shuttle_status() + var/shuttle_status[0] + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle + if(shuttle) + if(shuttle.has_arrive_time()) + shuttle_status["location"] = "In transit" + shuttle_status["mode"] = SUP_SHUTTLE_TRANSIT + shuttle_status["time"] = shuttle.eta_minutes() + + else + shuttle_status["time"] = 0 + if(shuttle.at_station()) + if(shuttle.docking_controller) + switch(shuttle.docking_controller.get_docking_status()) + if("docked") + shuttle_status["location"] = "Docked" + shuttle_status["mode"] = SUP_SHUTTLE_DOCKED + if("undocked") + shuttle_status["location"] = "Undocked" + shuttle_status["mode"] = SUP_SHUTTLE_UNDOCKED + if("docking") + shuttle_status["location"] = "Docking" + shuttle_status["mode"] = SUP_SHUTTLE_DOCKING + shuttle_status["force"] = shuttle.can_force() + if("undocking") + shuttle_status["location"] = "Undocking" + shuttle_status["mode"] = SUP_SHUTTLE_UNDOCKING + shuttle_status["force"] = shuttle.can_force() + + else + shuttle_status["location"] = "Station" + shuttle_status["mode"] = SUP_SHUTTLE_DOCKED + + else + shuttle_status["location"] = "Away" + shuttle_status["mode"] = SUP_SHUTTLE_AWAY + + if(shuttle.can_launch()) + shuttle_status["launch"] = 1 + else if(shuttle.can_cancel()) + shuttle_status["launch"] = 2 + else + shuttle_status["launch"] = 0 + + switch(shuttle.moving_status) + if(SHUTTLE_IDLE) + shuttle_status["engine"] = "Idle" + if(SHUTTLE_WARMUP) + shuttle_status["engine"] = "Warming up" + if(SHUTTLE_INTRANSIT) + shuttle_status["engine"] = "Engaged" + + else + shuttle["mode"] = SUP_SHUTTLE_ERROR + + return shuttle_status + +// Compiles the list of supply orders +// Copied from /obj/machinery/computer/supplycomp/ui_interact(), +// code\game\machinery\computer\supply.dm, starting at line 130 +/obj/item/weapon/commcard/proc/get_supply_orders() + var/orders[0] + for(var/datum/supply_order/S in supply_controller.order_history) + orders[++orders.len] = list( + "ref" = "\ref[S]", + "status" = S.status, + "entries" = list( + list("field" = "Supply Pack", "entry" = S.name), + list("field" = "Cost", "entry" = S.cost), + list("field" = "Index", "entry" = S.index), + list("field" = "Reason", "entry" = S.comment), + list("field" = "Ordered by", "entry" = S.ordered_by), + list("field" = "Ordered at", "entry" = S.ordered_at), + list("field" = "Approved by", "entry" = S.approved_by), + list("field" = "Approved at", "entry" = S.approved_at) + ) + ) + + return orders + +// Compiles the list of supply export receipts +// Copied from /obj/machinery/computer/supplycomp/ui_interact(), +// code\game\machinery\computer\supply.dm, starting at line 147 +/obj/item/weapon/commcard/proc/get_supply_receipts() + var/receipts[0] + for(var/datum/exported_crate/E in supply_controller.exported_crates) + receipts[++receipts.len] = list( + "ref" = "\ref[E]", + "contents" = E.contents, + "error" = E.contents["error"], + "title" = list( + list("field" = "Name", "entry" = E.name), + list("field" = "Value", "entry" = E.value) + ) + ) + return receipts + + +// Compiles the list of supply packs for the category currently stored in internal_data["supply_category"] +// Copied from /obj/machinery/computer/supplycomp/ui_interact(), +// code\game\machinery\computer\supply.dm, starting at line 147 +/obj/item/weapon/commcard/proc/get_supply_pack_list() + var/supply_packs[0] + for(var/pack_name in supply_controller.supply_pack) + var/datum/supply_pack/P = supply_controller.supply_pack[pack_name] + if(P.group == internal_data["supply_category"]) + var/list/pack = list( + "name" = P.name, + "cost" = P.cost, + "contraband" = P.contraband, + "manifest" = uniquelist(P.manifest), + "random" = P.num_contained, + "expand" = 0, + "ref" = "\ref[P]" + ) + + if(P in internal_data["supply_pack_expanded"]) + pack["expand"] = 1 + + supply_packs[++supply_packs.len] = pack + + return supply_packs + + +// Compiles miscellaneous data and permissions used by the supply template +/obj/item/weapon/commcard/proc/get_misc_supply_data() + return list( + "shuttle_auth" = (internal_data["supply_controls"] & SUP_SEND_SHUTTLE), + "order_auth" = (internal_data["supply_controls"] & SUP_ACCEPT_ORDERS), + "supply_points" = supply_controller.points, + "supply_categories" = all_supply_groups + ) + +/obj/item/weapon/commcard/proc/get_status_display() + return list( + "line1" = internal_data["stat_display_line1"], + "line2" = internal_data["stat_display_line2"], + "active_line1" = internal_data["stat_display_active1"], + "active_line2" = internal_data["stat_display_active2"], + "active" = internal_data["stat_display_special"] + ) + +/obj/item/weapon/commcard/proc/find_blast_doors() + var/target_doors[0] + for(var/obj/machinery/door/blast/B in machines) + if(B.id == internal_data["shuttle_door_code"]) + target_doors += B + + return target_doors \ No newline at end of file diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 78f385a8aa..c62cb541ce 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -68,6 +68,55 @@ var/list/GPS_list = list() /obj/item/device/gps/attack_self(mob/user) display(user) + // Compiles all the data not available directly from the GPS + // Like the positions and directions to all other GPS units +/obj/item/device/gps/proc/display_list() + var/list/dat = list() + + var/turf/curr = get_turf(src) + var/area/my_area = get_area(src) + + dat["my_area_name"] = my_area.name + dat["curr_x"] = curr.x + dat["curr_y"] = curr.y + dat["curr_z"] = curr.z + dat["curr_z_name"] = using_map.get_zlevel_name(curr.z) + dat["gps_list"] = list() + dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range) + + for(var/obj/item/device/gps/G in GPS_list - src) + if(!G.tracking || G.emped || G.hide_signal) + continue + + var/turf/T = get_turf(G) + if(local_mode && curr.z != T.z) + continue + if(!(T.z in dat["z_level_detection"])) + continue + + var/gps_data[0] + gps_data["ref"] = G + gps_data["gps_tag"] = G.gps_tag + + var/area/A = get_area(G) + gps_data["area_name"] = A.name + if(istype(A, /area/submap)) + gps_data["area_name"] = "Unknown Area" // Avoid spoilers. + + gps_data["z_name"] = using_map.get_zlevel_name(T.z) + gps_data["direction"] = get_adir(curr, T) + gps_data["degrees"] = round(Get_Angle(curr,T)) + gps_data["distX"] = T.x - curr.x + gps_data["distY"] = T.y - curr.y + gps_data["distance"] = get_dist(curr, T) + gps_data["local"] = (curr.z == T.z) + gps_data["x"] = T.x + gps_data["y"] = T.y + + dat["gps_list"][++dat["gps_list"].len] = gps_data + + return dat + /obj/item/device/gps/proc/display(mob/user) if(!tracking) to_chat(user, "The device is off. Alt-click it to turn it on.") @@ -77,48 +126,20 @@ var/list/GPS_list = list() return var/list/dat = list() + var/list/gps_data = display_list() - var/turf/curr = get_turf(src) - var/area/my_area = get_area(src) - dat += "Current location: [my_area.name] ([curr.x], [curr.y], [using_map.get_zlevel_name(curr.z)])" + dat += "Current location: [gps_data["my_area_name"]] ([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])" dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. \[Change Tag\] \ \[Toggle Scan Range\] \ [can_hide_signal ? "\[Toggle Signal Visibility\]":""]" - var/list/signals = list() - - for(var/gps in GPS_list) - var/obj/item/device/gps/G = gps - if(G.emped || !G.tracking || G.hide_signal || G == src) // Their GPS isn't on or functional. - continue - var/turf/T = get_turf(G) - var/z_level_detection = using_map.get_map_levels(curr.z, long_range) - - if(local_mode && T.z != curr.z) // Only care about the current z-level. - continue - else if(!(T.z in z_level_detection)) // Too far away. - continue - - var/area/their_area = get_area(G) - var/area_name = their_area.name - if(istype(their_area, /area/submap)) - area_name = "Unknown Area" // Avoid spoilers. - var/Z_name = using_map.get_zlevel_name(T.z) - var/direction = get_adir(curr, T) - var/distX = T.x - curr.x - var/distY = T.y - curr.y - var/distance = get_dist(curr, T) - var/local = curr.z == T.z ? TRUE : FALSE - - if(istype(gps, /obj/item/device/gps/internal/poi)) - signals += " [G.gps_tag]: [area_name] - [local ? "[direction] Dist: [round(distance, 10)]m" : "in \the [Z_name]"]" - else - signals += " [G.gps_tag]: [area_name], ([T.x], [T.y]) - [local ? "[direction] Dist: [distX ? "[abs(round(distX, 1))]m [(distX > 0) ? "E" : "W"], " : ""][distY ? "[abs(round(distY, 1))]m [(distY > 0) ? "N" : "S"]" : ""]" : "in \the [Z_name]"]" - - if(signals.len) + if(gps_data["gps_list"].len) dat += "Detected signals;" - for(var/line in signals) - dat += line + for(var/gps in gps_data["gps_list"]) + if(istype(gps_data["ref"], /obj/item/device/gps/internal/poi)) + dat += " [gps["gps_tag"]]: [gps["area_name"]] - [gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "in \the [gps["z_name"]]"]" + else + dat += " [gps["gps_tag"]]: [gps["area_name"]], ([gps["x"]], [gps["y"]]) - [gps["local"] ? "[gps["direction"]] Dist: [gps["distX"] ? "[abs(round(gps["distX"], 1))]m [(gps["distX"] > 0) ? "E" : "W"], " : ""][gps["distY"] ? "[abs(round(gps["distY"], 1))]m [(gps["distY"] > 0) ? "N" : "S"]" : ""]" : "in \the [gps["z_name"]]"]" else dat += "No other signals detected." @@ -221,45 +242,17 @@ var/list/GPS_list = list() return var/list/dat = list() + var/list/gps_data = display_list() - var/turf/curr = get_turf(src) - var/area/my_area = get_area(src) - dat += "Current location: [my_area.name] ([curr.x], [curr.y], [using_map.get_zlevel_name(curr.z)])" + dat += "Current location: [gps_data["my_area_name"]] ([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])" dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. \[Change Tag\] \ \[Toggle Scan Range\] \ [can_hide_signal ? "\[Toggle Signal Visibility\]":""]" - var/list/signals = list() - - for(var/gps in GPS_list) - var/obj/item/device/gps/G = gps - if(G.emped || !G.tracking || G.hide_signal || G == src) // Their GPS isn't on or functional. - continue - var/turf/T = get_turf(G) - var/z_level_detection = using_map.get_map_levels(curr.z, long_range) - - if(local_mode && T.z != curr.z) // Only care about the current z-level. - continue - else if(!(T.z in z_level_detection)) // Too far away. - continue - - var/area/their_area = get_area(G) - var/area_name = their_area.name - if(istype(their_area, /area/submap)) - area_name = "Unknown Area" // Avoid spoilers. - var/Z_name = using_map.get_zlevel_name(T.z) - var/coord = "[T.x], [T.y], [Z_name]" - var/degrees = round(Get_Angle(curr, T)) - var/direction = get_adir(curr, T) - var/distance = get_dist(curr, T) - var/local = curr.z == T.z ? TRUE : FALSE - - signals += " [G.gps_tag]: [area_name] ([coord]) [local ? "Dist: [distance]m Dir: [degrees]° ([direction])":""]" - - if(signals.len) + if(gps_data["gps_list"].len) dat += "Detected signals;" - for(var/line in signals) - dat += line + for(var/gps in gps_data["gps_list"]) + dat += " [gps["gps_tag"]]: [gps["area_name"]] ([gps["x"]], [gps["y"]], [gps["z_name"]]) [gps["local"] ? "Dist: [gps["distance"]]m Dir: [gps["degrees"]]° ([gps["direction"]])" :""]" else dat += "No other signals detected." diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index b5d6439da3..fb3d8d9bcc 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -62,7 +62,7 @@ if(hack_result && in_hack_mode) user << "Your hacking attempt was succesful!" - user.playsound_local(get_turf(src), 'sound/piano/A#6.ogg', 50) + user.playsound_local(get_turf(src), 'sound/instruments/piano/An6.ogg', 50) else user << "Your hacking attempt failed!" return 0 diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm index bc0c9d5304..47dfc256fc 100644 --- a/code/game/objects/items/devices/text_to_speech.dm +++ b/code/game/objects/items/devices/text_to_speech.dm @@ -1,7 +1,7 @@ /obj/item/device/text_to_speech name = "TTS device" desc = "A device that speaks an inputted message. Given to crew which can not speak properly or at all." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_setups.dmi' icon_state = "setup_small" w_class = ITEMSIZE_SMALL var/named diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm index 683c74bd02..5dc215cf91 100644 --- a/code/game/objects/items/devices/violin.dm +++ b/code/game/objects/items/devices/violin.dm @@ -1,392 +1,41 @@ //copy pasta of the space piano, don't hurt me -Pete - -/obj/item/device/violin - name = "space violin" - desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" +/obj/item/device/instrument + name = "generic instrument" + var/datum/song/handheld/song + var/instrumentId = "generic" + var/instrumentExt = "mid" icon = 'icons/obj/musician.dmi' - icon_state = "violin" force = 10 - var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 -/obj/item/device/violin/proc/playnote(var/note as text) - //world << "Note: [note]" - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/violin/Cn1.mid' - if("C#1") soundfile = 'sound/violin/C#1.mid' - if("Db1") soundfile = 'sound/violin/Db1.mid' - if("Dn1") soundfile = 'sound/violin/Dn1.mid' - if("D#1") soundfile = 'sound/violin/D#1.mid' - if("Eb1") soundfile = 'sound/violin/Eb1.mid' - if("En1") soundfile = 'sound/violin/En1.mid' - if("E#1") soundfile = 'sound/violin/E#1.mid' - if("Fb1") soundfile = 'sound/violin/Fb1.mid' - if("Fn1") soundfile = 'sound/violin/Fn1.mid' - if("F#1") soundfile = 'sound/violin/F#1.mid' - if("Gb1") soundfile = 'sound/violin/Gb1.mid' - if("Gn1") soundfile = 'sound/violin/Gn1.mid' - if("G#1") soundfile = 'sound/violin/G#1.mid' - if("Ab1") soundfile = 'sound/violin/Ab1.mid' - if("An1") soundfile = 'sound/violin/An1.mid' - if("A#1") soundfile = 'sound/violin/A#1.mid' - if("Bb1") soundfile = 'sound/violin/Bb1.mid' - if("Bn1") soundfile = 'sound/violin/Bn1.mid' - if("B#1") soundfile = 'sound/violin/B#1.mid' - if("Cb2") soundfile = 'sound/violin/Cb2.mid' - if("Cn2") soundfile = 'sound/violin/Cn2.mid' - if("C#2") soundfile = 'sound/violin/C#2.mid' - if("Db2") soundfile = 'sound/violin/Db2.mid' - if("Dn2") soundfile = 'sound/violin/Dn2.mid' - if("D#2") soundfile = 'sound/violin/D#2.mid' - if("Eb2") soundfile = 'sound/violin/Eb2.mid' - if("En2") soundfile = 'sound/violin/En2.mid' - if("E#2") soundfile = 'sound/violin/E#2.mid' - if("Fb2") soundfile = 'sound/violin/Fb2.mid' - if("Fn2") soundfile = 'sound/violin/Fn2.mid' - if("F#2") soundfile = 'sound/violin/F#2.mid' - if("Gb2") soundfile = 'sound/violin/Gb2.mid' - if("Gn2") soundfile = 'sound/violin/Gn2.mid' - if("G#2") soundfile = 'sound/violin/G#2.mid' - if("Ab2") soundfile = 'sound/violin/Ab2.mid' - if("An2") soundfile = 'sound/violin/An2.mid' - if("A#2") soundfile = 'sound/violin/A#2.mid' - if("Bb2") soundfile = 'sound/violin/Bb2.mid' - if("Bn2") soundfile = 'sound/violin/Bn2.mid' - if("B#2") soundfile = 'sound/violin/B#2.mid' - if("Cb3") soundfile = 'sound/violin/Cb3.mid' - if("Cn3") soundfile = 'sound/violin/Cn3.mid' - if("C#3") soundfile = 'sound/violin/C#3.mid' - if("Db3") soundfile = 'sound/violin/Db3.mid' - if("Dn3") soundfile = 'sound/violin/Dn3.mid' - if("D#3") soundfile = 'sound/violin/D#3.mid' - if("Eb3") soundfile = 'sound/violin/Eb3.mid' - if("En3") soundfile = 'sound/violin/En3.mid' - if("E#3") soundfile = 'sound/violin/E#3.mid' - if("Fb3") soundfile = 'sound/violin/Fb3.mid' - if("Fn3") soundfile = 'sound/violin/Fn3.mid' - if("F#3") soundfile = 'sound/violin/F#3.mid' - if("Gb3") soundfile = 'sound/violin/Gb3.mid' - if("Gn3") soundfile = 'sound/violin/Gn3.mid' - if("G#3") soundfile = 'sound/violin/G#3.mid' - if("Ab3") soundfile = 'sound/violin/Ab3.mid' - if("An3") soundfile = 'sound/violin/An3.mid' - if("A#3") soundfile = 'sound/violin/A#3.mid' - if("Bb3") soundfile = 'sound/violin/Bb3.mid' - if("Bn3") soundfile = 'sound/violin/Bn3.mid' - if("B#3") soundfile = 'sound/violin/B#3.mid' - if("Cb4") soundfile = 'sound/violin/Cb4.mid' - if("Cn4") soundfile = 'sound/violin/Cn4.mid' - if("C#4") soundfile = 'sound/violin/C#4.mid' - if("Db4") soundfile = 'sound/violin/Db4.mid' - if("Dn4") soundfile = 'sound/violin/Dn4.mid' - if("D#4") soundfile = 'sound/violin/D#4.mid' - if("Eb4") soundfile = 'sound/violin/Eb4.mid' - if("En4") soundfile = 'sound/violin/En4.mid' - if("E#4") soundfile = 'sound/violin/E#4.mid' - if("Fb4") soundfile = 'sound/violin/Fb4.mid' - if("Fn4") soundfile = 'sound/violin/Fn4.mid' - if("F#4") soundfile = 'sound/violin/F#4.mid' - if("Gb4") soundfile = 'sound/violin/Gb4.mid' - if("Gn4") soundfile = 'sound/violin/Gn4.mid' - if("G#4") soundfile = 'sound/violin/G#4.mid' - if("Ab4") soundfile = 'sound/violin/Ab4.mid' - if("An4") soundfile = 'sound/violin/An4.mid' - if("A#4") soundfile = 'sound/violin/A#4.mid' - if("Bb4") soundfile = 'sound/violin/Bb4.mid' - if("Bn4") soundfile = 'sound/violin/Bn4.mid' - if("B#4") soundfile = 'sound/violin/B#4.mid' - if("Cb5") soundfile = 'sound/violin/Cb5.mid' - if("Cn5") soundfile = 'sound/violin/Cn5.mid' - if("C#5") soundfile = 'sound/violin/C#5.mid' - if("Db5") soundfile = 'sound/violin/Db5.mid' - if("Dn5") soundfile = 'sound/violin/Dn5.mid' - if("D#5") soundfile = 'sound/violin/D#5.mid' - if("Eb5") soundfile = 'sound/violin/Eb5.mid' - if("En5") soundfile = 'sound/violin/En5.mid' - if("E#5") soundfile = 'sound/violin/E#5.mid' - if("Fb5") soundfile = 'sound/violin/Fb5.mid' - if("Fn5") soundfile = 'sound/violin/Fn5.mid' - if("F#5") soundfile = 'sound/violin/F#5.mid' - if("Gb5") soundfile = 'sound/violin/Gb5.mid' - if("Gn5") soundfile = 'sound/violin/Gn5.mid' - if("G#5") soundfile = 'sound/violin/G#5.mid' - if("Ab5") soundfile = 'sound/violin/Ab5.mid' - if("An5") soundfile = 'sound/violin/An5.mid' - if("A#5") soundfile = 'sound/violin/A#5.mid' - if("Bb5") soundfile = 'sound/violin/Bb5.mid' - if("Bn5") soundfile = 'sound/violin/Bn5.mid' - if("B#5") soundfile = 'sound/violin/B#5.mid' - if("Cb6") soundfile = 'sound/violin/Cb6.mid' - if("Cn6") soundfile = 'sound/violin/Cn6.mid' - if("C#6") soundfile = 'sound/violin/C#6.mid' - if("Db6") soundfile = 'sound/violin/Db6.mid' - if("Dn6") soundfile = 'sound/violin/Dn6.mid' - if("D#6") soundfile = 'sound/violin/D#6.mid' - if("Eb6") soundfile = 'sound/violin/Eb6.mid' - if("En6") soundfile = 'sound/violin/En6.mid' - if("E#6") soundfile = 'sound/violin/E#6.mid' - if("Fb6") soundfile = 'sound/violin/Fb6.mid' - if("Fn6") soundfile = 'sound/violin/Fn6.mid' - if("F#6") soundfile = 'sound/violin/F#6.mid' - if("Gb6") soundfile = 'sound/violin/Gb6.mid' - if("Gn6") soundfile = 'sound/violin/Gn6.mid' - if("G#6") soundfile = 'sound/violin/G#6.mid' - if("Ab6") soundfile = 'sound/violin/Ab6.mid' - if("An6") soundfile = 'sound/violin/An6.mid' - if("A#6") soundfile = 'sound/violin/A#6.mid' - if("Bb6") soundfile = 'sound/violin/Bb6.mid' - if("Bn6") soundfile = 'sound/violin/Bn6.mid' - if("B#6") soundfile = 'sound/violin/B#6.mid' - if("Cb7") soundfile = 'sound/violin/Cb7.mid' - if("Cn7") soundfile = 'sound/violin/Cn7.mid' - if("C#7") soundfile = 'sound/violin/C#7.mid' - if("Db7") soundfile = 'sound/violin/Db7.mid' - if("Dn7") soundfile = 'sound/violin/Dn7.mid' - if("D#7") soundfile = 'sound/violin/D#7.mid' - if("Eb7") soundfile = 'sound/violin/Eb7.mid' - if("En7") soundfile = 'sound/violin/En7.mid' - if("E#7") soundfile = 'sound/violin/E#7.mid' - if("Fb7") soundfile = 'sound/violin/Fb7.mid' - if("Fn7") soundfile = 'sound/violin/Fn7.mid' - if("F#7") soundfile = 'sound/violin/F#7.mid' - if("Gb7") soundfile = 'sound/violin/Gb7.mid' - if("Gn7") soundfile = 'sound/violin/Gn7.mid' - if("G#7") soundfile = 'sound/violin/G#7.mid' - if("Ab7") soundfile = 'sound/violin/Ab7.mid' - if("An7") soundfile = 'sound/violin/An7.mid' - if("A#7") soundfile = 'sound/violin/A#7.mid' - if("Bb7") soundfile = 'sound/violin/Bb7.mid' - if("Bn7") soundfile = 'sound/violin/Bn7.mid' - if("B#7") soundfile = 'sound/violin/B#7.mid' - if("Cb8") soundfile = 'sound/violin/Cb8.mid' - if("Cn8") soundfile = 'sound/violin/Cn8.mid' - if("C#8") soundfile = 'sound/violin/C#8.mid' - if("Db8") soundfile = 'sound/violin/Db8.mid' - if("Dn8") soundfile = 'sound/violin/Dn8.mid' - if("D#8") soundfile = 'sound/violin/D#8.mid' - if("Eb8") soundfile = 'sound/violin/Eb8.mid' - if("En8") soundfile = 'sound/violin/En8.mid' - if("E#8") soundfile = 'sound/violin/E#8.mid' - if("Fb8") soundfile = 'sound/violin/Fb8.mid' - if("Fn8") soundfile = 'sound/violin/Fn8.mid' - if("F#8") soundfile = 'sound/violin/F#8.mid' - if("Gb8") soundfile = 'sound/violin/Gb8.mid' - if("Gn8") soundfile = 'sound/violin/Gn8.mid' - if("G#8") soundfile = 'sound/violin/G#8.mid' - if("Ab8") soundfile = 'sound/violin/Ab8.mid' - if("An8") soundfile = 'sound/violin/An8.mid' - if("A#8") soundfile = 'sound/violin/A#8.mid' - if("Bb8") soundfile = 'sound/violin/Bb8.mid' - if("Bn8") soundfile = 'sound/violin/Bn8.mid' - if("B#8") soundfile = 'sound/violin/B#8.mid' - if("Cb9") soundfile = 'sound/violin/Cb9.mid' - if("Cn9") soundfile = 'sound/violin/Cn9.mid' - else return +/obj/item/device/instrument/New() + ..() + song = new(instrumentId, src) + song.instrumentExt = instrumentExt - hearers(15, get_turf(src)) << sound(soundfile) +/obj/item/device/instrument/Destroy() + qdel(song) + song = null + ..() -/obj/item/device/violin/proc/playsong() - do - var/cur_oct[7] - var/cur_acc[7] - for(var/i = 1 to 7) - cur_oct[i] = "3" - cur_acc[i] = "n" +/obj/item/device/instrument/attack_self(mob/user as mob) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return 1 + interact(user) - for(var/line in song.lines) - //world << line - for(var/beat in splittext(lowertext(line), ",")) - //world << "beat: [beat]" - var/list/notes = splittext(beat, "/") - for(var/note in splittext(notes[1], "-")) - //world << "note: [note]" - if(!playing || !isliving(loc))//If the violin is playing, or isn't held by a person - playing = 0 - return - if(lentext(note) == 0) - continue - //world << "Parse: [copytext(note,1,2)]" - var/cur_note = text2ascii(note) - 96 - if(cur_note < 1 || cur_note > 7) - continue - for(var/i=2 to lentext(note)) - var/ni = copytext(note,i,i+1) - if(!text2num(ni)) - if(ni == "#" || ni == "b" || ni == "n") - cur_acc[cur_note] = ni - else if(ni == "s") - cur_acc[cur_note] = "#" // so shift is never required - else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) - if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) - else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) - playing = 0 - -/obj/item/device/violin/attack_self(mob/user as mob) - if(!isliving(user) || user.stat || user.restrained() || user.lying) return - user.set_machine(src) - - var/dat = "Violin" - - if(song) - if(song.lines.len > 0 && !(playing)) - dat += "Play Song

" - dat += "Repeat Song: [repeat] times.

" - if(playing) - dat += "Stop Playing
" - dat += "Repeats left: [repeat].

" - if(!edit) - dat += "Show Editor

" - else - dat += "Hide Editor
" - dat += "Start a New Song
" - dat += "Import a Song

" - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" - if(help) - dat += "Hide Help
" - dat += {" - Lines are a series of chords, separated by commas (,), each with notes seperated by hyphens (-).
- Every note in a chord will play together, with chord timed by the tempo.
-
- Notes are played by the names of the note, and optionally, the accidental, and/or the octave number.
- By default, every note is natural and in octave 3. Defining otherwise is remembered for each note.
- Example: C,D,E,F,G,A,B will play a C major scale.
- After a note has an accidental placed, it will be remembered: C,C4,C,C3 is C3,C4,C4,C3
- Chords can be played simply by seperating each note with a hyphon: A-C#,Cn-E,E-G#,Gn-B
- A pause may be denoted by an empty chord: C,E,,C,G
- To make a chord be a different time, end it with /x, where the chord length will be length
- defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,/2,G#/8,B/8,E3-E4/4 -
- Lines may be up to 50 characters.
- A song may only contain up to 50 lines.
- "} - else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=violin;size=700x300") - onclose(user, "violin") - -/obj/item/device/violin/Topic(href, href_list) - - if(!in_range(src, usr) || issilicon(usr) || !isliving(usr) || !usr.canmove || usr.restrained()) - usr << browse(null, "window=violin;size=700x300") - onclose(usr, "violin") +/obj/item/device/instrument/interact(mob/user as mob) + if(!user) return - if(href_list["newsong"]) - song = new() - else if(song) - if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. - if(playing) return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) + if(user.incapacitated() || user.lying) + return - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 + user.set_machine(src) + song.interact(user) - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "violin") as text|null) - if(!newline) - return - if(song.lines.len > 50) - return - if(lentext(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "violin", song.lines[num]) as text|null) - if(!content) - return - if(lentext(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) - if(!in_range(src, usr)) - return - - if(lentext(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(lentext(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - usr << "Too many lines!" - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(lentext(l) > 50) - usr << "Line [linenum] too long!" - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - - add_fingerprint(usr) - for(var/mob/M in viewers(1, loc)) - if((M.client && M.machine == src)) - attack_self(M) - return +/obj/item/device/instrument/violin + name = "space violin" + desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon_state = "violin" + attack_verb = list("smashed") + instrumentId = "violin" diff --git a/code/game/objects/items/poi_items.dm b/code/game/objects/items/poi_items.dm index 394212e4c4..af1b6c9c7a 100644 --- a/code/game/objects/items/poi_items.dm +++ b/code/game/objects/items/poi_items.dm @@ -54,7 +54,7 @@ name = "SCP" /obj/structure/largecrate/animal/crashedshuttle/initialize() - starts_with = pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble, /obj/item/weapon/deadringer) + starts_with = list(pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble, /obj/item/weapon/deadringer)) // Starts_with has to be a list name = pick("Spicy Crust Pizzeria", "Soap and Care Products", "Sally's Computer Parts", "Steve's Chocolate Pastries", "Smith & Christian's Plastics","Standard Containers & Packaging Co.", "Sanitary Chemical Purgation (LTD)") name += " delivery crate" return ..() diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 177d674c6b..db9748e6af 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -101,7 +101,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, /obj/item/device/paicard, - /obj/item/device/violin, + /obj/item/device/instrument/violin, /obj/item/weapon/storage/belt/utility/full, /obj/item/clothing/accessory/tie/horrible) diff --git a/code/game/objects/items/weapons/grenades/explosive.dm b/code/game/objects/items/weapons/grenades/explosive.dm index 4969c3045a..3b4f6a4511 100644 --- a/code/game/objects/items/weapons/grenades/explosive.dm +++ b/code/game/objects/items/weapons/grenades/explosive.dm @@ -38,23 +38,8 @@ fragment_types = list(/obj/item/projectile/bullet/pellet/fragment) num_fragments = 200 //total number of fragments produced by the grenade -/obj/item/weapon/grenade/explosive/mini - name = "mini fragmentation grenade" - desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own." - icon_state = "minifrag" - fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong) - num_fragments = 20 - spread_range = 3 - explosion_size = 1 - -// This thing literally just explodes -/obj/item/weapon/grenade/explosive/concussion - name = "concussion grenade" - desc = "A small explosive grenade" - num_fragments = 0 -// This proc is only here because I don't know where else to put it, should be kept at the bottom of this file unless moved to a more appropriate location /obj/proc/fragmentate(var/turf/T=get_turf(src), var/fragment_number = 30, var/spreading_range = 5, var/list/fragtypes=list(/obj/item/projectile/bullet/pellet/fragment/)) set waitfor = 0 var/list/target_turfs = getcircle(T, spreading_range) @@ -79,3 +64,12 @@ P.attack_mob(M, 0, 25) //you're holding a grenade, dude! else P.attack_mob(M, 0, 100) //otherwise, allow a decent amount of fragments to pass + +/obj/item/weapon/grenade/explosive/mini + name = "mini fragmentation grenade" + desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own." + icon_state = "minifrag" + fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong) + num_fragments = 20 + spread_range = 3 + explosion_size = 1 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index e6a5fc09e4..40c074c939 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -99,6 +99,9 @@ cuffs.loc = target target.handcuffed = cuffs target.update_inv_handcuffed() + target.drop_r_hand() + target.drop_l_hand() + target.stop_pulling() return 1 /obj/item/weapon/handcuffs/equipped(var/mob/living/user,var/slot) @@ -212,50 +215,12 @@ var/last_chew = 0 elastic = 0 cuff_sound = 'sound/weapons/handcuffs.ogg' //This shold work for now. -/obj/item/weapon/handcuffs/legcuffs/bola - name = "bola" - desc = "Keeps prey in line." - elastic = 1 - use_time = 0 - breakouttime = 30 - cuff_sound = 'sound/weapons/towelwipe.ogg' //Is there anything this sound can't do? - /obj/item/weapon/handcuffs/legcuffs/get_worn_icon_state(var/slot_name) if(slot_name == slot_legcuffed_str) return "legcuff1" return ..() -/obj/item/weapon/handcuffs/legcuffs/bola/can_place(var/mob/target, var/mob/user) - if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing. - return 1 - -/obj/item/weapon/handcuffs/legcuffs/bola/dropped() - visible_message("\The [src] falls apart!") - qdel(src) - -/obj/item/weapon/handcuffs/legcuffs/bola/place_legcuffs(var/mob/living/carbon/target, var/mob/user) - playsound(src.loc, cuff_sound, 30, 1, -2) - - var/mob/living/carbon/human/H = target - if(!istype(H)) - src.dropped() - return 0 - - if(!H.has_organ_for_slot(slot_legcuffed)) - H.visible_message("\The [src] slams into [H], but slides off!") - src.dropped() - return 0 - - H.visible_message("\The [H] has been snared by \the [src]!") - - // Apply cuffs. - var/obj/item/weapon/handcuffs/legcuffs/lcuffs = src - lcuffs.loc = target - target.legcuffed = lcuffs - target.update_inv_legcuffed() - return 1 - /obj/item/weapon/handcuffs/legcuffs/attack(var/mob/living/carbon/C, var/mob/living/user) if(!user.IsAdvancedToolUser()) return @@ -316,6 +281,10 @@ var/last_chew = 0 lcuffs.loc = target target.legcuffed = lcuffs target.update_inv_legcuffed() + if(target.m_intent != "walk") + target.m_intent = "walk" + if(target.hud_used && user.hud_used.move_intent) + target.hud_used.move_intent.icon_state = "walking" return 1 /obj/item/weapon/handcuffs/legcuffs/equipped(var/mob/living/user,var/slot) @@ -325,3 +294,46 @@ var/last_chew = 0 user.m_intent = "walk" if(user.hud_used && user.hud_used.move_intent) user.hud_used.move_intent.icon_state = "walking" + + +/obj/item/weapon/handcuffs/legcuffs/bola + name = "bola" + desc = "Keeps prey in line." + elastic = 1 + use_time = 0 + breakouttime = 30 + cuff_sound = 'sound/weapons/towelwipe.ogg' //Is there anything this sound can't do? + +/obj/item/weapon/handcuffs/legcuffs/bola/can_place(var/mob/target, var/mob/user) + if(user) //A ranged legcuff, until proper implementation as items it remains a projectile-only thing. + return 1 + +/obj/item/weapon/handcuffs/legcuffs/bola/dropped() + visible_message("\The [src] falls apart!") + qdel(src) + +/obj/item/weapon/handcuffs/legcuffs/bola/place_legcuffs(var/mob/living/carbon/target, var/mob/user) + playsound(src.loc, cuff_sound, 30, 1, -2) + + var/mob/living/carbon/human/H = target + if(!istype(H)) + src.dropped() + return 0 + + if(!H.has_organ_for_slot(slot_legcuffed)) + H.visible_message("\The [src] slams into [H], but slides off!") + src.dropped() + return 0 + + H.visible_message("\The [H] has been snared by \the [src]!") + + // Apply cuffs. + var/obj/item/weapon/handcuffs/legcuffs/lcuffs = src + lcuffs.loc = target + target.legcuffed = lcuffs + target.update_inv_legcuffed() + if(target.m_intent != "walk") + target.m_intent = "walk" + if(target.hud_used && user.hud_used.move_intent) + target.hud_used.move_intent.icon_state = "walking" + return 1 \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implantcircuits.dm b/code/game/objects/items/weapons/implants/implantcircuits.dm index 2b87e8fae5..7c9391c631 100644 --- a/code/game/objects/items/weapons/implants/implantcircuits.dm +++ b/code/game/objects/items/weapons/implants/implantcircuits.dm @@ -1,7 +1,7 @@ /obj/item/weapon/implant/integrated_circuit name = "electronic implant" desc = "It's a case, for building very tiny electronics with." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_setups.dmi' icon_state = "setup_implant" var/obj/item/device/electronic_assembly/implant/IC = null diff --git a/code/game/objects/items/weapons/implants/neuralbasic.dm b/code/game/objects/items/weapons/implants/neuralbasic.dm new file mode 100644 index 0000000000..a42778f58e --- /dev/null +++ b/code/game/objects/items/weapons/implants/neuralbasic.dm @@ -0,0 +1,106 @@ +/obj/item/weapon/implant/neural + name = "neural framework implant" + desc = "A small metal casing with numerous wires stemming off of it." + var/obj/item/organ/internal/brain/my_brain = null + var/target_state = null + var/robotic_brain = FALSE + +/obj/item/weapon/implant/neural/post_implant(var/mob/source) + if(ishuman(source)) + var/mob/living/carbon/human/H = source + if(H.species.has_organ[O_BRAIN]) + var/obj/item/organ/internal/brain/possible_brain = H.internal_organs_by_name[O_BRAIN] + my_brain = possible_brain //Organs will take damage all the same. + if(istype(possible_brain) && my_brain.can_assist()) //If the brain is infact a brain, and not something special like an MMI. + my_brain.implant_assist(target_state) + if(H.isSynthetic() && H.get_FBP_type() != FBP_CYBORG) //If this on an FBP, it's just an extra inefficient attachment to whatever their brain is. + robotic_brain = TRUE + if(my_brain && my_brain.can_assist()) + processing_objects.Add(src) + +/obj/item/weapon/implant/neural/Destroy() + if(my_brain) + if(my_brain.owner) + to_chat(my_brain.owner, "You feel a pressure in your mind as something is ripped away.") + processing_objects.Remove(src) + my_brain = null + return ..() + +/obj/item/weapon/implant/neural/process() + if(my_brain && part) + if(my_brain.loc != part.loc) + to_chat(my_brain.owner, "You feel a pressure in your mind as something is ripped away.") + meltdown() + return 1 + +/obj/item/weapon/implant/neural/get_data() + var/dat = {"Implant Specifications:
+Name: Neural Framework Implant
+Life: Duration of Brain Function
+Important Notes: None
+
+Implant Details:
+Function: Maintains some function or structure of the target's brain.
+Special Features:
+Neuro-Safe- Specialized shell absorbs excess voltages self-destructing the chip if +a malfunction occurs thereby attempting to secure the safety of subject.
+Integrity: Gradient creates slight risk of being overcharged and frying the +circuitry. Resulting faults can cause damage to the host's brain.
+Implant Specifics:
"} + return dat + +/obj/item/weapon/implant/neural/emp_act(severity) + if(!my_brain) + return + if(malfunction) //Don't malfunction while malfunctioning. + return + malfunction = MALFUNCTION_TEMPORARY + + var/delay = 10 //Don't let it just get emped twice in a second to kill someone. + var/brain_location = my_brain.owner.organs_by_name[my_brain.parent_organ] + var/mob/living/L = my_brain.owner + switch(severity) + if(1) + if(prob(10)) + meltdown() + else if(prob(80)) + my_brain.take_damage(5) + if(!robotic_brain) + to_chat(L, "Something in your [brain_location] burns!") + else + to_chat(L, "Severe fault detected in [brain_location].") + if(2) + if(prob(80)) + my_brain.take_damage(3) + if(!robotic_brain) + to_chat(L, "It feels like something is digging into your [brain_location]!") + else + to_chat(L, "Fault detected in [brain_location].") + if(3) + if(prob(60)) + my_brain.take_damage(2) + if(!robotic_brain) + to_chat(L, "There is a stabbing pain in your [brain_location]!") + if(4) + if(prob(40)) + my_brain.take_damage(1) + if(!robotic_brain) + to_chat(L, "Your [brain_location] aches.") + + spawn(delay) + malfunction-- + +/obj/item/weapon/implant/neural/meltdown() + ..() + processing_objects.Remove(src) + var/mob/living/carbon/human/H = null + if(my_brain && my_brain.owner) + if(ishuman(my_brain.owner)) + H = my_brain.owner + if(robotic_brain) + to_chat(H, "WARNING. Fault dete-ct-- in the \the [src].") + H.Confuse(30) + H.AdjustBlinded(5) + my_brain.take_damage(15) + my_brain = null + return diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index 2e67445fc3..913fb6fddf 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -79,16 +79,6 @@ * Knives */ -// Identical to the tactical knife but nowhere near as stabby. -// Kind of like the toy esword compared to the real thing. -/obj/item/weapon/material/knife/boot - name = "boot knife" - desc = "A small fixed-blade knife for putting inside a boot." - icon = 'icons/obj/weapons.dmi' - icon_state = "tacknife" - item_state = "knife" - applies_material_colour = 0 - /* From the time of Clowns. Commented out for posterity, and sanity. /obj/item/weapon/material/knife/attack(target as mob, mob/living/user as mob) if ((CLUMSY in user.mutations) && prob(50)) diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 94bc9e8f69..b652b8c5ff 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -74,6 +74,39 @@ "\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.") return (BRUTELOSS) +// These no longer inherit from hatchets. +/obj/item/weapon/material/knife/tacknife + name = "tactical knife" + desc = "You'd be killing loads of people if this was Medal of Valor: Heroes of Space." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + force_divisor = 0.25 //15 when hardness 60 (steel) + attack_verb = list("stabbed", "chopped", "cut") + applies_material_colour = 1 + +/obj/item/weapon/material/knife/tacknife/combatknife + name = "combat knife" + desc = "If only you had a boot to put it in." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + force_divisor = 0.34 // 20 with hardness 60 (steel) + thrown_force_divisor = 1.75 // 20 with weight 20 (steel) + attack_verb = list("sliced", "stabbed", "chopped", "cut") + applies_material_colour = 1 + +// Identical to the tactical knife but nowhere near as stabby. +// Kind of like the toy esword compared to the real thing. +/obj/item/weapon/material/knife/tacknife/boot + name = "boot knife" + desc = "A small fixed-blade knife for putting inside a boot." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + force_divisor = 0.15 + applies_material_colour = 0 + /obj/item/weapon/material/knife/hook name = "meat hook" desc = "A sharp, metal hook what sticks into things." diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index bbb8171b10..685a78f339 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -46,28 +46,6 @@ hits = initial(hits) ..() -// These no longer inherit from hatchets. -/obj/item/weapon/material/knife/tacknife - name = "tactical knife" - desc = "You'd be killing loads of people if this was Medal of Valor: Heroes of Space." - icon = 'icons/obj/weapons.dmi' - icon_state = "tacknife" - item_state = "knife" - force_divisor = 0.25 //15 when hardness 60 (steel) - attack_verb = list("stabbed", "chopped", "cut") - applies_material_colour = 1 - -/obj/item/weapon/material/knife/tacknife/combatknife - name = "combat knife" - desc = "If only you had a boot to put it in." - icon = 'icons/obj/weapons.dmi' - icon_state = "tacknife" - item_state = "knife" - force_divisor = 0.34 // 20 with hardness 60 (steel) - thrown_force_divisor = 1.75 // 20 with weight 20 (steel) - attack_verb = list("sliced", "stabbed", "chopped", "cut") - applies_material_colour = 1 - /obj/item/weapon/material/minihoe // -- Numbers name = "mini hoe" desc = "It's used for removing weeds or scratching your back." diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index 82442e03a1..249f49f529 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -1,4 +1,3 @@ - /* * Screwdriver */ @@ -123,4 +122,4 @@ counterpart.forceMove(get_turf(src)) src.forceMove(counterpart) user.put_in_active_hand(counterpart) - to_chat(user, "You attach the bolt driver bit to [src].") \ No newline at end of file + to_chat(user, "You attach the bolt driver bit to [src].") diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index fe57e4b08a..13cf3e51cf 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -1,4 +1,3 @@ - /* * Wrench */ @@ -69,4 +68,4 @@ counterpart.forceMove(get_turf(src)) src.forceMove(counterpart) user.put_in_active_hand(counterpart) - to_chat(user, "You attach the screw driver bit to [src].") \ No newline at end of file + to_chat(user, "You attach the screw driver bit to [src].") diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 28a9513e77..5b8fc35e3c 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -487,4 +487,19 @@ /obj/item/toy/prize/seraph, /obj/item/toy/prize/mauler, /obj/item/toy/prize/odysseus, - /obj/item/toy/prize/phazon) \ No newline at end of file + /obj/item/toy/prize/phazon) + +/obj/random/mouseremains + name = "random mouseremains" + desc = "For use with mouse spawners." + icon = 'icons/obj/assemblies/new_assemblies.dmi' + icon_state = "mousetrap" + +/obj/random/mouseremains/item_to_spawn() + return pick(/obj/item/device/assembly/mousetrap, + /obj/item/device/assembly/mousetrap/armed, + /obj/effect/decal/cleanable/spiderling_remains, + /obj/effect/decal/cleanable/ash, + /obj/item/weapon/cigbutt, + /obj/item/weapon/cigbutt/cigarbutt, + /obj/effect/decal/remains/mouse) \ No newline at end of file diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index d831f2a4ce..bc3082f99c 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -40,22 +40,25 @@ /obj/random/mob/spawn_item() //These should only ever have simple mobs. var/build_path = item_to_spawn() - var/mob/living/simple_animal/M = new build_path(src.loc) - M.ai_inactive = 1 //Don't fight eachother while we're still setting up! - if(mob_faction) - M.faction = mob_faction - M.returns_home = mob_returns_home - M.wander = mob_wander - M.wander_distance = mob_wander_distance - if(overwrite_hostility) - M.hostile = mob_hostile - M.retaliate = mob_retaliate - M.ai_inactive = 0 //Now you can kill eachother if your faction didn't override. + var/mob/living/simple_mob/M = new build_path(src.loc) + if(!istype(M)) + return + if(M.has_AI()) + var/datum/ai_holder/AI = M.ai_holder + AI.go_sleep() //Don't fight eachother while we're still setting up! + AI.returns_home = mob_returns_home + AI.wander = mob_wander + AI.max_home_distance = mob_wander_distance + if(overwrite_hostility) + AI.hostile = mob_hostile + AI.retaliate = mob_retaliate + AI.go_wake() //Now you can kill eachother if your faction didn't override. if(pixel_x || pixel_y) M.pixel_x = pixel_x M.pixel_y = pixel_y + /obj/random/mob/sif name = "Random Sif Animal" desc = "This is a random cold weather animal." @@ -186,3 +189,16 @@ prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser, prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong, prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard) + +//Mice + +/obj/random/mob/mouse + name = "Random Mouse" + desc = "This is a random boring maus." + icon_state = "mouse_gray" + +/obj/random/mob/mouse/item_to_spawn() + return pick(prob(15);/mob/living/simple_mob/animal/passive/mouse/white, + prob(30);/mob/living/simple_mob/animal/passive/mouse/brown, + prob(30);/mob/living/simple_mob/animal/passive/mouse/gray, + prob(25);/obj/random/mouseremains) //because figuring out how to come up with it picking nothing is beyond my coding ability. \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 690808a34e..d8c2dd3a4d 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -15,6 +15,7 @@ if(I.density || I.anchored || I == src || !I.simulated) continue I.forceMove(src) + update_icon() /obj/structure/largecrate/attack_hand(mob/user as mob) to_chat(user, "You need a crowbar to pry this open!") @@ -57,6 +58,29 @@ ME.attach(H) ..() +/obj/structure/largecrate/vehicle + name = "vehicle crate" + desc = "It comes in a box for the consumer's sake. ..How is this lighter?" + icon_state = "vehiclecrate" + +/obj/structure/largecrate/vehicle/initialize() + ..() + spawn(1) + for(var/obj/O in contents) + O.update_icon() + +/obj/structure/largecrate/vehicle/bike + name = "spacebike crate" + starts_with = list(/obj/structure/vehiclecage/spacebike) + +/obj/structure/largecrate/vehicle/quadbike + name = "\improper ATV crate" + starts_with = list(/obj/structure/vehiclecage/quadbike) + +/obj/structure/largecrate/vehicle/quadtrailer + name = "\improper ATV trailer crate" + starts_with = list(/obj/structure/vehiclecage/quadtrailer) + /obj/structure/largecrate/animal icon_state = "mulecrate" diff --git a/code/game/objects/structures/crates_lockers/vehiclecage.dm b/code/game/objects/structures/crates_lockers/vehiclecage.dm new file mode 100644 index 0000000000..9915ca6a7b --- /dev/null +++ b/code/game/objects/structures/crates_lockers/vehiclecage.dm @@ -0,0 +1,106 @@ +/obj/structure/vehiclecage + name = "vehicle cage" + desc = "A large metal lattice that seems to exist solely to annoy consumers." + icon = 'icons/obj/storage.dmi' + icon_state = "vehicle_cage" + density = 1 + var/obj/vehicle/my_vehicle + var/my_vehicle_type + var/paint_color = "#666666" + +/obj/structure/vehiclecage/examine(mob/user) + ..() + if(my_vehicle) + to_chat(user, "It seems to contain \the [my_vehicle].") + +/obj/structure/vehiclecage/initialize() + . = ..() + if(my_vehicle_type) + my_vehicle = new my_vehicle_type(src) + for(var/obj/I in get_turf(src)) + if(I.density || I.anchored || I == src || !I.simulated || !istype(I, my_vehicle_type)) + continue + load_vehicle(I) + update_icon() + +/obj/structure/vehiclecage/attack_hand(mob/user as mob) + to_chat(user, "You need a wrench to take this apart!") + return + +/obj/structure/vehiclecage/attackby(obj/item/weapon/W as obj, mob/user as mob) + var/turf/T = get_turf(src) + if(!T) + to_chat(user, "You can't open this here!") + if(W.is_wrench() && do_after(user, 60 * W.toolspeed, src)) + playsound(loc, W.usesound, 50, 1) + disassemble(W, user) + user.visible_message("[user] begins loosening \the [src]'s bolts.") + if(W.is_wirecutter() && do_after(user, 70 * W.toolspeed, src)) + playsound(loc, W.usesound, 50, 1) + disassemble(W, user) + user.visible_message("[user] begins cutting \the [src]'s bolts.") + else + return attack_hand(user) + +/obj/structure/vehiclecage/update_icon() + ..() + overlays.Cut() + underlays.Cut() + + var/image/framepaint = new(icon = 'icons/obj/storage.dmi', icon_state = "[initial(icon_state)]_a", layer = MOB_LAYER + 1.1) + framepaint.plane = MOB_PLANE + framepaint.color = paint_color + overlays += framepaint + + for(var/obj/vehicle/V in src.contents) + var/image/showcase = new(V) + showcase.layer = src.layer - 0.1 + underlays += showcase + +/obj/structure/vehiclecage/MouseDrop_T(var/atom/movable/C, mob/user as mob) + if(user && (user.buckled || user.stat || user.restrained() || !Adjacent(user) || !user.Adjacent(C))) + return + + var/obj/vehicle/V + if(istype(C, /obj/vehicle)) + V = C + if(!V) + return + + if(!my_vehicle) + load_vehicle(V, user) + +/obj/structure/vehiclecage/proc/load_vehicle(var/obj/vehicle/V, mob/user as mob) + if(user) + user.visible_message("[user] loads \the [V] into \the [src].", \ + "You load \the [V] into \the [src].", \ + "You hear creaking metal.") + + V.forceMove(src) + + paint_color = V.paint_color + + update_icon() + +/obj/structure/vehiclecage/proc/disassemble(obj/item/weapon/W as obj, mob/user as mob) + var/turf/T = get_turf(src) + new /obj/item/stack/material/steel(src.loc, 5) + + for(var/atom/movable/AM in contents) + if(AM.simulated) + AM.forceMove(T) + + my_vehicle = null + user.visible_message("[user] release \the [src].", \ + "You finally release \the [src].", \ + "You hear creaking metal.") + qdel(src) + +/obj/structure/vehiclecage/spacebike + my_vehicle_type = /obj/vehicle/bike/random + +/obj/structure/vehiclecage/quadbike + my_vehicle_type = /obj/vehicle/train/engine/quadbike/random + +/obj/structure/vehiclecage/quadtrailer + my_vehicle_type = /obj/vehicle/train/trolley/trailer/random diff --git a/code/game/objects/structures/ghost_pods/mysterious.dm b/code/game/objects/structures/ghost_pods/mysterious.dm index c28e516733..cd34d91e6f 100644 --- a/code/game/objects/structures/ghost_pods/mysterious.dm +++ b/code/game/objects/structures/ghost_pods/mysterious.dm @@ -47,4 +47,4 @@ R.ghost_inhabit(M) visible_message("The blade shines brightly for a brief moment as [usr] pulls it out of the stone!") log_and_message_admins("successfully acquired a cursed sword.") - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 311e07d0c6..b61d01d2a4 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -317,13 +317,20 @@ return /obj/structure/girder/cult + name = "column" icon= 'icons/obj/cult.dmi' icon_state= "cultgirder" health = 250 cover = 70 - girder_material = DEFAULT_WALL_MATERIAL + girder_material = "cult" applies_material_colour = 0 +/obj/structure/girder/cult/update_icon() + if(anchored) + icon_state = "cultgirder" + else + icon_state = "displaced" + /obj/structure/girder/cult/dismantle() new /obj/effect/decal/remains/human(get_turf(src)) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 8b16105815..2b01af77bc 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -93,7 +93,9 @@ src.health -= damage*0.2 spawn(0) healthcheck() //spawn to make sure we return properly if the grille is deleted -/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/structure/grille/attackby(obj/item/W as obj, mob/user as mob) + if(!istype(W)) + return if(W.is_wirecutter()) if(!shock(user, 100)) playsound(src, W.usesound, 100, 1) @@ -107,7 +109,7 @@ "You have [anchored ? "fastened the grille to" : "unfastened the grille from"] the floor.") return -//window placing begin //TODO CONVERT PROPERLY TO MATERIAL DATUM + //window placing begin //TODO CONVERT PROPERLY TO MATERIAL DATUM else if(istype(W,/obj/item/stack/material)) var/obj/item/stack/material/ST = W if(!ST.material.created_window) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 8a254bf631..5b76b4cf86 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -1,248 +1,107 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 +#define MUSICIAN_HEARCHECK_MINDELAY 4 +#define INSTRUMENT_MAX_LINE_LENGTH 300 +#define INSTRUMENT_MAX_LINE_NUMBER 50 + /datum/song var/name = "Untitled" var/list/lines = new() - var/tempo = 5 + var/tempo = 5 // delay between notes -/obj/structure/device/piano - name = "space minimoog" - icon = 'icons/obj/musician.dmi' - icon_state = "minimoog" - anchored = 1 - density = 1 - var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 + var/playing = 0 // if we're playing + var/help = 0 // if help is open + var/edit = 1 // if we're in editing mode + var/repeat = 0 // number of times remaining to repeat + var/max_repeats = 10 // maximum times we can repeat -/obj/structure/device/piano/New() - if(prob(50)) - name = "space minimoog" - desc = "This is a minimoog, like a space piano, but more spacey!" - icon_state = "minimoog" + var/instrumentDir = "piano" // the folder with the sounds + var/instrumentExt = "ogg" // the file extension + var/obj/instrumentObj = null // the associated obj playing the sound + var/last_hearcheck = 0 + var/list/hearing_mobs + +/datum/song/New(dir, obj, ext = "ogg") + instrumentDir = dir + instrumentObj = obj + instrumentExt = ext + +/datum/song/Destroy() + instrumentObj = null + return ..() + + +// note is a number from 1-7 for A-G +// acc is either "b", "n", or "#" +// oct is 1-8 (or 9 for C) +/datum/song/proc/playnote(note, acc as text, oct) + // handle accidental -> B<>C of E<>F + if(acc == "b" && (note == 3 || note == 6)) // C or F + if(note == 3) + oct-- + note-- + acc = "n" + else if(acc == "#" && (note == 2 || note == 5)) // B or E + if(note == 2) + oct++ + note++ + acc = "n" + else if(acc == "#" && (note == 7)) //G# + note = 1 + acc = "b" + else if(acc == "#") // mass convert all sharps to flats, octave jump already handled + acc = "b" + note++ + + // check octave, C is allowed to go to 9 + if(oct < 1 || (note == 3 ? oct > 9 : oct > 8)) + return + + // now generate name + var/soundfile = "sound/instruments/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]" + soundfile = file(soundfile) + // make sure the note exists + if(!fexists(soundfile)) + return + // and play + var/turf/source = get_turf(instrumentObj) + if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/M in hearers(15, source)) + if(!M.client || !(M.is_preference_enabled(/datum/client_preference/instrument_toggle))) + continue + LAZYSET(hearing_mobs, M, TRUE) + last_hearcheck = world.time + var/sound/music_played = sound(soundfile) + for(var/i in hearing_mobs) + var/mob/M = i + M.playsound_local(source, null, 100, falloff = 5, S = music_played) + +/datum/song/proc/updateDialog(mob/user) + instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise + +/datum/song/proc/shouldStopPlaying(mob/user) + if(instrumentObj) + if(!instrumentObj.Adjacent(user) || user.stat) + return 1 + return !instrumentObj.anchored // add special cases to stop in subclasses else - name = "space piano" - desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't." - icon_state = "piano" + return 1 -/obj/structure/device/piano/verb/rotate() - set name = "Rotate Piano" - set category = "Object" - set src in oview(1) - - if(ismouse(usr)) - return - else if(!usr || !isturf(usr.loc)) - return - else if(usr.stat || usr.restrained()) - return - else if (istype(usr,/mob/observer/ghost) && !config.ghost_interaction) - return - else - src.set_dir(turn(src.dir, 90)) - return - -/obj/structure/device/piano/proc/playnote(var/note as text) - //world << "Note: [note]" - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/piano/Cn1.ogg' - if("C#1") soundfile = 'sound/piano/C#1.ogg' - if("Db1") soundfile = 'sound/piano/Db1.ogg' - if("Dn1") soundfile = 'sound/piano/Dn1.ogg' - if("D#1") soundfile = 'sound/piano/D#1.ogg' - if("Eb1") soundfile = 'sound/piano/Eb1.ogg' - if("En1") soundfile = 'sound/piano/En1.ogg' - if("E#1") soundfile = 'sound/piano/E#1.ogg' - if("Fb1") soundfile = 'sound/piano/Fb1.ogg' - if("Fn1") soundfile = 'sound/piano/Fn1.ogg' - if("F#1") soundfile = 'sound/piano/F#1.ogg' - if("Gb1") soundfile = 'sound/piano/Gb1.ogg' - if("Gn1") soundfile = 'sound/piano/Gn1.ogg' - if("G#1") soundfile = 'sound/piano/G#1.ogg' - if("Ab1") soundfile = 'sound/piano/Ab1.ogg' - if("An1") soundfile = 'sound/piano/An1.ogg' - if("A#1") soundfile = 'sound/piano/A#1.ogg' - if("Bb1") soundfile = 'sound/piano/Bb1.ogg' - if("Bn1") soundfile = 'sound/piano/Bn1.ogg' - if("B#1") soundfile = 'sound/piano/B#1.ogg' - if("Cb2") soundfile = 'sound/piano/Cb2.ogg' - if("Cn2") soundfile = 'sound/piano/Cn2.ogg' - if("C#2") soundfile = 'sound/piano/C#2.ogg' - if("Db2") soundfile = 'sound/piano/Db2.ogg' - if("Dn2") soundfile = 'sound/piano/Dn2.ogg' - if("D#2") soundfile = 'sound/piano/D#2.ogg' - if("Eb2") soundfile = 'sound/piano/Eb2.ogg' - if("En2") soundfile = 'sound/piano/En2.ogg' - if("E#2") soundfile = 'sound/piano/E#2.ogg' - if("Fb2") soundfile = 'sound/piano/Fb2.ogg' - if("Fn2") soundfile = 'sound/piano/Fn2.ogg' - if("F#2") soundfile = 'sound/piano/F#2.ogg' - if("Gb2") soundfile = 'sound/piano/Gb2.ogg' - if("Gn2") soundfile = 'sound/piano/Gn2.ogg' - if("G#2") soundfile = 'sound/piano/G#2.ogg' - if("Ab2") soundfile = 'sound/piano/Ab2.ogg' - if("An2") soundfile = 'sound/piano/An2.ogg' - if("A#2") soundfile = 'sound/piano/A#2.ogg' - if("Bb2") soundfile = 'sound/piano/Bb2.ogg' - if("Bn2") soundfile = 'sound/piano/Bn2.ogg' - if("B#2") soundfile = 'sound/piano/B#2.ogg' - if("Cb3") soundfile = 'sound/piano/Cb3.ogg' - if("Cn3") soundfile = 'sound/piano/Cn3.ogg' - if("C#3") soundfile = 'sound/piano/C#3.ogg' - if("Db3") soundfile = 'sound/piano/Db3.ogg' - if("Dn3") soundfile = 'sound/piano/Dn3.ogg' - if("D#3") soundfile = 'sound/piano/D#3.ogg' - if("Eb3") soundfile = 'sound/piano/Eb3.ogg' - if("En3") soundfile = 'sound/piano/En3.ogg' - if("E#3") soundfile = 'sound/piano/E#3.ogg' - if("Fb3") soundfile = 'sound/piano/Fb3.ogg' - if("Fn3") soundfile = 'sound/piano/Fn3.ogg' - if("F#3") soundfile = 'sound/piano/F#3.ogg' - if("Gb3") soundfile = 'sound/piano/Gb3.ogg' - if("Gn3") soundfile = 'sound/piano/Gn3.ogg' - if("G#3") soundfile = 'sound/piano/G#3.ogg' - if("Ab3") soundfile = 'sound/piano/Ab3.ogg' - if("An3") soundfile = 'sound/piano/An3.ogg' - if("A#3") soundfile = 'sound/piano/A#3.ogg' - if("Bb3") soundfile = 'sound/piano/Bb3.ogg' - if("Bn3") soundfile = 'sound/piano/Bn3.ogg' - if("B#3") soundfile = 'sound/piano/B#3.ogg' - if("Cb4") soundfile = 'sound/piano/Cb4.ogg' - if("Cn4") soundfile = 'sound/piano/Cn4.ogg' - if("C#4") soundfile = 'sound/piano/C#4.ogg' - if("Db4") soundfile = 'sound/piano/Db4.ogg' - if("Dn4") soundfile = 'sound/piano/Dn4.ogg' - if("D#4") soundfile = 'sound/piano/D#4.ogg' - if("Eb4") soundfile = 'sound/piano/Eb4.ogg' - if("En4") soundfile = 'sound/piano/En4.ogg' - if("E#4") soundfile = 'sound/piano/E#4.ogg' - if("Fb4") soundfile = 'sound/piano/Fb4.ogg' - if("Fn4") soundfile = 'sound/piano/Fn4.ogg' - if("F#4") soundfile = 'sound/piano/F#4.ogg' - if("Gb4") soundfile = 'sound/piano/Gb4.ogg' - if("Gn4") soundfile = 'sound/piano/Gn4.ogg' - if("G#4") soundfile = 'sound/piano/G#4.ogg' - if("Ab4") soundfile = 'sound/piano/Ab4.ogg' - if("An4") soundfile = 'sound/piano/An4.ogg' - if("A#4") soundfile = 'sound/piano/A#4.ogg' - if("Bb4") soundfile = 'sound/piano/Bb4.ogg' - if("Bn4") soundfile = 'sound/piano/Bn4.ogg' - if("B#4") soundfile = 'sound/piano/B#4.ogg' - if("Cb5") soundfile = 'sound/piano/Cb5.ogg' - if("Cn5") soundfile = 'sound/piano/Cn5.ogg' - if("C#5") soundfile = 'sound/piano/C#5.ogg' - if("Db5") soundfile = 'sound/piano/Db5.ogg' - if("Dn5") soundfile = 'sound/piano/Dn5.ogg' - if("D#5") soundfile = 'sound/piano/D#5.ogg' - if("Eb5") soundfile = 'sound/piano/Eb5.ogg' - if("En5") soundfile = 'sound/piano/En5.ogg' - if("E#5") soundfile = 'sound/piano/E#5.ogg' - if("Fb5") soundfile = 'sound/piano/Fb5.ogg' - if("Fn5") soundfile = 'sound/piano/Fn5.ogg' - if("F#5") soundfile = 'sound/piano/F#5.ogg' - if("Gb5") soundfile = 'sound/piano/Gb5.ogg' - if("Gn5") soundfile = 'sound/piano/Gn5.ogg' - if("G#5") soundfile = 'sound/piano/G#5.ogg' - if("Ab5") soundfile = 'sound/piano/Ab5.ogg' - if("An5") soundfile = 'sound/piano/An5.ogg' - if("A#5") soundfile = 'sound/piano/A#5.ogg' - if("Bb5") soundfile = 'sound/piano/Bb5.ogg' - if("Bn5") soundfile = 'sound/piano/Bn5.ogg' - if("B#5") soundfile = 'sound/piano/B#5.ogg' - if("Cb6") soundfile = 'sound/piano/Cb6.ogg' - if("Cn6") soundfile = 'sound/piano/Cn6.ogg' - if("C#6") soundfile = 'sound/piano/C#6.ogg' - if("Db6") soundfile = 'sound/piano/Db6.ogg' - if("Dn6") soundfile = 'sound/piano/Dn6.ogg' - if("D#6") soundfile = 'sound/piano/D#6.ogg' - if("Eb6") soundfile = 'sound/piano/Eb6.ogg' - if("En6") soundfile = 'sound/piano/En6.ogg' - if("E#6") soundfile = 'sound/piano/E#6.ogg' - if("Fb6") soundfile = 'sound/piano/Fb6.ogg' - if("Fn6") soundfile = 'sound/piano/Fn6.ogg' - if("F#6") soundfile = 'sound/piano/F#6.ogg' - if("Gb6") soundfile = 'sound/piano/Gb6.ogg' - if("Gn6") soundfile = 'sound/piano/Gn6.ogg' - if("G#6") soundfile = 'sound/piano/G#6.ogg' - if("Ab6") soundfile = 'sound/piano/Ab6.ogg' - if("An6") soundfile = 'sound/piano/An6.ogg' - if("A#6") soundfile = 'sound/piano/A#6.ogg' - if("Bb6") soundfile = 'sound/piano/Bb6.ogg' - if("Bn6") soundfile = 'sound/piano/Bn6.ogg' - if("B#6") soundfile = 'sound/piano/B#6.ogg' - if("Cb7") soundfile = 'sound/piano/Cb7.ogg' - if("Cn7") soundfile = 'sound/piano/Cn7.ogg' - if("C#7") soundfile = 'sound/piano/C#7.ogg' - if("Db7") soundfile = 'sound/piano/Db7.ogg' - if("Dn7") soundfile = 'sound/piano/Dn7.ogg' - if("D#7") soundfile = 'sound/piano/D#7.ogg' - if("Eb7") soundfile = 'sound/piano/Eb7.ogg' - if("En7") soundfile = 'sound/piano/En7.ogg' - if("E#7") soundfile = 'sound/piano/E#7.ogg' - if("Fb7") soundfile = 'sound/piano/Fb7.ogg' - if("Fn7") soundfile = 'sound/piano/Fn7.ogg' - if("F#7") soundfile = 'sound/piano/F#7.ogg' - if("Gb7") soundfile = 'sound/piano/Gb7.ogg' - if("Gn7") soundfile = 'sound/piano/Gn7.ogg' - if("G#7") soundfile = 'sound/piano/G#7.ogg' - if("Ab7") soundfile = 'sound/piano/Ab7.ogg' - if("An7") soundfile = 'sound/piano/An7.ogg' - if("A#7") soundfile = 'sound/piano/A#7.ogg' - if("Bb7") soundfile = 'sound/piano/Bb7.ogg' - if("Bn7") soundfile = 'sound/piano/Bn7.ogg' - if("B#7") soundfile = 'sound/piano/B#7.ogg' - if("Cb8") soundfile = 'sound/piano/Cb8.ogg' - if("Cn8") soundfile = 'sound/piano/Cn8.ogg' - if("C#8") soundfile = 'sound/piano/C#8.ogg' - if("Db8") soundfile = 'sound/piano/Db8.ogg' - if("Dn8") soundfile = 'sound/piano/Dn8.ogg' - if("D#8") soundfile = 'sound/piano/D#8.ogg' - if("Eb8") soundfile = 'sound/piano/Eb8.ogg' - if("En8") soundfile = 'sound/piano/En8.ogg' - if("E#8") soundfile = 'sound/piano/E#8.ogg' - if("Fb8") soundfile = 'sound/piano/Fb8.ogg' - if("Fn8") soundfile = 'sound/piano/Fn8.ogg' - if("F#8") soundfile = 'sound/piano/F#8.ogg' - if("Gb8") soundfile = 'sound/piano/Gb8.ogg' - if("Gn8") soundfile = 'sound/piano/Gn8.ogg' - if("G#8") soundfile = 'sound/piano/G#8.ogg' - if("Ab8") soundfile = 'sound/piano/Ab8.ogg' - if("An8") soundfile = 'sound/piano/An8.ogg' - if("A#8") soundfile = 'sound/piano/A#8.ogg' - if("Bb8") soundfile = 'sound/piano/Bb8.ogg' - if("Bn8") soundfile = 'sound/piano/Bn8.ogg' - if("B#8") soundfile = 'sound/piano/B#8.ogg' - if("Cb9") soundfile = 'sound/piano/Cb9.ogg' - if("Cn9") soundfile = 'sound/piano/Cn9.ogg' - else return - - //hearers(15, src) << sound(soundfile) - var/turf/source = get_turf(src) - for(var/mob/M in hearers(15, source)) - M.playsound_local(source, file(soundfile), 100, falloff = 5) - - -/obj/structure/device/piano/proc/playsong() - do +/datum/song/proc/playsong(mob/user) + while(repeat >= 0) var/cur_oct[7] var/cur_acc[7] for(var/i = 1 to 7) - cur_oct[i] = "3" + cur_oct[i] = 3 cur_acc[i] = "n" - for(var/line in song.lines) - //world << line + for(var/line in lines) for(var/beat in splittext(lowertext(line), ",")) //world << "beat: [beat]" var/list/notes = splittext(beat, "/") for(var/note in splittext(notes[1], "-")) - //world << "note: [note]" - if(!playing || !anchored)//If the piano is playing, or is loose + if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case playing = 0 return if(lentext(note) == 0) @@ -259,49 +118,47 @@ else if(ni == "s") cur_acc[cur_note] = "#" // so shift is never required else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) + cur_oct[cur_note] = text2num(ni) + playnote(cur_note, cur_acc[cur_note], cur_oct[cur_note]) if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) + sleep(sanitize_tempo(tempo / text2num(notes[2]))) else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) + sleep(tempo) + repeat-- playing = 0 - updateUsrDialog() + repeat = 0 + updateDialog(user) -/obj/structure/device/piano/attack_hand(var/mob/user as mob) - if(!anchored) - return - - usr.machine = src - var/dat = "Piano" - - if(song) - if(song.lines.len > 0 && !(playing)) - dat += "Play Song

" - dat += "Repeat Song: [repeat] times.

" - if(playing) - dat += "Stop Playing
" - dat += "Repeats left: [repeat].

" +/datum/song/proc/interact(mob/user) + var/dat = "" + if(lines.len > 0) + dat += "

Playback

" + if(!playing) + dat += {"Play Stop

+ Repeat Song: + [repeat > 0 ? "--" : "--"] + [repeat] times + [repeat < max_repeats ? "++" : "++"] +
"} + else + dat += {"Play Stop
+ Repeats left: [repeat]
"} if(!edit) - dat += "Show Editor

" + dat += "
Show Editor
" else - dat += "Hide Editor
" - dat += "Start a New Song
" - dat += "Import a Song

" - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" + var/bpm = round(600 / tempo) + dat += {"

Editing

+ Hide Editor + Start a New Song + Import a Song

+ Tempo: - [bpm] BPM +

"} + var/linecount = 0 + for(var/line in lines) + linecount += 1 + dat += "Line [linecount]: Edit X [line]
" + dat += "Add Line

" if(help) - dat += "Hide Help
" - dat += {" + dat += {"Hide Help
Lines are a series of chords, separated by commas (,), each with notes seperated by hyphens (-).
Every note in a chord will play together, with chord timed by the tempo.

@@ -313,120 +170,183 @@ A pause may be denoted by an empty chord: C,E,,C,G
To make a chord be a different time, end it with /x, where the chord length will be length
defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,/2,G#/8,B/8,E3-E4/4 + Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
Lines may be up to 50 characters.
A song may only contain up to 50 lines.
"} else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=piano;size=700x300") - onclose(user, "piano") + dat += "Show Help
" + var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(instrumentObj.icon, instrumentObj.icon_state)) + popup.open() -/obj/structure/device/piano/Topic(href, href_list) +/datum/song/Topic(href, href_list) + if(!instrumentObj.Adjacent(usr) || usr.stat) + usr << browse(null, "window=instrument") + usr.unset_machine() + return + instrumentObj.add_fingerprint(usr) + if(href_list["newsong"]) + lines = new() + tempo = sanitize_tempo(5) // default 120 BPM + name = "" + else if(href_list["import"]) + var/t = "" + do + t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) + if(!in_range(instrumentObj, usr)) + return + if(lentext(t) >= INSTRUMENT_MAX_LINE_LENGTH*INSTRUMENT_MAX_LINE_NUMBER) + var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") + if(cont == "no") + break + while(lentext(t) > INSTRUMENT_MAX_LINE_LENGTH*INSTRUMENT_MAX_LINE_NUMBER) + //split into lines + spawn() + lines = splittext(t, "\n") + if(copytext(lines[1],1,6) == "BPM: ") + tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6))) + lines.Cut(1,2) + else + tempo = sanitize_tempo(5) // default 120 BPM + if(lines.len > INSTRUMENT_MAX_LINE_NUMBER) + usr << "Too many lines!" + lines.Cut(INSTRUMENT_MAX_LINE_NUMBER+1) + var/linenum = 1 + for(var/l in lines) + if(lentext(l) > INSTRUMENT_MAX_LINE_LENGTH) + usr << "Line [linenum] too long!" + lines.Remove(l) + else + linenum++ + updateDialog(usr) // make sure updates when complete + else if(href_list["help"]) + help = text2num(href_list["help"]) - 1 + else if(href_list["edit"]) + edit = text2num(href_list["edit"]) - 1 + if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. + if(playing) + return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. + repeat += round(text2num(href_list["repeat"])) + if(repeat < 0) + repeat = 0 + if(repeat > max_repeats) + repeat = max_repeats + else if(href_list["tempo"]) + tempo = sanitize_tempo(tempo + text2num(href_list["tempo"])) + else if(href_list["play"]) + playing = 1 + spawn() + playsong(usr) + else if(href_list["newline"]) + var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null) + if(!newline || !in_range(instrumentObj, usr)) + return + if(lines.len > INSTRUMENT_MAX_LINE_NUMBER) + return + if(lentext(newline) > INSTRUMENT_MAX_LINE_LENGTH) + newline = copytext(newline, 1, INSTRUMENT_MAX_LINE_LENGTH) + lines.Add(newline) + else if(href_list["deleteline"]) + var/num = round(text2num(href_list["deleteline"])) + if(num > lines.len || num < 1) + return + lines.Cut(num, num+1) + else if(href_list["modifyline"]) + var/num = round(text2num(href_list["modifyline"]),1) + var/content = html_encode(input("Enter your line: ", instrumentObj.name, lines[num]) as text|null) + if(!content || !in_range(instrumentObj, usr)) + return + if(lentext(content) > INSTRUMENT_MAX_LINE_LENGTH) + content = copytext(content, 1, INSTRUMENT_MAX_LINE_LENGTH) + if(num > lines.len || num < 1) + return + lines[num] = content + else if(href_list["stop"]) + playing = 0 + updateDialog(usr) + return - if(!in_range(src, usr) || issilicon(usr) || !anchored || !usr.canmove || usr.restrained()) - usr << browse(null, "window=piano;size=700x300") - onclose(usr, "piano") +/datum/song/proc/sanitize_tempo(new_tempo) + new_tempo = abs(new_tempo) + return max(round(new_tempo, world.tick_lag), world.tick_lag) + +// subclass for handheld instruments, like violin +/datum/song/handheld + +/datum/song/handheld/updateDialog(mob/user) + instrumentObj.interact(user) + +/datum/song/handheld/shouldStopPlaying() + if(instrumentObj) + return !isliving(instrumentObj.loc) + else + return 1 + +////////////////////////////////////////////////////////////////////////// +/obj/structure/device/piano + name = "space piano" + desc = "This is a space piano; just like a regular piano, but always in tune! Even if the musician isn't." + icon = 'icons/obj/musician.dmi' + icon_state = "piano" + anchored = 1 + density = 1 + var/datum/song/song + +/obj/structure/device/piano/minimoog + name = "space minimoog" + icon_state = "minimoog" + desc = "This is a minimoog; just like a space piano, but more spacey!" + +/obj/structure/device/piano/New() + ..() + song = new("piano", src) + + if(prob(50)) + name = "space minimoog" + desc = "This is a minimoog, like a space piano, but more spacey!" + icon_state = "minimoog" + else + name = "space piano" + desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't." + icon_state = "piano" + +/obj/structure/device/piano/Destroy() + qdel(song) + song = null + ..() + +/obj/structure/device/piano/verb/rotate() + set name = "Rotate Piano" + set category = "Object" + set src in oview(1) + + if(istype(usr,/mob/living/simple_mob/animal/passive/mouse)) + return + else if(!usr || !isturf(usr.loc)) + return + else if(usr.stat || usr.restrained()) + return + else if (istype(usr,/mob/observer/ghost) && !config.ghost_interaction) + return + else + src.set_dir(turn(src.dir, 90)) return - if(href_list["newsong"]) - song = new() - else if(song) - if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops. - if(playing) return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) +/obj/structure/device/piano/attack_hand(mob/user) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return 1 + interact(user) - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 +/obj/structure/device/piano/interact(mob/user) + if(!user || !anchored) + return - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "Piano") as text|null) - if(!newline) - return - if(song.lines.len > 50) - return - if(lentext(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "Piano", song.lines[num]) as text|null) - if(!content) - return - if(lentext(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", src.name), t) as message) - if (!in_range(src, usr)) - return - - if(lentext(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(lentext(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - usr << "Too many lines!" - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(lentext(l) > 50) - usr << "Line [linenum] too long!" - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - updateUsrDialog() - - add_fingerprint(usr) - updateUsrDialog() - return + user.set_machine(src) + song.interact(user) /obj/structure/device/piano/attackby(obj/item/O as obj, mob/user as mob) if(O.is_wrench()) diff --git a/code/game/objects/structures/props/nest.dm b/code/game/objects/structures/props/nest.dm new file mode 100644 index 0000000000..c23f7f3a86 --- /dev/null +++ b/code/game/objects/structures/props/nest.dm @@ -0,0 +1,67 @@ +/obj/structure/prop/nest + name = "diyaab den" + desc = "A den of some creature." + icon = 'icons/obj/structures.dmi' + icon_state = "bonfire" + density = TRUE + anchored = TRUE + interaction_message = "You feel like you shouldn't be sticking your nose into a wild animal's den." + + var/disturbance_spawn_chance = 20 + var/last_spawn + var/spawn_delay = 150 + var/randomize_spawning = FALSE + var/creature_types = list(/mob/living/simple_mob/animal/sif/diyaab) + var/list/den_mobs + var/den_faction //The faction of any spawned creatures. + var/max_creatures = 3 //Maximum number of living creatures this nest can have at one time. + + var/tally = 0 //The counter referenced against total_creature_max, or just to see how many mobs it has spawned. + var/total_creature_max //If set, it can spawn this many creatures, total, ever. + +/obj/structure/prop/nest/initialize() + ..() + den_mobs = list() + processing_objects |= src + last_spawn = world.time + if(randomize_spawning) //Not the biggest shift in spawntime, but it's here. + var/delayshift_clamp = spawn_delay / 10 + var/delayshift = rand(delayshift_clamp, -1 * delayshift_clamp) + spawn_delay += delayshift + +/obj/structure/prop/nest/Destroy() + den_mobs = null + processing_objects -= src + ..() + +/obj/structure/prop/nest/attack_hand(mob/living/user) // Used to tell the player that this isn't useful for anything. + ..() + if(user && prob(disturbance_spawn_chance)) + spawn_creature(get_turf(src)) + +/obj/structure/prop/nest/process() + update_creatures() + if(world.time > last_spawn + spawn_delay) + spawn_creature(get_turf(src)) + +/obj/structure/prop/nest/proc/spawn_creature(var/turf/spawnpoint) + update_creatures() //Paranoia. + if(total_creature_max && tally >= total_creature_max) + return + if(istype(spawnpoint) && den_mobs.len < max_creatures) + last_spawn = world.time + var/spawn_choice = pick(creature_types) + var/mob/living/L = new spawn_choice + if(den_faction) + L.faction = den_faction + visible_message("\The [L] crawls out of \the [src].") + den_mobs += L + tally++ + +/obj/structure/prop/nest/proc/remove_creature(var/mob/target) + den_mobs -= target + +/obj/structure/prop/nest/proc/update_creatures() + for(var/mob/living/L in den_mobs) + if(L.stat == 2) + remove_creature(L) diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index c9a4babd9e..6cb93ab530 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -34,11 +34,9 @@ continue if(SA == target) // We (presumably) already hit the target before cleave() was called. orange() should prevent this but just to be safe... continue - if(user.faction == SA.faction) // Avoid friendly fire. - continue if(!SA.Adjacent(user) || !SA.Adjacent(target)) // Cleaving only hits mobs near the target mob and user. continue - if(resolve_attackby(SA, user)) // Hit them with the weapon. This won't cause recursive cleaving due to the cleaving variable being set to true. + if(resolve_attackby(SA, user, attack_modifier = 0.5)) // Hit them with the weapon. This won't cause recursive cleaving due to the cleaving variable being set to true. hit_mobs++ cleave_visual(user, target) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 70cacfba2c..02c6d0d8dc 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -150,6 +150,11 @@ if(is_hot(W)) burn(is_hot(W)) + if(istype(W, /obj/item/device/electronic_assembly/wallmount)) + var/obj/item/device/electronic_assembly/wallmount/IC = W + IC.mount_assembly(src, user) + return + if(istype(W, /obj/item/stack/tile/roofing)) var/expended_tile = FALSE // To track the case. If a ceiling is built in a multiz zlevel, it also necessarily roofs it against weather var/turf/T = GetAbove(src) diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index bef279fc77..9048bb5a49 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -23,7 +23,7 @@ /turf/simulated/wall/cult icon_state = "cult" /turf/simulated/wall/cult/New(var/newloc) - ..(newloc,"cult","cult2") + ..(newloc,"cult","cult2","cult") /turf/unsimulated/wall/cult name = "cult wall" desc = "Hideous images dance beneath the surface." diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 554bdf92e5..6adb122d4a 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -1,99 +1,99 @@ -/client/proc/admin_lightning_strike() - set name = "Lightning Strike" - set desc = "Causes lightning to strike on your tile. This will hurt things on or nearby it severely." - set category = "Fun" - - if(!check_rights(R_FUN)) - return - - var/result = alert(src, "Really strike your tile with lightning?", "Confirm Badmin" , "No", "Yes (Cosmetic)", "Yes (Real)") - - if(result == "No") - return - var/fake_lightning = result == "Yes (Cosmetic)" - - lightning_strike(get_turf(usr), fake_lightning) - log_and_message_admins("[key_name(src)] has caused [fake_lightning ? "cosmetic":"harmful"] lightning to strike at their position ([src.mob.x], [src.mob.y], [src.mob.z]). \ - (JMP)") - -#define LIGHTNING_REDIRECT_RANGE 28 // How far in tiles certain things draw lightning from. -#define LIGHTNING_ZAP_RANGE 3 // How far the tesla effect zaps, as well as the bad effects from a direct strike. -#define LIGHTNING_POWER 20000 // How much 'zap' is in a strike, used for tesla_zap(). - -// The real lightning proc. -// This is global until I can figure out a better place for it. -// T is the turf that is being struck. If cosmetic is true, the lightning won't actually hurt anything. -/proc/lightning_strike(turf/T, cosmetic = FALSE) - // First, visuals. - - // Do a lightning flash for the whole planet, if the turf belongs to a planet. - var/datum/planet/P = null - P = SSplanets.z_to_planet[T.z] - if(P) - var/datum/weather_holder/holder = P.weather_holder - flick("lightning_flash", holder.special_visuals) - - // Before we do the other visuals, we need to see if something is going to hijack our intended target. - var/obj/machinery/power/grounding_rod/ground = null // Most of the bad effects of lightning will get negated if a grounding rod is nearby. - var/obj/machinery/power/tesla_coil/coil = null // However a tesla coil has higher priority and the strike will bounce. - - for(var/obj/machinery/power/thing in range(LIGHTNING_REDIRECT_RANGE, T)) - if(istype(thing, /obj/machinery/power/tesla_coil)) - var/turf/simulated/coil_turf = get_turf(thing) - if(istype(coil_turf) && thing.anchored && coil_turf.outdoors) - coil = thing - break - - if(istype(thing, /obj/machinery/power/grounding_rod)) - var/turf/simulated/rod_turf = get_turf(thing) - if(istype(rod_turf) && thing.anchored && rod_turf.outdoors) - ground = thing - - if(coil) // Coil gets highest priority. - T = coil.loc - else if(ground) - T = ground.loc - - // Now make the lightning strike sprite. It will fade and delete itself in a second. - new /obj/effect/temporary_effect/lightning_strike(T) - - // For those close up. - playsound(T, 'sound/effects/lightningbolt.ogg', 100, 1) - - // And for those far away. If the strike happens on a planet, everyone on the planet will hear it. - // Otherwise only those on the current z-level will hear it. - var/sound = get_sfx("thunder") - for(var/mob/M in player_list) - if((P && M.z in P.expected_z_levels) || M.z == T.z) - M.playsound_local(get_turf(M), soundin = sound, vol = 70, vary = FALSE, is_global = TRUE) - - if(cosmetic) // Everything beyond here involves potentially damaging things. If we don't want to do that, stop now. - return - - if(ground) // All is well. - ground.tesla_act(LIGHTNING_POWER, FALSE) - return - - else if(coil) // Otherwise lets bounce off the tesla coil. - coil.tesla_act(LIGHTNING_POWER, TRUE) - - else // Striking the turf directly. - tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE) - - // Some extra effects. - // Some apply to those within zap range, others if they were a bit farther away. - for(var/mob/living/L in view(5, T)) - if(get_dist(L, T) <= LIGHTNING_ZAP_RANGE) // They probably got zapped. - L.lightning_act() - - // Deafen them. - if(L.get_ear_protection() < 2) - L.AdjustSleeping(-100) - if(iscarbon(L)) - var/mob/living/carbon/C = L - C.ear_deaf += 10 - to_chat(L, span("danger", "Lightning struck nearby, and the thunderclap is deafening!")) - -#undef GROUNDING_ROD_RANGE -#undef LIGHTNING_ZAP_RANGE -#undef LIGHTNING_POWER \ No newline at end of file +/client/proc/admin_lightning_strike() + set name = "Lightning Strike" + set desc = "Causes lightning to strike on your tile. This will hurt things on or nearby it severely." + set category = "Fun" + + if(!check_rights(R_FUN)) + return + + var/result = alert(src, "Really strike your tile with lightning?", "Confirm Badmin" , "No", "Yes (Cosmetic)", "Yes (Real)") + + if(result == "No") + return + var/fake_lightning = result == "Yes (Cosmetic)" + + lightning_strike(get_turf(usr), fake_lightning) + log_and_message_admins("[key_name(src)] has caused [fake_lightning ? "cosmetic":"harmful"] lightning to strike at their position ([src.mob.x], [src.mob.y], [src.mob.z]). \ + (JMP)") + +#define LIGHTNING_REDIRECT_RANGE 28 // How far in tiles certain things draw lightning from. +#define LIGHTNING_ZAP_RANGE 3 // How far the tesla effect zaps, as well as the bad effects from a direct strike. +#define LIGHTNING_POWER 20000 // How much 'zap' is in a strike, used for tesla_zap(). + +// The real lightning proc. +// This is global until I can figure out a better place for it. +// T is the turf that is being struck. If cosmetic is true, the lightning won't actually hurt anything. +/proc/lightning_strike(turf/T, cosmetic = FALSE) + // First, visuals. + + // Do a lightning flash for the whole planet, if the turf belongs to a planet. + var/datum/planet/P = null + P = SSplanets.z_to_planet[T.z] + if(P) + var/datum/weather_holder/holder = P.weather_holder + flick("lightning_flash", holder.special_visuals) + + // Before we do the other visuals, we need to see if something is going to hijack our intended target. + var/obj/machinery/power/grounding_rod/ground = null // Most of the bad effects of lightning will get negated if a grounding rod is nearby. + var/obj/machinery/power/tesla_coil/coil = null // However a tesla coil has higher priority and the strike will bounce. + + for(var/obj/machinery/power/thing in range(LIGHTNING_REDIRECT_RANGE, T)) + if(istype(thing, /obj/machinery/power/tesla_coil)) + var/turf/simulated/coil_turf = get_turf(thing) + if(istype(coil_turf) && thing.anchored && coil_turf.outdoors) + coil = thing + break + + if(istype(thing, /obj/machinery/power/grounding_rod)) + var/turf/simulated/rod_turf = get_turf(thing) + if(istype(rod_turf) && thing.anchored && rod_turf.outdoors) + ground = thing + + if(coil) // Coil gets highest priority. + T = coil.loc + else if(ground) + T = ground.loc + + // Now make the lightning strike sprite. It will fade and delete itself in a second. + new /obj/effect/temporary_effect/lightning_strike(T) + + // For those close up. + playsound(T, 'sound/effects/lightningbolt.ogg', 100, 1) + + // And for those far away. If the strike happens on a planet, everyone on the planet will hear it. + // Otherwise only those on the current z-level will hear it. + var/sound = get_sfx("thunder") + for(var/mob/M in player_list) + if((P && M.z in P.expected_z_levels) || M.z == T.z) + M.playsound_local(get_turf(M), soundin = sound, vol = 70, vary = FALSE, is_global = TRUE) + + if(cosmetic) // Everything beyond here involves potentially damaging things. If we don't want to do that, stop now. + return + + if(ground) // All is well. + ground.tesla_act(LIGHTNING_POWER, FALSE) + return + + else if(coil) // Otherwise lets bounce off the tesla coil. + coil.tesla_act(LIGHTNING_POWER, TRUE) + + else // Striking the turf directly. + tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE) + + // Some extra effects. + // Some apply to those within zap range, others if they were a bit farther away. + for(var/mob/living/L in view(5, T)) + if(get_dist(L, T) <= LIGHTNING_ZAP_RANGE) // They probably got zapped. + L.lightning_act() + + // Deafen them. + if(L.get_ear_protection() < 2) + L.AdjustSleeping(-100) + if(iscarbon(L)) + var/mob/living/carbon/C = L + C.ear_deaf += 10 + to_chat(L, span("danger", "Lightning struck nearby, and the thunderclap is deafening!")) + +#undef GROUNDING_ROD_RANGE +#undef LIGHTNING_ZAP_RANGE +#undef LIGHTNING_POWER diff --git a/code/modules/admin/verbs/map_template_loadverb.dm b/code/modules/admin/verbs/map_template_loadverb.dm index 7fde6c58e1..d0504e0223 100644 --- a/code/modules/admin/verbs/map_template_loadverb.dm +++ b/code/modules/admin/verbs/map_template_loadverb.dm @@ -10,13 +10,17 @@ return template = map_templates[map] + var/orientation = text2dir(input(usr, "Choose an orientation for this Map Template.", "Orientation") as null|anything in list("North", "South", "East", "West")) + if(!orientation) + return + var/turf/T = get_turf(mob) if(!T) return var/list/preview = list() - template.preload_size(template.mappath) - for(var/S in template.get_affected_turfs(T,centered = TRUE)) + template.preload_size(template.mappath, orientation) + for(var/S in template.get_affected_turfs(T,centered = TRUE, orientation=orientation)) preview += image('icons/misc/debug_group.dmi',S ,"red") usr.client.images += preview if(alert(usr,"Confirm location.", "Template Confirm","No","Yes") == "Yes") @@ -25,7 +29,7 @@ usr.client.images -= preview return - if(template.load(T, centered = TRUE)) + if(template.load(T, centered = TRUE, orientation=orientation)) message_admins("[key_name_admin(usr)] has placed a map template ([template.name]).") else to_chat(usr, "Failed to place map") @@ -41,14 +45,18 @@ if(!map) return template = map_templates[map] - - if(template.width > world.maxx || template.height > world.maxy) + + var/orientation = text2dir(input(usr, "Choose an orientation for this Map Template.", "Orientation") as null|anything in list("North", "South", "East", "West")) + if(!orientation) + return + + if(((orientation & (NORTH|SOUTH) && template.width > world.maxx || template.height > world.maxy) || ((orientation & (EAST|WEST)) && template.width > world.maxy || template.height > world.maxx))) if(alert(usr,"This template is larger than the existing z-levels. It will EXPAND ALL Z-LEVELS to match the size of the template. This may cause chaos. Are you sure you want to do this?","DANGER!!!","Cancel","Yes") == "Cancel") to_chat(usr,"Template placement aborted.") return - + if(alert(usr,"Confirm map load.", "Template Confirm","No","Yes") == "Yes") - if(template.load_new_z()) + if(template.load_new_z(orientation=orientation)) message_admins("[key_name_admin(usr)] has placed a map template ([template.name]) on Z level [world.maxz].") else to_chat(usr, "Failed to place map") diff --git a/code/modules/blob2/blobs/base_blob.dm b/code/modules/blob2/blobs/base_blob.dm index 19461e68c8..e70587c5a3 100644 --- a/code/modules/blob2/blobs/base_blob.dm +++ b/code/modules/blob2/blobs/base_blob.dm @@ -51,6 +51,15 @@ var/list/blobs = list() return TRUE if(istype(mover) && mover.checkpass(PASSBLOB)) return TRUE + else if(istype(mover, /mob/living)) + var/mob/living/L = mover + if(L.faction == "blob") + return TRUE + else if(istype(mover, /obj/item/projectile)) + var/obj/item/projectile/P = mover + if(P.firer && P.firer.faction == "blob") + return TRUE + return FALSE else return FALSE // return ..() @@ -248,6 +257,9 @@ var/list/blobs = list() if(!P) return + if(P.firer && P.firer.faction == "blob") + return + var/damage = P.get_structure_damage() // So tasers don't hurt the blob. if(!damage) return diff --git a/code/modules/blob2/blobs/core.dm b/code/modules/blob2/blobs/core.dm index 7e2fe741cf..fc4cbc7967 100644 --- a/code/modules/blob2/blobs/core.dm +++ b/code/modules/blob2/blobs/core.dm @@ -38,6 +38,9 @@ var/list/blob_cores = list() /obj/structure/blob/core/grey_goo desired_blob_type = /datum/blob_type/grey_goo +/obj/structure/blob/core/fabrication_swarm + desired_blob_type = /datum/blob_type/fabrication_swarm + /obj/structure/blob/core/electromagnetic_web desired_blob_type = /datum/blob_type/electromagnetic_web @@ -71,6 +74,9 @@ var/list/blob_cores = list() /obj/structure/blob/core/radioactive_ooze desired_blob_type = /datum/blob_type/radioactive_ooze +/obj/structure/blob/core/volatile_alluvium + desired_blob_type = /datum/blob_type/volatile_alluvium + /obj/structure/blob/core/classic desired_blob_type = /datum/blob_type/classic diff --git a/code/modules/blob2/blobs/factory.dm b/code/modules/blob2/blobs/factory.dm index 6cd8bfa0f2..9577f3c14e 100644 --- a/code/modules/blob2/blobs/factory.dm +++ b/code/modules/blob2/blobs/factory.dm @@ -16,8 +16,10 @@ /obj/structure/blob/factory/Destroy() for(var/mob/living/simple_animal/hostile/blob/spore/spore in spores) - if(spore.factory == src) + if(istype(spore) && spore.factory == src) spore.factory = null + else + spore.nest = null spores = null return ..() @@ -32,6 +34,21 @@ var/mob/living/simple_animal/hostile/blob/spore/S = null if(overmind) S = new overmind.blob_type.spore_type(src.loc, src) - S.overmind = overmind + S.faction = "blob" + if(istype(S)) + S.overmind = overmind + overmind.blob_mobs.Add(S) + if(overmind.blob_type.ranged_spores) + S.ranged = TRUE + S.projectiletype = overmind.blob_type.spore_projectile + S.projectilesound = overmind.blob_type.spore_firesound + S.shoot_range = overmind.blob_type.spore_range + else //Other mobs don't add themselves in New. Ew. + S.nest = src + spores += S S.update_icons() - overmind.blob_mobs.Add(S) \ No newline at end of file + +/obj/structure/blob/factory/sluggish // Capable of producing MORE spores, but quite a bit slower than normal. + name = "sluggish factory blob" + max_spores = 4 + spore_cooldown = 16 SECONDS diff --git a/code/modules/blob2/blobs/resource.dm b/code/modules/blob2/blobs/resource.dm index f8ff4e48e4..189abfd520 100644 --- a/code/modules/blob2/blobs/resource.dm +++ b/code/modules/blob2/blobs/resource.dm @@ -7,6 +7,7 @@ max_integrity = 40 point_return = 15 var/resource_delay = 0 + var/resource_cooldown = 4 SECONDS /obj/structure/blob/resource/New(var/newloc, var/new_overmind) ..(newloc, new_overmind) @@ -25,6 +26,12 @@ flick("blob_resource_glow", src) if(overmind) overmind.add_points(1) - resource_delay = world.time + 4 SECONDS + (overmind.resource_blobs.len * 2.5) //4 seconds plus a quarter second for each resource blob the overmind has + resource_delay = world.time + resource_cooldown + (overmind.resource_blobs.len * 2.5) //4 seconds plus a quarter second for each resource blob the overmind has else - resource_delay = world.time + 4 SECONDS \ No newline at end of file + resource_delay = world.time + resource_cooldown + +/obj/structure/blob/resource/sluggish // Tankier, but really slow. + name = "sluggish resource blob" + desc = "A thin spire of occasionally convulsing tendrils." + max_integrity = 80 + resource_cooldown = 8 SECONDS diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm index 9b12c4c873..8ba73eb1e6 100644 --- a/code/modules/blob2/overmind/overmind.dm +++ b/code/modules/blob2/overmind/overmind.dm @@ -94,4 +94,4 @@ var/list/overminds = list() if(blob_points >= 100) if(!auto_factory() && !auto_resource()) - auto_node() \ No newline at end of file + auto_node() diff --git a/code/modules/blob2/overmind/powers.dm b/code/modules/blob2/overmind/powers.dm index 35a6a9e9c7..360bfbb10b 100644 --- a/code/modules/blob2/overmind/powers.dm +++ b/code/modules/blob2/overmind/powers.dm @@ -45,7 +45,7 @@ create_shield() /mob/observer/blob/proc/create_shield(turf/T) - createSpecial(15, /obj/structure/blob/shield, 0, 0, T) + createSpecial(15, blob_type.shield_type, 0, 0, T) /mob/observer/blob/verb/create_resource() set category = "Blob" @@ -55,7 +55,7 @@ if(!blob_type.can_build_resources) return FALSE - createSpecial(40, /obj/structure/blob/resource, 4, 1) + createSpecial(40, blob_type.resource_type, 4, 1) /mob/observer/blob/verb/auto_resource() set category = "Blob" @@ -85,7 +85,7 @@ if(B) forceMove(B.loc) - return createSpecial(40, /obj/structure/blob/resource, 4, 1, B.loc) + return createSpecial(40, blob_type.resource_type, 4, 1, B.loc) /mob/observer/blob/verb/create_factory() @@ -96,7 +96,7 @@ if(!blob_type.can_build_factories) return FALSE - createSpecial(60, /obj/structure/blob/factory, 7, 1) + createSpecial(60, blob_type.factory_type, 7, 1) /mob/observer/blob/verb/auto_factory() set category = "Blob" @@ -126,7 +126,7 @@ if(B) forceMove(B.loc) - return createSpecial(60, /obj/structure/blob/factory, 7, 1, B.loc) + return createSpecial(60, blob_type.factory_type, 7, 1, B.loc) @@ -138,7 +138,7 @@ if(!blob_type.can_build_nodes) return FALSE - createSpecial(100, /obj/structure/blob/node, 5, 0) + createSpecial(100, blob_type.node_type, 5, 0) /mob/observer/blob/verb/auto_node() set category = "Blob" @@ -166,7 +166,7 @@ if(B) forceMove(B.loc) - return createSpecial(100, /obj/structure/blob/node, 5, 0, B.loc) + return createSpecial(100, blob_type.node_type, 5, 0, B.loc) diff --git a/code/modules/blob2/overmind/types.dm b/code/modules/blob2/overmind/types.dm index 0cc3683489..141a34a149 100644 --- a/code/modules/blob2/overmind/types.dm +++ b/code/modules/blob2/overmind/types.dm @@ -33,6 +33,15 @@ var/can_build_nodes = TRUE // Ditto, for nodes. var/spore_type = /mob/living/simple_animal/hostile/blob/spore + var/ranged_spores = FALSE // For proper spores of the type above. + var/spore_firesound = 'sound/effects/slime_squish.ogg' + var/spore_range = 7 // The range the spore can fire. + var/spore_projectile = /obj/item/projectile/energy/blob + + var/factory_type = /obj/structure/blob/factory + var/resource_type = /obj/structure/blob/resource + var/node_type = /obj/structure/blob/node + var/shield_type = /obj/structure/blob/shield // Called when a blob receives damage. This needs to return the final damage or blobs will be immortal. /datum/blob_type/proc/on_received_damage(var/obj/structure/blob/B, damage, damage_type) @@ -82,13 +91,49 @@ slow_spread_with_size = FALSE ai_aggressiveness = 80 can_build_resources = TRUE - attack_message = "The tide tries to shallow you" + attack_message = "The tide tries to swallow you" attack_message_living = ", and you feel your skin dissolve" attack_message_synth = ", and your external plating dissolves" /datum/blob_type/grey_goo/on_emp(obj/structure/blob/B, severity) B.adjust_integrity(-(20 / severity)) +// Slow, tanky blobtype which uses not spores, but hivebots, as its soldiers. +/datum/blob_type/fabrication_swarm + name = "iron tide" + desc = "A swarm of self replicating construction nanites. Incredibly illegal, but only mildly dangerous." + effect_desc = "Slow-spreading, but incredibly resiliant. It has a chance to harden itself against attacks automatically for no resource cost, and uses cheaply-constructed hivebots as soldiers." + ai_desc = "defensive" + difficulty = BLOB_DIFFICULTY_MEDIUM // Emitters are okay, EMP is great. + color = "#666666" + complementary_color = "#B7410E" + spread_modifier = 0.2 + can_build_factories = TRUE + can_build_resources = TRUE + attack_message = "The tide tries to shove you away" + attack_message_living = ", and your skin itches" + attack_message_synth = ", and your external plating dulls" + attack_verb = "shoves" + armor_pen = 40 + damage_lower = 10 + damage_upper = 25 + brute_multiplier = 0.25 + burn_multiplier = 0.6 + ai_aggressiveness = 50 //Really doesn't like you near it. + spore_type = /mob/living/simple_mob/mechanical/hivebot/swarm + +/datum/blob_type/fabrication_swarm/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) + if(istype(B, /obj/structure/blob/normal)) + if(damage > 0) + var/reinforce_probability = min(damage, 70) + if(prob(reinforce_probability)) + B.visible_message("The [name] quakes, before rapidly hardening!") + new/obj/structure/blob/shield(get_turf(B), B.overmind) + qdel(B) + return ..() + +/datum/blob_type/fabrication_swarm/on_emp(obj/structure/blob/B, severity) + B.adjust_integrity(-(30 / severity)) // A blob meant to be fought like a fire. /datum/blob_type/blazing_oil @@ -218,17 +263,23 @@ /datum/blob_type/fulminant_organism/on_expand(var/obj/structure/blob/B, var/obj/structure/blob/new_B, var/turf/T, var/mob/observer/blob/O) if(prob(10)) // 10% chance to make a weak spore when expanding. var/mob/living/simple_animal/hostile/blob/S = new spore_type(T) - S.overmind = O + if(istype(S)) + S.overmind = O + O.blob_mobs.Add(S) + else + S.faction = "blob" S.update_icons() - O.blob_mobs.Add(S) /datum/blob_type/fulminant_organism/on_death(obj/structure/blob/B) if(prob(33)) // 33% chance to make a spore when dying. var/mob/living/simple_animal/hostile/blob/S = new spore_type(get_turf(B)) - B.visible_message("A spore floats free from the [name]!") - S.overmind = B.overmind + B.visible_message("\The [S] floats free from the [name]!") + if(istype(S)) + S.overmind = B.overmind + B.overmind.blob_mobs.Add(S) + else + S.faction = "blob" S.update_icons() - B.overmind.blob_mobs.Add(S) // Auto-retaliates against melee attacks. Weak to projectiles. @@ -542,4 +593,52 @@ attack_verb = "splashes" /datum/blob_type/radioactive_ooze/on_pulse(var/obj/structure/blob/B) - radiation_repository.radiate(B, 200) \ No newline at end of file + radiation_repository.radiate(B, 200) + +/datum/blob_type/volatile_alluvium + name = "volatile alluvium" + desc = "A churning, earthy mass that moves in waves." + ai_desc = "earthen" + effect_desc = "Moves slowly, producing weak ranged spores to defend itself, and inflicts brute attacks. Attempts to disarm nearby attackers. Weak to water." + difficulty = BLOB_DIFFICULTY_HARD //Slow-starting, but can be overwhelming if left alone. + color = "#6B481E" + complementary_color = "#7F471F" + damage_lower = 10 + damage_upper = 20 + armor_pen = 40 + brute_multiplier = 0.7 + burn_multiplier = 0.5 + spread_modifier = 0.5 + ai_aggressiveness = 50 + attack_message = "The alluvium crashes against you" + attack_verb = "crashes against" + can_build_factories = TRUE + can_build_resources = TRUE + spore_type = /mob/living/simple_animal/hostile/blob/spore/weak + ranged_spores = TRUE + spore_range = 3 + spore_projectile = /obj/item/projectile/energy/blob/splattering + factory_type = /obj/structure/blob/factory/sluggish + resource_type = /obj/structure/blob/resource/sluggish + +/datum/blob_type/volatile_alluvium/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) + if(damage > 0 && attacker && get_dist(B, attacker) <= 2 && prob(min(damage, 70)) && istype(attacker, /mob/living/carbon/human)) // Melee weapons of any type carried by a human will have a high chance of being stolen. + var/mob/living/carbon/human/H = attacker + var/obj/item/I = H.get_active_hand() + H.drop_item() + if(I) + if((I.sharp || I.edge) && !istype(I, /obj/item/weapon/gun)) + I.forceMove(get_turf(B)) // Disarmed entirely. + B.visible_message("The [name] heaves, \the [attacker]'s weapon becoming stuck in the churning mass!") + else + I.throw_at(B, 2, 4) // Just yoinked. + B.visible_message("The [name] heaves, pulling \the [attacker]'s weapon from their hands!") + B.blob_attack_animation(attacker, B.overmind) + return ..() + +/datum/blob_type/volatile_alluvium/on_water(obj/structure/blob/B, amount) + spawn(1) + var/damage = amount * 2 + B.adjust_integrity(-(damage)) + if(B && prob(damage)) + B.visible_message("The [name] begins to crumble!") diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 71e82bbc19..322f642896 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -39,6 +39,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["synth_markings"] >> pref.synth_markings pref.preview_icon = null S["bgstate"] >> pref.bgstate + S["body_descriptors"] >> pref.body_descriptors /datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) S["species"] << pref.species @@ -68,6 +69,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["synth_blue"] << pref.b_synth S["synth_markings"] << pref.synth_markings S["bgstate"] << pref.bgstate + S["body_descriptors"] << pref.body_descriptors /datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S) if(!pref.species || !(pref.species in playable_species)) @@ -167,6 +169,21 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(O) O.markings[M] = list("color" = mark_color, "datum" = mark_datum) + var/list/last_descriptors = list() + if(islist(pref.body_descriptors)) + last_descriptors = pref.body_descriptors.Copy() + pref.body_descriptors = list() + + var/datum/species/mob_species = all_species[pref.species] + if(LAZYLEN(mob_species.descriptors)) + for(var/entry in mob_species.descriptors) + var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry] + if(istype(descriptor)) + if(isnull(last_descriptors[entry])) + pref.body_descriptors[entry] = descriptor.default_value // Species datums have initial default value. + else + pref.body_descriptors[entry] = Clamp(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) + return /datum/category_item/player_setup_item/general/body/content(var/mob/user) @@ -175,7 +192,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.update_preview_icon() user << browse_rsc(pref.preview_icon, "previewicon.png") - var/mob_species = all_species[pref.species] + var/datum/species/mob_species = all_species[pref.species] . += "
Body " . += "(®)" . += "
" @@ -280,6 +297,13 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else . += "

" + if(LAZYLEN(pref.body_descriptors)) + . += "" + for(var/entry in pref.body_descriptors) + var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry] + . += "" + . += "
[capitalize(descriptor.chargen_label)]:[descriptor.get_standalone_value_descriptor(pref.body_descriptors[entry])]Change

" + . += "
Preview
" . += "
" . += "
Cycle background" @@ -329,6 +353,16 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.randomize_appearance_and_body_for() return TOPIC_REFRESH_UPDATE_PREVIEW + else if(href_list["change_descriptor"]) + if(mob_species.descriptors) + var/desc_id = href_list["change_descriptor"] + if(pref.body_descriptors[desc_id]) + var/datum/mob_descriptor/descriptor = mob_species.descriptors[desc_id] + var/choice = input("Please select a descriptor.", "Descriptor") as null|anything in descriptor.chargen_value_descriptors + if(choice && mob_species.descriptors[desc_id]) // Check in case they sneakily changed species. + pref.body_descriptors[desc_id] = descriptor.chargen_value_descriptors[choice] + return TOPIC_REFRESH + else if(href_list["blood_type"]) var/new_b_type = input(user, "Choose your character's blood-type:", "Character Preference") as null|anything in valid_bloodtypes if(new_b_type && CanUseTopic(user)) diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index c2f1450ca7..1b44fbc5de 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -102,7 +102,7 @@ var/list/_client_preferences_by_type description ="Mob tooltips" key = "MOB_TOOLTIPS" enabled_description = "Show" - disabled_description = "Hide" + disabled_description = "Hide" /datum/client_preference/attack_icons description ="Attack icons" @@ -183,6 +183,10 @@ var/list/_client_preferences_by_type PH.set_ao(VIS_OBJS, enabled) PH.set_ao(VIS_MOBS, enabled) +/datum/client_preference/instrument_toggle + description ="Hear In-game Instruments" + key = "SOUND_INSTRUMENT" + /******************** * Staff Preferences * ********************/ diff --git a/code/modules/client/preference_setup/loadout/loadout_ears.dm b/code/modules/client/preference_setup/loadout/loadout_ears.dm index 23e7c8e33b..d92b2358b4 100644 --- a/code/modules/client/preference_setup/loadout/loadout_ears.dm +++ b/code/modules/client/preference_setup/loadout/loadout_ears.dm @@ -7,4 +7,8 @@ /datum/gear/ears/headphones display_name = "headphones" - path = /obj/item/clothing/ears/earmuffs/headphones \ No newline at end of file + path = /obj/item/clothing/ears/earmuffs/headphones + +/datum/gear/ears/circuitry + display_name = "earwear, circuitry (empty)" + path = /obj/item/clothing/ears/circuitry \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm index 7a17b782ef..5981424753 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm @@ -121,3 +121,7 @@ /datum/gear/eyes/sun/prescriptionsun display_name = "sunglasses, presciption (Security/Command)" path = /obj/item/clothing/glasses/sunglasses/prescription + +/datum/gear/eyes/circuitry + display_name = "goggles, circuitry (empty)" + path = /obj/item/clothing/glasses/circuitry \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm index 18eb05f882..74fb11fcaa 100644 --- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm +++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm @@ -98,4 +98,8 @@ ringtype["ring, glass"] = /obj/item/clothing/gloves/ring/material/glass ringtype["ring, wood"] = /obj/item/clothing/gloves/ring/material/wood ringtype["ring, plastic"] = /obj/item/clothing/gloves/ring/material/plastic - gear_tweaks += new/datum/gear_tweak/path(ringtype) \ No newline at end of file + gear_tweaks += new/datum/gear_tweak/path(ringtype) + +/datum/gear/gloves/circuitry + display_name = "gloves, circuitry (empty)" + path = /obj/item/clothing/gloves/circuitry \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 86850a1288..7e0ac15a34 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -372,3 +372,7 @@ /datum/gear/head/surgical/purple display_name = "surgical cap, purple" path = /obj/item/clothing/head/surgery/purple + +/datum/gear/head/circuitry + display_name = "headwear, circuitry (empty)" + path = /obj/item/clothing/head/circuitry \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm index 6cca1946fd..d3ad2b05d8 100644 --- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm @@ -227,3 +227,7 @@ display_name = "hydroponics winter boots" path = /obj/item/clothing/shoes/boots/winter/hydro allowed_roles = list("Botanist", "Xenobiologist") + +/datum/gear/shoes/circuitry + display_name = "boots, circuitry (empty)" + path = /obj/item/clothing/shoes/circuitry diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 591269f418..14fd22711b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -456,4 +456,8 @@ /datum/gear/uniform/westernbustle display_name = "western bustle" - path = /obj/item/clothing/under/dress/westernbustle \ No newline at end of file + path = /obj/item/clothing/under/dress/westernbustle + +/datum/gear/uniform/circuitry + display_name = "jumpsuit, circuitry (empty)" + path = /obj/item/clothing/under/circuitry \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index dee21ddd5b..00f693e7cf 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -104,6 +104,8 @@ datum/preferences var/list/flavor_texts = list() var/list/flavour_texts_robot = list() + var/list/body_descriptors = list() + var/med_record = "" var/sec_record = "" var/gen_record = "" @@ -295,6 +297,10 @@ datum/preferences character.update_underwear() character.update_hair() + if(LAZYLEN(character.descriptors)) + for(var/entry in body_descriptors) + character.descriptors[entry] = body_descriptors[entry] + /datum/preferences/proc/open_load_dialog(mob/user) var/dat = "" dat += "
" diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index 5312f1f07e..68747a4228 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -8,7 +8,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all mob speech as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all mob speech as a ghost.") prefs.save_preferences() @@ -23,7 +23,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] see all emotes as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] see all emotes as a ghost.") prefs.save_preferences() @@ -38,7 +38,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all radios as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all radios as a ghost.") prefs.save_preferences() @@ -53,7 +53,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear dead chat as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear dead chat as a ghost.") prefs.save_preferences() @@ -68,7 +68,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(/datum/client_preference/show_ooc)) ? "now" : "no longer"] hear global out of character chat." + to_chat(src,"You will [ (is_preference_enabled(/datum/client_preference/show_ooc)) ? "now" : "no longer"] hear global out of character chat.") prefs.save_preferences() @@ -83,7 +83,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear local out of character chat." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear local out of character chat.") prefs.save_preferences() @@ -98,7 +98,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] have the speech indicator." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] have the speech indicator.") prefs.save_preferences() @@ -113,7 +113,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive noise from admin messages." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive noise from admin messages.") prefs.save_preferences() @@ -128,7 +128,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear music in the lobby." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear music in the lobby.") prefs.save_preferences() @@ -143,7 +143,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear MIDIs from admins." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear MIDIs from admins.") prefs.save_preferences() @@ -158,7 +158,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear ambient noise." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear ambient noise.") prefs.save_preferences() @@ -175,7 +175,7 @@ prefs.be_special ^= role_flag prefs.save_preferences() - src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)." + to_chat(src,"You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible).") feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -188,7 +188,7 @@ toggle_preference(pref_path) prefs.save_preferences() - src << "You will now use [(is_preference_enabled(/datum/client_preference/safefiring)) ? "safe" : "dangerous"] firearms firing." + to_chat(src,"You will now use [(is_preference_enabled(/datum/client_preference/safefiring)) ? "safe" : "dangerous"] firearms firing.") feedback_add_details("admin_verb","TFiringMode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -201,10 +201,23 @@ toggle_preference(pref_path) prefs.save_preferences() - src << "You will now [(is_preference_enabled(/datum/client_preference/mob_tooltips)) ? "see" : "not see"] mob tooltips." + to_chat(src,"You will now [(is_preference_enabled(/datum/client_preference/mob_tooltips)) ? "see" : "not see"] mob tooltips.") feedback_add_details("admin_verb","TMobTooltips") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggle_hear_instruments() + set name = "Toggle Hear/Ignore Instruments" + set category = "Preferences" + set desc = "Hear In-game Instruments" + + var/pref_path = /datum/client_preference/instrument_toggle + toggle_preference(pref_path) + prefs.save_preferences() + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/instrument_toggle)) ? "hear" : "not hear"] instruments being played.") + + feedback_add_details("admin_verb","THInstm") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //Toggles for Staff //Developers @@ -217,7 +230,7 @@ if(check_rights(R_ADMIN|R_DEBUG)) toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive debug logs." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive debug logs.") prefs.save_preferences() feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -232,7 +245,7 @@ if(check_rights(R_ADMIN|R_MOD)) toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive attack logs." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive attack logs.") prefs.save_preferences() feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 87aef44851..c932d2524b 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -145,7 +145,7 @@ BLIND // can't see anything /obj/item/clothing/glasses/night/vox name = "Alien Optics" species_restricted = list("Vox") - phoronproof = 1 + flags = PHORONGUARD /obj/item/clothing/glasses/night/New() ..() diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 7546d81651..78e335377f 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -105,9 +105,8 @@ name = "insulated gauntlets" icon_state = "gloves-vox" item_state = "gloves-vox" - item_flags = PHORONGUARD + flags = PHORONGUARD siemens_coefficient = 0 - phoronproof = 1 permeability_coefficient = 0.05 species_restricted = list("Vox") diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 8e7b10052d..70c19a1260 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -6,7 +6,7 @@ restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C) flags = THICKMATERIAL armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) - flags_inv = HIDEEARS|HIDEEYES + flags_inv = HIDEEARS|BLOCKHEADHAIR cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE heat_protection = HEAD @@ -62,7 +62,6 @@ icon_state = "riot" item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) - flags_inv = HIDEEARS siemens_coefficient = 0.7 valid_accessory_slots = null action_button_name = "Toggle Visor" @@ -82,7 +81,6 @@ icon_state = "helmet_reflec" item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 10, bullet = 10, laser = 80 ,energy = 50, bomb = 0, bio = 0, rad = 0) - flags_inv = HIDEEARS siemens_coefficient = 0.1 valid_accessory_slots = null @@ -92,7 +90,6 @@ icon_state = "helmet_bulletproof" item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0) - flags_inv = HIDEEARS siemens_coefficient = 0.7 valid_accessory_slots = null @@ -102,7 +99,7 @@ icon_state = "helmet_combat" item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 50, bullet = 50, laser = 50 ,energy = 30, bomb = 30, bio = 0, rad = 0) - flags_inv = HIDEEARS + flags_inv = HIDEEARS|HIDEEYES|BLOCKHEADHAIR siemens_coefficient = 0.6 valid_accessory_slots = null @@ -111,7 +108,7 @@ desc = "They're often used by highly trained SWAT Officers." icon_state = "swat" armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) - flags_inv = HIDEEARS|HIDEEYES + flags_inv = HIDEEARS|HIDEEYES|BLOCKHEADHAIR cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.5 @@ -142,8 +139,7 @@ desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" item_state_slots = list(slot_r_hand_str = "vhelmet", slot_l_hand_str = "vhelmet") - flags = BLOCKHAIR - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR siemens_coefficient = 1 valid_accessory_slots = null @@ -158,7 +154,7 @@ ) armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) - flags_inv = HIDEEARS + flags_inv = HIDEEARS|BLOCKHAIR siemens_coefficient = 0.7 valid_accessory_slots = null @@ -168,7 +164,7 @@ icon_state = "v62" item_state_slots = list(slot_r_hand_str = "head_m", slot_l_hand_str = "head_m") armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) - flags_inv = HIDEEARS|HIDEEYES + flags_inv = HIDEEARS|HIDEEYES|BLOCKHEADHAIR cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.5 diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 2396ccd432..a9305ffddb 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -130,6 +130,7 @@ item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "") valid_accessory_slots = null show_examine = FALSE + flags_inv = null /obj/item/clothing/head/det name = "fedora" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 63259fc65e..a1e9b1a749 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -58,14 +58,31 @@ siemens_coefficient = 0.7 body_parts_covered = FACE|EYES +// Vox mask, has special code for eating /obj/item/clothing/mask/gas/swat/vox name = "\improper alien mask" desc = "Clearly not designed for a human face." - body_parts_covered = 0 //Hack to allow vox to eat while wearing this mask. - item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | PHORONGUARD - phoronproof = 1 + flags = PHORONGUARD + item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT species_restricted = list(SPECIES_VOX) filtered_gases = list("oxygen", "sleeping_agent") + var/mask_open = FALSE // Controls if the Vox can eat through this mask + action_button_name = "Toggle Feeding Port" + +/obj/item/clothing/mask/gas/swat/vox/proc/feeding_port(mob/user) + if(user.canmove && !user.stat) + mask_open = !mask_open + if(mask_open) + body_parts_covered = EYES + to_chat(user, "Your mask moves to allow you to eat.") + else + body_parts_covered = FACE|EYES + to_chat(user, "Your mask moves to cover your mouth.") + return + +/obj/item/clothing/mask/gas/swat/vox/attack_self(mob/user) + feeding_port(user) + ..() /obj/item/clothing/mask/gas/syndicate name = "tactical mask" diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 4bd3f59e29..17a44db61d 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -86,8 +86,7 @@ name = "vox magclaws" item_state = "boots-vox" icon_state = "boots-vox" - item_flags = PHORONGUARD - phoronproof = 1 + flags = PHORONGUARD species_restricted = list(SPECIES_VOX) action_button_name = "Toggle the magclaws" diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 5b42e77294..a5e0b31451 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -31,10 +31,9 @@ // Can't be equipped by any other species due to bone structure and vox cybernetics. /obj/item/clothing/suit/space/vox w_class = ITEMSIZE_NORMAL - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | PHORONGUARD + flags = PHORONGUARD + item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank) - phoronproof = 1 - slowdown = 0.5 armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 100, rad = 50) siemens_coefficient = 0.2 heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS @@ -44,9 +43,9 @@ /obj/item/clothing/head/helmet/space/vox armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50) siemens_coefficient = 0.2 - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT | PHORONGUARD + flags = PHORONGUARD + item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT flags_inv = 0 - phoronproof = 1 species_restricted = list(SPECIES_VOX) /obj/item/clothing/head/helmet/space/vox/pressure diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm index efdbea6476..27b97df92b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/alien.dm +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -47,11 +47,9 @@ suit_type = "alien" icon_state = "vox_rig" armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50) - item_flags = THICKMATERIAL + item_flags = THICKMATERIAL|PHORONGUARD siemens_coefficient = 0.2 - phoronproof = 1 offline_slowdown = 5 - slowdown = 2 allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) air_type = /obj/item/weapon/tank/vox @@ -64,7 +62,6 @@ /obj/item/clothing/head/helmet/space/rig/vox species_restricted = list(SPECIES_VOX) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE - phoronproof = 1 /obj/item/clothing/shoes/magboots/rig/vox name = "talons" @@ -72,11 +69,9 @@ sprite_sheets = list( SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi' ) - phoronproof = 1 /obj/item/clothing/suit/space/rig/vox species_restricted = list(SPECIES_VOX) - phoronproof = 1 /obj/item/clothing/gloves/gauntlets/rig/vox siemens_coefficient = 0 @@ -84,14 +79,12 @@ sprite_sheets = list( SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi' ) - phoronproof = 1 /obj/item/weapon/rig/vox/carapace name = "dense alien control module" suit_type = "dense alien" armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50) emp_protection = 40 //change this to 30 if too high. - phoronproof = 1 req_access = list(access_syndicate) @@ -112,7 +105,6 @@ icon_state = "voxstealth_rig" armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 30, bio = 100, rad = 50) emp_protection = 40 //change this to 30 if too high. - phoronproof = 1 req_access = list(access_syndicate) diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index 3965d57d4a..f88f057907 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -17,7 +17,6 @@ /obj/item/weapon/rig/combat/equipped - initial_modules = list( /obj/item/rig_module/mounted, /obj/item/rig_module/vision/thermal, @@ -26,4 +25,59 @@ /obj/item/rig_module/power_sink, /obj/item/rig_module/electrowarfare_suite, /obj/item/rig_module/chem_dispenser/combat - ) \ No newline at end of file + ) + +/obj/item/weapon/rig/combat/empty + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/electrowarfare_suite, + ) + +/obj/item/weapon/rig/military + name = "military hardsuit control module" + desc = "An austere hardsuit used by paramilitary groups and real soldiers alike." + icon_state = "military_rig" + suit_type = "military hardsuit" + armor = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 30) + slowdown = 1 + offline_slowdown = 3 + offline_vision_restriction = 1 + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/handcuffs, \ + /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/weldingtool, /obj/item/weapon/tool, /obj/item/device/multitool, \ + /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ + /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller, /obj/item/device/suit_cooling_unit) + + chest_type = /obj/item/clothing/suit/space/rig/military + helm_type = /obj/item/clothing/head/helmet/space/rig/military + boot_type = /obj/item/clothing/shoes/magboots/rig/military + glove_type = /obj/item/clothing/gloves/gauntlets/rig/military + +/obj/item/clothing/head/helmet/space/rig/military + light_overlay = "helmet_light_dual_green" + species_restricted = list(SPECIES_HUMAN,SPECIES_PROMETHEAN) + +/obj/item/clothing/suit/space/rig/military + species_restricted = list(SPECIES_HUMAN,SPECIES_PROMETHEAN) + +/obj/item/clothing/shoes/magboots/rig/military + species_restricted = list(SPECIES_HUMAN,SPECIES_PROMETHEAN) + +/obj/item/clothing/gloves/gauntlets/rig/military + species_restricted = list(SPECIES_HUMAN,SPECIES_PROMETHEAN) + +/obj/item/weapon/rig/military/equipped + initial_modules = list( + /obj/item/rig_module/mounted/egun, + /obj/item/rig_module/vision/multi, + /obj/item/rig_module/grenade_launcher, + /obj/item/rig_module/ai_container, + /obj/item/rig_module/power_sink, + /obj/item/rig_module/electrowarfare_suite, + /obj/item/rig_module/chem_dispenser/combat, + ) + +/obj/item/weapon/rig/military/empty + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/electrowarfare_suite, + ) diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 0dd98de966..0cf3b14375 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -39,12 +39,12 @@ req_access = list(access_syndicate) - airtight = 0 - seal_delay = 5 //not being vaccum-proof has an upside I guess + airtight = 1 + seal_delay = 5 //Being straight out of a cyberpunk space movie has its perks. - helm_type = /obj/item/clothing/head/lightrig/hacker - chest_type = /obj/item/clothing/suit/lightrig/hacker - glove_type = /obj/item/clothing/gloves/gauntlets/lightrig/hacker + helm_type = /obj/item/clothing/head/helmet/space/rig/light/hacker + chest_type = /obj/item/clothing/suit/space/rig/light/hacker + glove_type = /obj/item/clothing/gloves/gauntlets/rig/light/hacker boot_type = /obj/item/clothing/shoes/lightrig/hacker initial_modules = list( @@ -57,19 +57,20 @@ ) //The cybersuit is not space-proof. It does however, have good siemens_coefficient values -/obj/item/clothing/head/lightrig/hacker - name = "HUD" +/obj/item/clothing/head/helmet/space/rig/light/hacker + name = "headgear" siemens_coefficient = 0.4 - flags = 0 + flags_inv = HIDEEARS -/obj/item/clothing/suit/lightrig/hacker +/obj/item/clothing/suit/space/rig/light/hacker siemens_coefficient = 0.4 /obj/item/clothing/shoes/lightrig/hacker siemens_coefficient = 0.4 - flags = NOSLIP //All the other rigs have magboots anyways, hopefully gives the hacker suit something more going for it. + step_volume_mod = 0.3 //Special sneaky cyber-soles, for infiltration. + flags = NOSLIP //They're not magboots, so they're not super good for exterior hull walking, BUT for interior infiltration they'll do swell. -/obj/item/clothing/gloves/gauntlets/lightrig/hacker +/obj/item/clothing/gloves/gauntlets/rig/light/hacker siemens_coefficient = 0 /obj/item/weapon/rig/light/ninja diff --git a/code/modules/clothing/spacesuits/rig/suits/pmc.dm b/code/modules/clothing/spacesuits/rig/suits/pmc.dm new file mode 100644 index 0000000000..7b609be4e8 --- /dev/null +++ b/code/modules/clothing/spacesuits/rig/suits/pmc.dm @@ -0,0 +1,124 @@ +/obj/item/clothing/head/helmet/space/rig/pmc + light_overlay = "helmet_light_dual" + +/obj/item/weapon/rig/pmc + name = "PMC hardsuit control module" + desc = "A suit worn by private military contractors. Armoured and space ready." + suit_type = "PMC" + icon_state = "pmc_commandergrey_rig" + + helm_type = /obj/item/clothing/head/helmet/space/rig/pmc + + req_access = list(access_cent_specops) + + armor = list(melee = 60, bullet = 50, laser = 35,energy = 15, bomb = 30, bio = 100, rad = 95) + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \ + /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \ + /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \ + /obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller) + +/obj/item/weapon/rig/pmc/commander + name = "PMC-C hardsuit control module" + desc = "A suit worn by private military contractors. Armoured and space ready." + suit_type = "PMC commander" + icon_state = "pmc_commandergrey_rig" + +/obj/item/weapon/rig/pmc/commander/grey/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/datajack, + ) + +/obj/item/weapon/rig/pmc/commander/green + icon_state = "pmc_commandergreen_rig" + +/obj/item/weapon/rig/pmc/commander/green/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/datajack, + ) + +/obj/item/weapon/rig/pmc/engineer + name = "PMC-E suit control module" + desc = "A suit worn by private military contractors. This one is setup for engineering. Armoured and space ready." + suit_type = "PMC engineer" + icon_state = "pmc_engineergrey_rig" + armor = list(melee = 60, bullet = 50, laser = 35,energy = 15, bomb = 30, bio = 100, rad = 100) + siemens_coefficient = 0 + +/obj/item/weapon/rig/pmc/engineer/grey/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/device/plasmacutter, + /obj/item/rig_module/device/rcd + ) + +/obj/item/weapon/rig/pmc/engineer/green + icon_state = "pmc_engineergreen_rig" + +/obj/item/weapon/rig/pmc/engineer/green/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/device/plasmacutter, + /obj/item/rig_module/device/rcd + ) + +/obj/item/weapon/rig/pmc/medical + name = "PMC-M suit control module" + desc = "A suit worn by private military contractors. This one is setup for medical. Armoured and space ready." + suit_type = "PMC medic" + icon_state = "pmc_medicalgrey_rig" + +/obj/item/weapon/rig/pmc/medical/grey/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/device/healthscanner, + /obj/item/rig_module/chem_dispenser/injector/advanced + ) + +/obj/item/weapon/rig/pmc/medical/green + icon_state = "pmc_medicalgreen_rig" + +/obj/item/weapon/rig/pmc/medical/green/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/device/healthscanner, + /obj/item/rig_module/chem_dispenser/injector/advanced + ) + +/obj/item/weapon/rig/pmc/security + name = "ERT-S suit control module" + desc = "A suit worn by private military contractors. This one is setup for security. Armoured and space ready." + suit_type = "PMC security" + icon_state = "pmc_securitygrey_rig" + +/obj/item/weapon/rig/pmc/security/grey/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/mounted/egun, + ) + +/obj/item/weapon/rig/pmc/security/green + icon_state = "pmc_securitygreen_rig" + +/obj/item/weapon/rig/pmc/security/green/equipped + + initial_modules = list( + /obj/item/rig_module/ai_container, + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/mounted/egun, + ) \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index b5a9900081..400bd96b4b 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -6,6 +6,7 @@ name = "Space helmet" icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." + flags = PHORONGUARD item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) @@ -16,7 +17,6 @@ siemens_coefficient = 0.9 species_restricted = list("exclude",SPECIES_DIONA) preserve_item = 1 - phoronproof = 1 flash_protection = FLASH_PROTECTION_MAJOR valid_accessory_slots = null @@ -55,7 +55,8 @@ w_class = ITEMSIZE_HUGE // So you can't fit this in your bag and be prepared at all times. gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL + flags = PHORONGUARD + item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | PHORONGUARD body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit) slowdown = 3 @@ -66,7 +67,6 @@ siemens_coefficient = 0.9 species_restricted = list("exclude",SPECIES_DIONA) preserve_item = 1 - phoronproof = 1 var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit. diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 0fb184ad49..7a0af9c9d8 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -244,3 +244,62 @@ name = "heavy duty atmos voidsuit" armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50) max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + +//Exploration +/obj/item/clothing/head/helmet/space/void/exploration + name = "exploration voidsuit helmet" + desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." + icon_state = "helm_explorer" + item_state = "helm_explorer" + item_state_slots = list(slot_r_hand_str = "syndicate-helm-black", slot_l_hand_str = "syndicate-helm-black") + armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70) + light_overlay = "helmet_light_dual" //explorer_light + +/obj/item/clothing/suit/space/void/exploration + name = "exploration voidsuit" + desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." + icon_state = "void_explorer" + item_state_slots = list(slot_r_hand_str = "skrell_suit_black", slot_l_hand_str = "skrell_suit_black") + armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon, \ + /obj/item/weapon/shovel,/obj/item/ammo_magazine,/obj/item/weapon/gun) + +/obj/item/clothing/head/helmet/space/void/exploration/alt + desc = "A radiation-resistant helmet retrofitted for exploring unknown planetary environments." + icon_state = "helm_explorer2" + item_state = "helm_explorer2" + item_state_slots = list(slot_r_hand_str = "mining_helm", slot_l_hand_str = "mining_helm") + +/obj/item/clothing/suit/space/void/exploration/alt + desc = "A lightweight, radiation-resistant voidsuit. Retrofitted for exploring unknown planetary environments." + icon_state = "void_explorer2" + item_state_slots = list(slot_r_hand_str = "skrell_suit_white", slot_l_hand_str = "skrell_suit_white") + +//Pilot +/obj/item/clothing/head/helmet/space/void/pilot + desc = "An atmos resistant helmet for space and planet exploration." + name = "pilot voidsuit helmet" + icon_state = "rig0_pilot" + item_state = "pilot_helm" + item_state_slots = list(slot_r_hand_str = "atmos_helm", slot_l_hand_str = "atmos_helm") + armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50) + max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + light_overlay = "helmet_light_dual" + +/obj/item/clothing/suit/space/void/pilot + desc = "An atmos resistant voidsuit for space and planet exploration." + icon_state = "rig-pilot" + item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit") + name = "pilot voidsuit" + armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50) + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable) + +/obj/item/clothing/head/helmet/space/void/pilot/alt + icon_state = "rig0_pilot2" + item_state = "pilot_helm2" + +/obj/item/clothing/suit/space/void/pilot/alt + desc = "An atmos resistant voidsuit for space." + icon_state = "rig-pilot2" + item_state = "rig-pilot2" \ No newline at end of file diff --git a/code/modules/clothing/suits/aliens/vox.dm b/code/modules/clothing/suits/aliens/vox.dm index b17939950c..b658aa0586 100644 --- a/code/modules/clothing/suits/aliens/vox.dm +++ b/code/modules/clothing/suits/aliens/vox.dm @@ -2,7 +2,7 @@ name = "rusted metal armor" desc = "A hodgepodge of various pieces of metal scrapped together into a rudimentary vox-shaped piece of armor." allowed = list(/obj/item/weapon/gun, /obj/item/weapon/tank) - armor = list(melee = 70, bullet = 30, laser = 20,energy = 5, bomb = 40, bio = 0, rad = 0) //Higher melee armor versus lower everything else. + armor = list(melee = 60, bullet = 30, laser = 30,energy = 5, bomb = 40, bio = 0, rad = 0) //Higher melee armor versus lower everything else. icon_state = "vox-scrap" icon_state = "vox-scrap" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 32cb6551fe..4ac233529e 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -8,8 +8,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES siemens_coefficient = 0.9 - item_flags = THICKMATERIAL - phoronproof = 1 + item_flags = THICKMATERIAL | PHORONGUARD /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -24,8 +23,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER siemens_coefficient = 0.9 - item_flags = THICKMATERIAL - phoronproof = 1 + item_flags = THICKMATERIAL | PHORONGUARD //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/under/xenos/vox.dm b/code/modules/clothing/under/xenos/vox.dm index 0997c5fa93..ecbc618061 100644 --- a/code/modules/clothing/under/xenos/vox.dm +++ b/code/modules/clothing/under/xenos/vox.dm @@ -1,9 +1,8 @@ /obj/item/clothing/under/vox has_sensor = 0 species_restricted = list(SPECIES_VOX) - valid_accessory_slots = "vox" - restricted_accessory_slots = "vox" - phoronproof = 1 + starting_accessories = list(/obj/item/clothing/accessory/storage/vox) // Dont' start with a backback, so free webbing + flags = PHORONGUARD /obj/item/clothing/under/vox/vox_casual name = "alien clothing" @@ -23,7 +22,8 @@ name = "alien mesh" desc = "An alien mesh. Seems to be made up mostly of pockets and writhing flesh." icon_state = "webbing-vox" - slot = "vox" + + flags = PHORONGUARD slots = 3 diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index 4d449024bb..b47c154b65 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -1,4 +1,3 @@ - // // Wall mounted holomap of the station // @@ -124,7 +123,7 @@ user.client.images |= holomap_datum.station_map watching_mob = user - moved_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) + GLOB.moved_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) GLOB.dir_set_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) destroyed_event.register(watching_mob, src, /obj/machinery/station_map/proc/stopWatching) update_use_power(2) @@ -153,7 +152,7 @@ var/mob/M = watching_mob spawn(5) //we give it time to fade out M.client.images -= holomap_datum.station_map - moved_event.unregister(watching_mob, src) + GLOB.moved_event.unregister(watching_mob, src) GLOB.dir_set_event.unregister(watching_mob, src) destroyed_event.unregister(watching_mob, src) watching_mob = null diff --git a/code/modules/integrated_electronics/_defines.dm b/code/modules/integrated_electronics/_defines.dm index 104b867532..6361bfa32f 100644 --- a/code/modules/integrated_electronics/_defines.dm +++ b/code/modules/integrated_electronics/_defines.dm @@ -6,10 +6,6 @@ #define DATA_CHANNEL "data channel" #define PULSE_CHANNEL "pulse channel" -// Methods of obtaining a circuit. -#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer. -#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it. - // Displayed along with the pin name to show what type of pin it is. #define IC_FORMAT_ANY "\" #define IC_FORMAT_STRING "\" @@ -49,7 +45,7 @@ var/list/all_integrated_circuits = list() /obj/item/integrated_circuit name = "integrated circuit" desc = "It's a tiny chip! This one doesn't seem to do much, however." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_components.dmi' icon_state = "template" w_class = ITEMSIZE_TINY var/obj/item/device/electronic_assembly/assembly = null // Reference to the assembly holding this circuit, if any. diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 90046fd269..4d27f3ccf3 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -1,56 +1,29 @@ #define IC_COMPONENTS_BASE 20 #define IC_COMPLEXITY_BASE 60 +// Here is where the base definition lives. +// Specific subtypes are in their own folder. + /obj/item/device/electronic_assembly name = "electronic assembly" desc = "It's a case, for building small electronics with." w_class = ITEMSIZE_SMALL - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_setups.dmi' icon_state = "setup_small" show_messages = TRUE var/max_components = IC_COMPONENTS_BASE var/max_complexity = IC_COMPLEXITY_BASE - var/opened = 0 + var/opened = FALSE + var/can_anchor = FALSE // If true, wrenching it will anchor it. var/obj/item/weapon/cell/device/battery = null // Internal cell which most circuits need to work. + var/net_power = 0 // Set every tick, to display how much power is being drawn in total. + var/detail_color = COLOR_ASSEMBLY_BLACK -/obj/item/device/electronic_assembly/medium - name = "electronic mechanism" - icon_state = "setup_medium" - desc = "It's a case, for building medium-sized electronics with." - w_class = ITEMSIZE_NORMAL - max_components = IC_COMPONENTS_BASE * 2 - max_complexity = IC_COMPLEXITY_BASE * 2 - -/obj/item/device/electronic_assembly/large - name = "electronic machine" - icon_state = "setup_large" - desc = "It's a case, for building large electronics with." - w_class = ITEMSIZE_LARGE - max_components = IC_COMPONENTS_BASE * 4 - max_complexity = IC_COMPLEXITY_BASE * 4 - -/obj/item/device/electronic_assembly/drone - name = "electronic drone" - icon_state = "setup_drone" - desc = "It's a case, for building mobile electronics with." - w_class = ITEMSIZE_NORMAL - max_components = IC_COMPONENTS_BASE * 1.5 - max_complexity = IC_COMPLEXITY_BASE * 1.5 - -/obj/item/device/electronic_assembly/implant - name = "electronic implant" - icon_state = "setup_implant" - desc = "It's a case, for building very tiny electronics with." - w_class = ITEMSIZE_TINY - max_components = IC_COMPONENTS_BASE / 2 - max_complexity = IC_COMPLEXITY_BASE / 2 - var/obj/item/weapon/implant/integrated_circuit/implant = null - -/obj/item/device/electronic_assembly/New() - ..() +/obj/item/device/electronic_assembly/initialize() battery = new(src) processing_objects |= src + return ..() /obj/item/device/electronic_assembly/Destroy() battery = null // It will be qdel'd by ..() if still in our contents @@ -61,35 +34,33 @@ handle_idle_power() /obj/item/device/electronic_assembly/proc/handle_idle_power() - // First we generate power. - for(var/obj/item/integrated_circuit/passive/power/P in contents) - P.make_energy() + net_power = 0 // Reset this. This gets increased/decreased with [give/draw]_power() outside of this loop. - // Now spend it. + // First we handle passive sources. Most of these make power so they go first. + for(var/obj/item/integrated_circuit/passive/power/P in contents) + P.handle_passive_energy() + + // Now we handle idle power draw. for(var/obj/item/integrated_circuit/IC in contents) if(IC.power_draw_idle) if(!draw_power(IC.power_draw_idle)) IC.power_fail() -/obj/item/device/electronic_assembly/implant/update_icon() - ..() - implant.icon_state = icon_state -/obj/item/device/electronic_assembly/implant/nano_host() - return implant /obj/item/device/electronic_assembly/proc/resolve_nano_host() return src -/obj/item/device/electronic_assembly/implant/resolve_nano_host() - return implant /obj/item/device/electronic_assembly/proc/check_interactivity(mob/user) if(!CanInteract(user, physical_state)) return 0 return 1 +/obj/item/device/electronic_assembly/get_cell() + return battery + /obj/item/device/electronic_assembly/interact(mob/user) if(!check_interactivity(user)) return @@ -107,7 +78,8 @@ HTML += "[total_parts]/[max_components] ([round((total_parts / max_components) * 100, 0.1)]%) space taken up in the assembly.
" HTML += "[total_complexity]/[max_complexity] ([round((total_complexity / max_complexity) * 100, 0.1)]%) maximum complexity.
" if(battery) - HTML += "[round(battery.charge, 0.1)]/[battery.maxcharge] ([round(battery.percent(), 0.1)]%) cell charge. \[Remove\]" + HTML += "[round(battery.charge, 0.1)]/[battery.maxcharge] ([round(battery.percent(), 0.1)]%) cell charge. \[Remove\]
" + HTML += "Net energy: [format_SI(net_power / CELLRATE, "W")]." else HTML += "No powercell detected!" HTML += "

" @@ -175,14 +147,18 @@ /obj/item/device/electronic_assembly/proc/can_move() return FALSE -/obj/item/device/electronic_assembly/drone/can_move() - return TRUE - /obj/item/device/electronic_assembly/update_icon() if(opened) icon_state = initial(icon_state) + "-open" else icon_state = initial(icon_state) + cut_overlays() + if(detail_color == COLOR_ASSEMBLY_BLACK) //Black colored overlay looks almost but not exactly like the base sprite, so just cut the overlay and avoid it looking kinda off. + return + var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/integrated_electronics/electronic_setups.dmi', "[icon_state]-color") + detail_overlay.color = detail_color + add_overlay(detail_overlay) + /obj/item/device/electronic_assembly/GetAccess() . = list() @@ -244,6 +220,11 @@ return TRUE +// Non-interactive version of above that always succeeds, intended for build-in circuits that get added on assembly initialization. +/obj/item/device/electronic_assembly/proc/force_add_circuit(var/obj/item/integrated_circuit/IC) + IC.forceMove(src) + IC.assembly = src + /obj/item/device/electronic_assembly/afterattack(atom/target, mob/user, proximity) if(proximity) var/scanned = FALSE @@ -256,7 +237,17 @@ visible_message("\The [user] waves \the [src] around [target].") /obj/item/device/electronic_assembly/attackby(var/obj/item/I, var/mob/user) - if(istype(I, /obj/item/integrated_circuit)) + if(can_anchor && I.is_wrench()) + anchored = !anchored + to_chat(user, span("notice", "You've [anchored ? "" : "un"]secured \the [src] to \the [get_turf(src)].")) + if(anchored) + on_anchored() + else + on_unanchored() + playsound(src, I.usesound, 50, 1) + return TRUE + + else if(istype(I, /obj/item/integrated_circuit)) if(!user.unEquip(I)) return FALSE if(add_circuit(I, user)) @@ -264,18 +255,26 @@ playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) interact(user) return TRUE + else if(I.is_crowbar()) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) opened = !opened to_chat(user, "You [opened ? "opened" : "closed"] \the [src].") update_icon() return TRUE + else if(istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger) || I.is_screwdriver()) if(opened) interact(user) else to_chat(user, "\The [src] isn't opened, so you can't fiddle with the internal components. \ Try using a crowbar.") + + else if(istype(I, /obj/item/device/integrated_electronics/detailer)) + var/obj/item/device/integrated_electronics/detailer/D = I + detail_color = D.detail_color + update_icon() + else if(istype(I, /obj/item/weapon/cell/device)) if(!opened) to_chat(user, "\The [src] isn't opened, so you can't put anything inside. Try using a crowbar.") @@ -291,6 +290,7 @@ to_chat(user, "You slot \the [cell] inside \the [src]'s power supplier.") interact(user) return TRUE + else return ..() @@ -331,13 +331,32 @@ // Returns true if power was successfully drawn. /obj/item/device/electronic_assembly/proc/draw_power(amount) - if(battery && battery.checked_use(amount * CELLRATE)) + if(battery) + var/lost = battery.use(amount * CELLRATE) + net_power -= lost return TRUE return FALSE // Ditto for giving. /obj/item/device/electronic_assembly/proc/give_power(amount) - if(battery && battery.give(amount * CELLRATE)) + if(battery) + var/gained = battery.give(amount * CELLRATE) + net_power += gained return TRUE return FALSE +/obj/item/device/electronic_assembly/on_loc_moved(oldloc) + for(var/obj/O in contents) + O.on_loc_moved(oldloc) + +/obj/item/device/electronic_assembly/Moved(var/oldloc) + for(var/obj/O in contents) + O.on_loc_moved(oldloc) + +/obj/item/device/electronic_assembly/proc/on_anchored() + for(var/obj/item/integrated_circuit/IC in contents) + IC.on_anchored() + +/obj/item/device/electronic_assembly/proc/on_unanchored() + for(var/obj/item/integrated_circuit/IC in contents) + IC.on_unanchored() diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm new file mode 100644 index 0000000000..f8a5b31f3f --- /dev/null +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -0,0 +1,187 @@ + +// The base subtype for assemblies that can be worn. Certain pieces will have more or less capabilities +// E.g. Glasses have less room than something worn over the chest. +// Note that the electronic assembly is INSIDE the object that actually gets worn, in a similar way to implants. + +/obj/item/device/electronic_assembly/clothing + name = "electronic clothing" + icon_state = "circuitry" // Needs to match the clothing's base icon_state. + desc = "It's a case, for building machines attached to clothing." + w_class = ITEMSIZE_SMALL + max_components = IC_COMPONENTS_BASE + max_complexity = IC_COMPLEXITY_BASE + var/obj/item/clothing/clothing = null + +/obj/item/device/electronic_assembly/clothing/nano_host() + return clothing + +/obj/item/device/electronic_assembly/clothing/resolve_nano_host() + return clothing + +/obj/item/device/electronic_assembly/clothing/update_icon() + ..() + clothing.icon_state = icon_state + // We don't need to update the mob sprite since it won't (and shouldn't) actually get changed. + +// This is 'small' relative to the size of regular clothing assemblies. +/obj/item/device/electronic_assembly/clothing/small + max_components = IC_COMPONENTS_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 + w_class = ITEMSIZE_TINY + +// Ditto. +/obj/item/device/electronic_assembly/clothing/large + max_components = IC_COMPONENTS_BASE * 2 + max_complexity = IC_COMPLEXITY_BASE * 2 + w_class = ITEMSIZE_NORMAL + + +// This is defined higher up, in /clothing to avoid lots of copypasta. +/obj/item/clothing + var/obj/item/device/electronic_assembly/clothing/IC = null + var/obj/item/integrated_circuit/built_in/action_button/action_circuit = null // This gets pulsed when someone clicks the button on the hud. + +/obj/item/clothing/emp_act(severity) + if(IC) + IC.emp_act(severity) + ..() + +/obj/item/clothing/examine(mob/user) + if(IC) + IC.examine(user) + ..() + +/obj/item/clothing/attackby(obj/item/I, mob/user) + if(IC) + // This needs to be done in a better way... + if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/integrated_circuit) || istype(I, /obj/item/weapon/cell/device) || istype(I, /obj/item/device/integrated_electronics) ) + IC.attackby(I, user) + else + ..() + +/obj/item/clothing/attack_self(mob/user) + if(IC) + if(IC.opened) + IC.attack_self(user) + else + action_circuit.do_work() + else + ..() + +/obj/item/clothing/Moved(oldloc) + if(IC) + IC.on_loc_moved(oldloc) + else + ..() + +/obj/item/clothing/on_loc_moved(oldloc) + if(IC) + IC.on_loc_moved(oldloc) + else + ..() + +// Does most of the repeatative setup. +/obj/item/clothing/proc/setup_integrated_circuit(new_type) + // Set up the internal circuit holder. + IC = new new_type(src) + IC.clothing = src + IC.name = name + + // Clothing assemblies can be triggered by clicking on the HUD. This allows that to occur. + action_circuit = new(src.IC) + IC.force_add_circuit(action_circuit) + action_button_name = "Activate [name]" + +/obj/item/clothing/Destroy() + if(IC) + IC.clothing = null + action_circuit = null // Will get deleted by qdel-ing the IC assembly. + qdel(IC) + return ..() + +// Specific subtypes. + +// Jumpsuit. +/obj/item/clothing/under/circuitry + name = "electronic jumpsuit" + desc = "It's a wearable case for electronics. This on is a black jumpsuit with wiring weaved into the fabric." + icon_state = "circuitry" + worn_state = "circuitry" + +/obj/item/clothing/under/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing) + return ..() + + +// Gloves. +/obj/item/clothing/gloves/circuitry + name = "electronic gloves" + desc = "It's a wearable case for electronics. This one is a pair of black gloves, with wires woven into them. A small \ + device with a screen is attached to the left glove." + icon_state = "circuitry" + item_state = "circuitry" + +/obj/item/clothing/gloves/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) + return ..() + + +// Glasses. +/obj/item/clothing/glasses/circuitry + name = "electronic goggles" + desc = "It's a wearable case for electronics. This one is a pair of goggles, with wiring sticking out. \ + Could this augment your vision?" // Sadly it won't, or at least not yet. + icon_state = "circuitry" + item_state = "night" // The on-mob sprite would be identical anyways. + +/obj/item/clothing/glasses/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) + return ..() + +// Shoes +/obj/item/clothing/shoes/circuitry + name = "electronic boots" + desc = "It's a wearable case for electronics. This one is a pair of boots, with wires attached to a small \ + cover." + icon_state = "circuitry" + item_state = "circuitry" + +/obj/item/clothing/shoes/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) + return ..() + +// Head +/obj/item/clothing/head/circuitry + name = "electronic headwear" + desc = "It's a wearable case for electronics. This one appears to be a very technical-looking piece that \ + goes around the collar, with a heads-up-display attached on the right." + icon_state = "circuitry" + item_state = "circuitry" + +/obj/item/clothing/head/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) + return ..() + +// Ear +/obj/item/clothing/ears/circuitry + name = "electronic earwear" + desc = "It's a wearable case for electronics. This one appears to be a technical-looking headset." + icon = 'icons/obj/clothing/ears.dmi' + icon_state = "circuitry" + item_state = "circuitry" + +/obj/item/clothing/ears/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) + return ..() + +// Exo-slot +/obj/item/clothing/suit/circuitry + name = "electronic chestpiece" + desc = "It's a wearable case for electronics. This one appears to be a very technical-looking vest, that \ + almost looks professionally made, however the wiring popping out betrays that idea." + icon_state = "circuitry" + item_state = "circuitry" + +/obj/item/clothing/suit/circuitry/initialize() + setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/large) + return ..() \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/device.dm b/code/modules/integrated_electronics/core/assemblies/device.dm similarity index 97% rename from code/modules/integrated_electronics/core/device.dm rename to code/modules/integrated_electronics/core/assemblies/device.dm index 1b298c7a36..bcdd0e9bea 100644 --- a/code/modules/integrated_electronics/core/device.dm +++ b/code/modules/integrated_electronics/core/assemblies/device.dm @@ -19,9 +19,6 @@ else ..() -/obj/item/device/electronic_assembly/get_cell() - return battery - /obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) opened = !opened diff --git a/code/modules/integrated_electronics/core/assemblies/generic.dm b/code/modules/integrated_electronics/core/assemblies/generic.dm new file mode 100644 index 0000000000..8929b69d78 --- /dev/null +++ b/code/modules/integrated_electronics/core/assemblies/generic.dm @@ -0,0 +1,261 @@ +// Generic subtypes without a lot of special code. + +// Small assemblies. + +/obj/item/device/electronic_assembly/default + name = "type-a electronic assembly" + +/obj/item/device/electronic_assembly/calc + name = "type-b electronic assembly" + icon_state = "setup_small_calc" + desc = "It's a case, for building small electronics with. This one resembles a pocket calculator." + +/obj/item/device/electronic_assembly/clam + name = "type-c electronic assembly" + icon_state = "setup_small_clam" + desc = "It's a case, for building small electronics with. This one has a clamshell design." + +/obj/item/device/electronic_assembly/simple + name = "type-d electronic assembly" + icon_state = "setup_small_simple" + desc = "It's a case, for building small electronics with. This one has a simple design." + +/obj/item/device/electronic_assembly/hook + name = "type-e electronic assembly" + icon_state = "setup_small_hook" + desc = "It's a case, for building small electronics with. This one looks like it has a belt clip, but it's purely decorative." + +/obj/item/device/electronic_assembly/pda + name = "type-f electronic assembly" + icon_state = "setup_small_pda" + desc = "It's a case, for building small electronics with. This one resembles a PDA." + +// Tiny assemblies. + +/obj/item/device/electronic_assembly/tiny + name = "electronic device" + icon_state = "setup_device" + desc = "It's a case, for building tiny-sized electronics with." + w_class = ITEMSIZE_TINY + max_components = IC_COMPONENTS_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 + +/obj/item/device/electronic_assembly/tiny/default + name = "type-a electronic device" + +/obj/item/device/electronic_assembly/tiny/cylinder + name = "type-b electronic device" + icon_state = "setup_device_cylinder" + desc = "It's a case, for building tiny-sized electronics with. This one has a cylindrical design." + +/obj/item/device/electronic_assembly/tiny/scanner + name = "type-c electronic device" + icon_state = "setup_device_scanner" + desc = "It's a case, for building tiny-sized electronics with. This one has a scanner-like design." + +/obj/item/device/electronic_assembly/tiny/hook + name = "type-d electronic device" + icon_state = "setup_device_hook" + desc = "It's a case, for building tiny-sized electronics with. This one looks like it has a belt clip, but it's purely decorative." + +/obj/item/device/electronic_assembly/tiny/box + name = "type-e electronic device" + icon_state = "setup_device_box" + desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design." + +// Medium assemblies. + +/obj/item/device/electronic_assembly/medium + name = "electronic mechanism" + icon_state = "setup_medium" + desc = "It's a case, for building medium-sized electronics with." + w_class = ITEMSIZE_NORMAL + max_components = IC_COMPONENTS_BASE * 2 + max_complexity = IC_COMPLEXITY_BASE * 2 + +/obj/item/device/electronic_assembly/medium/default + name = "type-a electronic mechanism" + +/obj/item/device/electronic_assembly/medium/box + name = "type-b electronic mechanism" + icon_state = "setup_medium_box" + desc = "It's a case, for building medium-sized electronics with. This one has a boxy design." + +/obj/item/device/electronic_assembly/medium/clam + name = "type-c electronic mechanism" + icon_state = "setup_medium_clam" + desc = "It's a case, for building medium-sized electronics with. This one has a clamshell design." + +/obj/item/device/electronic_assembly/medium/medical + name = "type-d electronic mechanism" + icon_state = "setup_medium_med" + desc = "It's a case, for building medium-sized electronics with. This one resembles some type of medical apparatus." + +/obj/item/device/electronic_assembly/medium/gun + name = "type-e electronic mechanism" + icon_state = "setup_medium_gun" + item_state = "circuitgun" + desc = "It's a case, for building medium-sized electronics with. This one resembles a gun, or some type of tool, \ + if you're feeling optimistic." +// can_fire_equipped = TRUE + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi', + ) + +/obj/item/device/electronic_assembly/medium/radio + name = "type-f electronic mechanism" + icon_state = "setup_medium_radio" + desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio." + +// Large assemblies. + +/obj/item/device/electronic_assembly/large + name = "electronic machine" + icon_state = "setup_large" + desc = "It's a case, for building large electronics with." + w_class = ITEMSIZE_LARGE + max_components = IC_COMPONENTS_BASE * 4 + max_complexity = IC_COMPLEXITY_BASE * 4 + can_anchor = TRUE + +/obj/item/device/electronic_assembly/large/default + name = "type-a electronic machine" + +/obj/item/device/electronic_assembly/large/scope + name = "type-b electronic machine" + icon_state = "setup_large_scope" + desc = "It's a case, for building large electronics with. This one resembles an oscilloscope." + +/obj/item/device/electronic_assembly/large/terminal + name = "type-c electronic machine" + icon_state = "setup_large_terminal" + desc = "It's a case, for building large electronics with. This one resembles a computer terminal." + +/obj/item/device/electronic_assembly/large/arm + name = "type-d electronic machine" + icon_state = "setup_large_arm" + desc = "It's a case, for building large electronics with. This one resembles a robotic arm." + +/obj/item/device/electronic_assembly/large/tall + name = "type-e electronic machine" + icon_state = "setup_large_tall" + desc = "It's a case, for building large electronics with. This one has a tall design." + +/obj/item/device/electronic_assembly/large/industrial + name = "type-f electronic machine" + icon_state = "setup_large_industrial" + desc = "It's a case, for building large electronics with. This one resembles some kind of industrial machinery." + +// Drone assemblies, which can move with the locomotion circuit. + +/obj/item/device/electronic_assembly/drone + name = "electronic drone" + icon_state = "setup_drone" + desc = "It's a case, for building mobile electronics with." + w_class = ITEMSIZE_NORMAL + max_components = IC_COMPONENTS_BASE * 1.5 + max_complexity = IC_COMPLEXITY_BASE * 1.5 + can_anchor = FALSE + +/obj/item/device/electronic_assembly/drone/can_move() + return TRUE + +/obj/item/device/electronic_assembly/drone/default + name = "type-a electronic drone" + +/obj/item/device/electronic_assembly/drone/arms + name = "type-b electronic drone" + icon_state = "setup_drone_arms" + desc = "It's a case, for building mobile electronics with. This one is armed and dangerous." + +/obj/item/device/electronic_assembly/drone/secbot + name = "type-c electronic drone" + icon_state = "setup_drone_secbot" + desc = "It's a case, for building mobile electronics with. This one resembles a Securitron." + +/obj/item/device/electronic_assembly/drone/medbot + name = "type-d electronic drone" + icon_state = "setup_drone_medbot" + desc = "It's a case, for building mobile electronics with. This one resembles a Medibot." + +/obj/item/device/electronic_assembly/drone/genbot + name = "type-e electronic drone" + icon_state = "setup_drone_genbot" + desc = "It's a case, for building mobile electronics with. This one has a generic bot design." + +/obj/item/device/electronic_assembly/drone/android + name = "type-f electronic drone" + icon_state = "setup_drone_android" + desc = "It's a case, for building mobile electronics with. This one has a hominoid design." + +// Wall mounted assemblies. + +/obj/item/device/electronic_assembly/wallmount + name = "wall-mounted electronic assembly" + icon_state = "setup_wallmount_medium" + desc = "It's a case, for building medium-sized electronics with. It has a magnetized \ + backing to allow it to stick to walls." + w_class = ITEMSIZE_NORMAL + max_components = IC_COMPONENTS_BASE * 2 + max_complexity = IC_COMPLEXITY_BASE * 2 + can_anchor = TRUE + +/obj/item/device/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) + if(get_dist(on_wall,user) > 1) + return + var/ndir = get_dir(on_wall, user) + if(!(ndir in cardinal)) + return + var/turf/T = get_turf(user) + if(!istype(T, /turf/simulated/floor)) + to_chat(user, "You cannot place \the [src] on this spot!") + return + playsound(src.loc, 'sound/machines/click.ogg', 75, 1) + user.visible_message("\The [user] attaches \the [src] to the wall.", + "You attach \the [src] to the wall.", + "You hear clicking.") + user.drop_item(T) + anchored = TRUE + on_anchored() + switch(ndir) + if(NORTH) + pixel_y = -31 + if(SOUTH) + pixel_y = 31 + if(EAST) + pixel_x = -31 + if(WEST) + pixel_x = 31 + +/obj/item/device/electronic_assembly/wallmount/on_unanchored() + pixel_x = 0 + pixel_y = 0 + ..() + +/obj/item/device/electronic_assembly/wallmount/heavy + name = "heavy wall-mounted electronic assembly" + icon_state = "setup_wallmount_large" + desc = "It's a case, for building large electronics with. It has a magnetized backing \ + to allow it to stick to walls." + w_class = ITEMSIZE_LARGE + max_components = IC_COMPONENTS_BASE * 4 + max_complexity = IC_COMPLEXITY_BASE * 4 + +/obj/item/device/electronic_assembly/wallmount/light + name = "light wall-mounted electronic assembly" + icon_state = "setup_wallmount_small" + desc = "It's a case, for building small electronics with. It has a magnetized backing \ + to allow it to stick to walls." + w_class = ITEMSIZE_SMALL + max_components = IC_COMPONENTS_BASE + max_complexity = IC_COMPLEXITY_BASE + +/obj/item/device/electronic_assembly/wallmount/tiny + name = "tiny wall-mounted electronic assembly" + icon_state = "setup_wallmount_tiny" + desc = "It's a case, for building tiny electronics with. It has a magnetized backing \ + to allow it to stick to walls." + w_class = ITEMSIZE_TINY + max_components = IC_COMPONENTS_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/assemblies/implant.dm b/code/modules/integrated_electronics/core/assemblies/implant.dm new file mode 100644 index 0000000000..11db537768 --- /dev/null +++ b/code/modules/integrated_electronics/core/assemblies/implant.dm @@ -0,0 +1,21 @@ +// Note that this is contained inside an actual implant subtype. +// See code/game/objects/items/weapons/implants/implantcircuits.dm for where this gets held. + +/obj/item/device/electronic_assembly/implant + name = "electronic implant" + icon_state = "setup_implant" + desc = "It's a case, for building very tiny electronics with." + w_class = ITEMSIZE_TINY + max_components = IC_COMPONENTS_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 + var/obj/item/weapon/implant/integrated_circuit/implant = null + +/obj/item/device/electronic_assembly/implant/nano_host() + return implant + +/obj/item/device/electronic_assembly/implant/resolve_nano_host() + return implant + +/obj/item/device/electronic_assembly/implant/update_icon() + ..() + implant.icon_state = icon_state \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/detailer.dm b/code/modules/integrated_electronics/core/detailer.dm new file mode 100644 index 0000000000..cd1696aecc --- /dev/null +++ b/code/modules/integrated_electronics/core/detailer.dm @@ -0,0 +1,45 @@ +/obj/item/device/integrated_electronics/detailer + name = "assembly detailer" + desc = "A combination autopainter and flash anodizer designed to give electronic assemblies a colorful, wear-resistant finish." + icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' + icon_state = "detailer" + item_flags = NOBLUDGEON + w_class = ITEMSIZE_SMALL + var/detail_color = COLOR_ASSEMBLY_WHITE + var/list/color_list = list( + "black" = COLOR_ASSEMBLY_BLACK, + "machine gray" = COLOR_ASSEMBLY_BGRAY, + "white" = COLOR_ASSEMBLY_WHITE, + "red" = COLOR_ASSEMBLY_RED, + "orange" = COLOR_ASSEMBLY_ORANGE, + "beige" = COLOR_ASSEMBLY_BEIGE, + "brown" = COLOR_ASSEMBLY_BROWN, + "gold" = COLOR_ASSEMBLY_GOLD, + "yellow" = COLOR_ASSEMBLY_YELLOW, + "gurkha" = COLOR_ASSEMBLY_GURKHA, + "light green" = COLOR_ASSEMBLY_LGREEN, + "green" = COLOR_ASSEMBLY_GREEN, + "light blue" = COLOR_ASSEMBLY_LBLUE, + "blue" = COLOR_ASSEMBLY_BLUE, + "purple" = COLOR_ASSEMBLY_PURPLE, + "hot pink" = COLOR_ASSEMBLY_HOT_PINK + ) + +/obj/item/device/integrated_electronics/detailer/initialize() + update_icon() + return ..() + +/obj/item/device/integrated_electronics/detailer/update_icon() + cut_overlays() + var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/integrated_electronics/electronic_tools.dmi', "detailer-color") + detail_overlay.color = detail_color + add_overlay(detail_overlay) + +/obj/item/device/integrated_electronics/detailer/attack_self(mob/user) + var/color_choice = input(user, "Select color.", "Assembly Detailer", detail_color) as null|anything in color_list + if(!color_list[color_choice]) + return + if(!in_range(src, user)) + return + detail_color = color_list[color_choice] + update_icon() diff --git a/code/modules/integrated_electronics/core/helpers.dm b/code/modules/integrated_electronics/core/helpers.dm index e31b26fbb1..8af8f11fba 100644 --- a/code/modules/integrated_electronics/core/helpers.dm +++ b/code/modules/integrated_electronics/core/helpers.dm @@ -1,7 +1,8 @@ /obj/item/integrated_circuit/proc/setup_io(var/list/io_list, var/io_type, var/list/io_default_list) var/list/io_list_copy = io_list.Copy() io_list.Cut() - var/i = 0 + var/i = 1 + for(var/io_entry in io_list_copy) var/default_data = null var/io_type_override = null @@ -13,10 +14,10 @@ io_type_override = io_list_copy[io_entry] if(io_type_override) - // world << "io_type_override is now [io_type_override] on [src]." io_list.Add(new io_type_override(src, io_entry, default_data)) else io_list.Add(new io_type(src, io_entry, default_data)) + i++ /obj/item/integrated_circuit/proc/set_pin_data(var/pin_type, var/pin_number, datum/new_data) if (istype(new_data) && !isweakref(new_data)) diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 08a3152908..d612bd7211 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -330,6 +330,7 @@ a creative player the means to solve many problems. Circuits are held inside an to_chat(usr, "\The [src] seems to be permanently attached to the case.") return var/obj/item/device/electronic_assembly/ea = loc + power_fail() disconnect_all() var/turf/T = get_turf(src) forceMove(T) @@ -394,3 +395,9 @@ a creative player the means to solve many problems. Circuits are held inside an O.disconnect() for(var/datum/integrated_io/activate/A in activators) A.disconnect() + +/obj/item/integrated_circuit/proc/on_anchored() + return + +/obj/item/integrated_circuit/proc/on_unanchored() + return \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm index 8621e2b7ed..ef6f0a6dbc 100644 --- a/code/modules/integrated_electronics/core/pins.dm +++ b/code/modules/integrated_electronics/core/pins.dm @@ -28,7 +28,7 @@ D [1]/ || /datum/integrated_io/New(var/newloc, var/name, var/new_data) ..() src.name = name - if(new_data) + if(!isnull(new_data)) src.data = new_data holder = newloc if(!istype(holder)) diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 794755b02c..fb9bfb5095 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -2,16 +2,17 @@ /obj/item/device/integrated_circuit_printer name = "integrated circuit printer" desc = "A portable(ish) machine made to print tiny modular circuitry out of metal." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "circuit_printer" w_class = ITEMSIZE_LARGE var/metal = 0 var/max_metal = 100 var/metal_per_sheet = 10 // One sheet equals this much metal. + var/debug = FALSE // If true, metal is infinite. var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits. - var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. - var/static/list/recipe_list = list() + var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. (Not implemented) +// var/static/list/recipe_list = list() var/current_category = null var/obj/item/device/electronic_assembly/assembly_to_clone = null @@ -19,67 +20,32 @@ upgraded = TRUE can_clone = TRUE -/obj/item/device/integrated_circuit_printer/initialize() - . = ..() - if(!recipe_list.len) - // Unfortunately this needed a lot of loops, but it should only be run once at init. - - // First loop is to seperate the actual circuits from base circuits. - var/list/circuits_to_use = list() - for(var/obj/item/integrated_circuit/IC in all_integrated_circuits) - if((IC.spawn_flags & IC_SPAWN_DEFAULT) || (IC.spawn_flags & IC_SPAWN_RESEARCH)) - circuits_to_use.Add(IC) - - // Second loop is to find all categories. - var/list/found_categories = list() - for(var/obj/item/integrated_circuit/IC in circuits_to_use) - if(!(IC.category_text in found_categories)) - found_categories.Add(IC.category_text) - - // Third loop is to initialize lists by category names, then put circuits matching the category inside. - for(var/category in found_categories) - recipe_list[category] = list() - var/list/current_list = recipe_list[category] - for(var/obj/item/integrated_circuit/IC in circuits_to_use) - if(IC.category_text == category) - current_list.Add(IC) - - // Now for non-circuit things. - var/list/assembly_list = list() - assembly_list.Add( - new /obj/item/device/electronic_assembly(null), - new /obj/item/device/electronic_assembly/medium(null), - new /obj/item/device/electronic_assembly/large(null), - new /obj/item/device/electronic_assembly/drone(null), - new /obj/item/weapon/implant/integrated_circuit(null), - new /obj/item/device/assembly/electronic_assembly(null) - ) - recipe_list["Assemblies"] = assembly_list - - var/list/tools_list = list() - tools_list.Add( - new /obj/item/device/integrated_electronics/wirer(null), - new /obj/item/device/integrated_electronics/debugger(null) - ) - recipe_list["Tools"] = tools_list - +/obj/item/device/integrated_circuit_printer/debug + name = "fractal integrated circuit printer" + desc = "A portable(ish) machine that makes modular circuitry seemingly out of thin air." + upgraded = TRUE + can_clone = TRUE + debug = TRUE /obj/item/device/integrated_circuit_printer/attackby(var/obj/item/O, var/mob/user) if(istype(O,/obj/item/stack/material)) var/obj/item/stack/material/stack = O if(stack.material.name == DEFAULT_WALL_MATERIAL) + if(debug) + to_chat(user, span("warning", "\The [src] does not need any material.")) + return var/num = min((max_metal - metal) / metal_per_sheet, stack.amount) if(num < 1) - to_chat(user, "\The [src] is too full to add more metal.") + to_chat(user, span("warning", "\The [src] is too full to add more metal.")) return if(stack.use(num)) - to_chat(user, "You add [num] sheet\s to \the [src].") + to_chat(user, span("notice", "You add [num] sheet\s to \the [src].")) metal += num * metal_per_sheet interact(user) return TRUE if(istype(O,/obj/item/integrated_circuit)) - to_chat(user, "You insert the circuit into \the [src]. ") + to_chat(user, span("notice", "You insert the circuit into \the [src].")) user.unEquip(O) metal = min(metal + O.w_class, max_metal) qdel(O) @@ -88,18 +54,18 @@ if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/advanced)) if(upgraded) - to_chat(user, "\The [src] already has this upgrade. ") + to_chat(user, span("warning", "\The [src] already has this upgrade.")) return TRUE - to_chat(user, "You install \the [O] into \the [src]. ") + to_chat(user, span("notice", "You install \the [O] into \the [src].")) upgraded = TRUE interact(user) return TRUE if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/clone)) if(can_clone) - to_chat(user, "\The [src] already has this upgrade. ") + to_chat(user, span("warning", "\The [src] already has this upgrade.")) return TRUE - to_chat(user, "You install \the [O] into \the [src]. ") + to_chat(user, span("notice", "You install \the [O] into \the [src].")) can_clone = TRUE interact(user) return TRUE @@ -114,18 +80,21 @@ var/window_width = 500 if(isnull(current_category)) - current_category = recipe_list[1] + current_category = SScircuit.circuit_fabricator_recipe_list[1] var/HTML = "

Integrated Circuit Printer


" - HTML += "Metal: [metal/metal_per_sheet]/[max_metal/metal_per_sheet] sheets.
" - HTML += "Circuits available: [upgraded ? "Regular":"Advanced"]." - HTML += "Assembly Cloning: [can_clone ? "Available": "Unavailable"]." + if(!debug) + HTML += "Metal: [metal/metal_per_sheet]/[max_metal/metal_per_sheet] sheets.
" + else + HTML += "Metal: INFINITY.
" + HTML += "Circuits available: [upgraded ? "Advanced":"Regular"].
" + HTML += "Assembly Cloning: [can_clone ? "Available": "Unavailable"].
" if(assembly_to_clone) - HTML += "Assembly '[assembly_to_clone.name]' loaded." + HTML += "Assembly '[assembly_to_clone.name]' loaded.
" HTML += "Crossed out circuits mean that the printer is not sufficentally upgraded to create that circuit.
" HTML += "
" HTML += "Categories:" - for(var/category in recipe_list) + for(var/category in SScircuit.circuit_fabricator_recipe_list) if(category != current_category) HTML += " \[[category]\] " else // Bold the button if it's already selected. @@ -133,20 +102,22 @@ HTML += "
" HTML += "

[current_category]

" - var/list/current_list = recipe_list[current_category] - for(var/obj/O in current_list) + var/list/current_list = SScircuit.circuit_fabricator_recipe_list[current_category] + for(var/path in current_list) + var/obj/O = path var/can_build = TRUE - if(istype(O, /obj/item/integrated_circuit)) - var/obj/item/integrated_circuit/IC = O - if((IC.spawn_flags & IC_SPAWN_RESEARCH) && (!(IC.spawn_flags & IC_SPAWN_DEFAULT)) && !upgraded) + if(ispath(path, /obj/item/integrated_circuit)) + var/obj/item/integrated_circuit/IC = path + if((initial(IC.spawn_flags) & IC_SPAWN_RESEARCH) && (!(initial(IC.spawn_flags) & IC_SPAWN_DEFAULT)) && !upgraded) can_build = FALSE if(can_build) - HTML += "\[[O.name]\]: [O.desc]
" + HTML += "\[[initial(O.name)]\]: [initial(O.desc)]
" else - HTML += "\[[O.name]\]: [O.desc]
" + HTML += "\[[initial(O.name)]\]: [initial(O.desc)]
" user << browse(jointext(HTML, null), "window=integrated_printer;size=[window_width]x[window_height];border=1;can_resize=1;can_close=1;can_minimize=1") + /obj/item/device/integrated_circuit_printer/Topic(href, href_list) if(..()) return 1 @@ -162,31 +133,36 @@ return 1 var/cost = 1 - + if(isnull(current_category)) - current_category = recipe_list[1] + current_category = SScircuit.circuit_fabricator_recipe_list[1] if(ispath(build_type, /obj/item/device/electronic_assembly)) var/obj/item/device/electronic_assembly/E = build_type cost = round( (initial(E.max_complexity) + initial(E.max_components) ) / 4) else var/obj/item/I = build_type cost = initial(I.w_class) - if(!(locate(build_type) in recipe_list[current_category])) + if(!build_type in SScircuit.circuit_fabricator_recipe_list[current_category]) return - if(metal - cost < 0) - to_chat(usr, "You need [cost] metal to build that!.") - return 1 - metal -= cost - new build_type(get_turf(loc)) + if(!debug) + if(metal - cost < 0) + to_chat(usr, "You need [cost] metal to build that!.") + return 1 + metal -= cost + var/obj/item/built = new build_type(get_turf(loc)) + usr.put_in_hands(built) + to_chat(usr, "[capitalize(built.name)] printed.") + playsound(src, 'sound/items/jaws_pry.ogg', 50, TRUE) interact(usr) + // FUKKEN UPGRADE DISKS /obj/item/weapon/disk/integrated_circuit/upgrade name = "integrated circuit printer upgrade disk" desc = "Install this into your integrated circuit printer to enhance it." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "upgrade_disk" item_state = "card-id" w_class = ITEMSIZE_SMALL diff --git a/code/modules/integrated_electronics/core/special_pins/color_pin.dm b/code/modules/integrated_electronics/core/special_pins/color_pin.dm index 2d20560fb6..e58d2d8e75 100644 --- a/code/modules/integrated_electronics/core/special_pins/color_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/color_pin.dm @@ -3,7 +3,7 @@ name = "color pin" /datum/integrated_io/color/ask_for_pin_data(mob/user) - var/new_data = input("Please select a color.","[src] color writing") as null|color + var/new_data = input("Please select a color.","[src] color writing", data ? data : "#000000") as null|color if(holder.check_interactivity(user) ) to_chat(user, "You input a new color into the pin.") write_data_to_pin(new_data) diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm index c9d1c89e2b..eb42d92dda 100644 --- a/code/modules/integrated_electronics/core/tools.dm +++ b/code/modules/integrated_electronics/core/tools.dm @@ -9,11 +9,11 @@ desc = "It's a small wiring tool, with a wire roll, electric soldering iron, wire cutter, and more in one package. \ The wires used are generally useful for small electronics, such as circuitboards and breadboards, as opposed to larger wires \ used for power or data transmission." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "wirer-wire" item_state = "wirer" flags = CONDUCT - w_class = 2 + w_class = ITEMSIZE_SMALL var/datum/integrated_io/selected_io = null var/mode = WIRE @@ -108,7 +108,7 @@ name = "circuit debugger" desc = "This small tool allows one working with custom machinery to directly set data to a specific pin, useful for writing \ settings to specific circuits, or for debugging purposes. It can also pulse activation pins." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "debugger" flags = CONDUCT w_class = 2 @@ -252,7 +252,7 @@ /obj/item/weapon/storage/bag/circuits name = "circuit kit" desc = "This kit's essential for any circuitry projects." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_misc.dmi' icon_state = "circuit_kit" w_class = 3 display_contents_with_number = 0 diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 0a516e360a..829027303c 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -6,7 +6,7 @@ origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_DATA = 2) category_text = "Power - Passive" -/obj/item/integrated_circuit/passive/power/proc/make_energy() +/obj/item/integrated_circuit/passive/power/proc/handle_passive_energy() return // For calculators. @@ -20,7 +20,7 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH var/max_power = 1 -/obj/item/integrated_circuit/passive/power/solar_cell/make_energy() +/obj/item/integrated_circuit/passive/power/solar_cell/handle_passive_energy() var/turf/T = get_turf(src) var/light_amount = T ? T.get_lumcount() : 0 var/adjusted_power = max(max_power * light_amount, 0) @@ -39,7 +39,7 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH var/is_charge=0 -/obj/item/integrated_circuit/passive/power/starter/make_energy() +/obj/item/integrated_circuit/passive/power/starter/handle_passive_energy() if(assembly.battery) if(assembly.battery.charge) if(!is_charge) @@ -67,7 +67,7 @@ return FALSE // Robots and dead people don't have a metabolism. return TRUE -/obj/item/integrated_circuit/passive/power/metabolic_siphon/make_energy() +/obj/item/integrated_circuit/passive/power/metabolic_siphon/handle_passive_energy() var/mob/living/carbon/human/host = null if(assembly && istype(assembly, /obj/item/device/electronic_assembly/implant)) var/obj/item/device/electronic_assembly/implant/implant_assembly = assembly @@ -135,7 +135,7 @@ set_pin_data(IC_OUTPUT, 1, reagents.total_volume) push_data() -/obj/item/integrated_circuit/passive/power/chemical_cell/make_energy() +/obj/item/integrated_circuit/passive/power/chemical_cell/handle_passive_energy() if(assembly) for(var/I in fuel) if((assembly.battery.maxcharge-assembly.battery.charge) / CELLRATE > fuel[I]) @@ -156,7 +156,7 @@ spawn_flags = IC_SPAWN_RESEARCH power_amount = 2000 -/obj/item/integrated_circuit/passive/power/relay/make_energy() +/obj/item/integrated_circuit/passive/power/relay/handle_passive_energy() if(!assembly) return var/area/A = get_area(src) @@ -164,3 +164,78 @@ if(A.powered(EQUIP) && assembly.give_power(power_amount)) A.use_power(power_amount, EQUIP) // give_power() handles CELLRATE on its own. + +// Interacts with the powernet. +// Now you can make your own power generation (or poor man's powersink). + +/obj/item/integrated_circuit/passive/power/powernet + name = "power network interface" + desc = "Gives or takes power from a wire underneath the machine." + icon_state = "powernet" + extended_desc = "The assembly must be anchored, with a wrench, and a wire node must be avaiable directly underneath.
\ + The first pin determines if power is moved at all. The second pin, if true, will draw from the powernet to charge the assembly's \ + cell, otherwise it will give power from the cell to the powernet." + complexity = 20 + inputs = list( + "active" = IC_PINTYPE_BOOLEAN, + "draw power" = IC_PINTYPE_BOOLEAN + ) + outputs = list( + "power in grid" = IC_PINTYPE_NUMBER, + "surplus power" = IC_PINTYPE_NUMBER, + "load" = IC_PINTYPE_NUMBER + ) + activators = list() + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + origin_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 2) + var/obj/machinery/power/circuit_io/IO = null // Dummy power machine to move energy in/out without a bunch of code duplication. + var/throughput = 10000 // Give/take up to 10kW. + +/obj/item/integrated_circuit/passive/power/powernet/initialize() + IO = new(src) + return ..() + +/obj/item/integrated_circuit/passive/power/powernet/Destroy() + qdel(IO) + return ..() + +/obj/item/integrated_circuit/passive/power/powernet/on_anchored() + IO.connect_to_network() + +/obj/item/integrated_circuit/passive/power/powernet/on_unanchored() + IO.disconnect_from_network() + +/obj/item/integrated_circuit/passive/power/powernet/handle_passive_energy() + if(assembly && assembly.anchored && assembly.battery) + var/should_act = get_pin_data(IC_INPUT, 1) // Even if this is false, we still need to update the output pins with powernet information. + var/drawing = get_pin_data(IC_INPUT, 2) + + if(should_act) // We're gonna give or take from the net. + if(drawing) + var/to_transfer = min(throughput, assembly.battery.amount_missing() / CELLRATE) // So we don't need to draw 10kW if the cell needs much less. + var/amount = IO.draw_power(to_transfer) + assembly.give_power(amount) + else + var/amount = assembly.draw_power(throughput) + IO.add_avail(amount) + + set_pin_data(IC_OUTPUT, 1, IO.avail()) + set_pin_data(IC_OUTPUT, 2, IO.surplus()) + set_pin_data(IC_OUTPUT, 3, IO.viewload()) + +// Internal power machine for interacting with the powernet. +// It needs a bit of special code since base /machinery/power assumes loc will be a tile. +/obj/machinery/power/circuit_io + name = "embedded electrical I/O" + +/obj/machinery/power/circuit_io/connect_to_network() + var/turf/T = get_turf(src) + if(!T || !istype(T)) + return FALSE + + var/obj/structure/cable/C = T.get_cable_node() + if(!C || !C.powernet) + return FALSE + + C.powernet.add_machine(src) + return TRUE diff --git a/code/modules/integrated_electronics/subtypes/built_in.dm b/code/modules/integrated_electronics/subtypes/built_in.dm index 24eac86802..afb804c797 100644 --- a/code/modules/integrated_electronics/subtypes/built_in.dm +++ b/code/modules/integrated_electronics/subtypes/built_in.dm @@ -1,7 +1,7 @@ /obj/item/integrated_circuit/built_in name = "integrated circuit" desc = "It's a tiny chip! This one doesn't seem to do much, however." - icon = 'icons/obj/electronic_assemblies.dmi' + icon = 'icons/obj/integrated_electronics/electronic_setups.dmi' icon_state = "template" size = -1 w_class = ITEMSIZE_TINY @@ -25,4 +25,15 @@ /obj/item/integrated_circuit/built_in/device_output/do_work() if(istype(assembly, /obj/item/device/electronic_assembly/device)) var/obj/item/device/electronic_assembly/device/device = assembly - device.holder.pulse() \ No newline at end of file + device.holder.pulse() + +// Triggered when clothing assembly's hud button is clicked (or used inhand). +/obj/item/integrated_circuit/built_in/action_button + name = "external trigger circuit" + desc = "A built in chip that outputs a pulse when an external control event occurs." + extended_desc = "This outputs a pulse if the assembly's HUD button is clicked while the assembly is closed." + complexity = 0 + activators = list("on activation" = IC_PINTYPE_PULSE_OUT) + +/obj/item/integrated_circuit/built_in/action_button/do_work() + activate_pin(1) \ No newline at end of file diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index b9f5c912d4..0ec00be317 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -318,5 +318,77 @@ set_pin_data(IC_OUTPUT, 1, x1 - x2) set_pin_data(IC_OUTPUT, 2, y1 - y2) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/converter/stringlength + name = "len circuit" + desc = "This circuit will return the number of characters in a string." + complexity = 1 + inputs = list( + "string" = IC_PINTYPE_STRING + ) + outputs = list( + "length" = IC_PINTYPE_NUMBER + ) + activators = list("get length" = IC_PINTYPE_PULSE_IN, "on acquisition" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/stringlength/do_work() + set_pin_data(IC_OUTPUT, 1, length(get_pin_data(IC_INPUT, 1))) + push_data() + + activate_pin(2) + +/obj/item/integrated_circuit/converter/hsv2hex + name = "hsv to hexadecimal converter" + desc = "This circuit can convert a HSV (Hue, Saturation, and Value) color to a Hexadecimal RGB color." + extended_desc = "The first pin controls tint (0-359), the second pin controls how intense the tint is (0-255), \ + and the third controls how bright the tint is (0 for black, 127 for normal, 255 for white)." + icon_state = "hsv-hex" + inputs = list( + "hue" = IC_PINTYPE_NUMBER, + "saturation" = IC_PINTYPE_NUMBER, + "value" = IC_PINTYPE_NUMBER + ) + outputs = list("hexadecimal rgb" = IC_PINTYPE_COLOR) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/hsv2hex/do_work() + var/result = null + pull_data() + var/hue = get_pin_data(IC_INPUT, 1) + var/saturation = get_pin_data(IC_INPUT, 2) + var/value = get_pin_data(IC_INPUT, 3) + if(isnum(hue) && isnum(saturation) && isnum(value)) + result = HSVtoRGB(hsv(AngleToHue(hue),saturation,value)) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/converter/rgb2hex + name = "rgb to hexadecimal converter" + desc = "This circuit can convert a RGB (Red, Green, Blue) color to a Hexadecimal RGB color." + extended_desc = "The first pin controls red amount, the second pin controls green amount, and the third controls blue amount. They all go from 0-255." + icon_state = "rgb-hex" + inputs = list( + "red" = IC_PINTYPE_NUMBER, + "green" = IC_PINTYPE_NUMBER, + "blue" = IC_PINTYPE_NUMBER + ) + outputs = list("hexadecimal rgb" = IC_PINTYPE_COLOR) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/rgb2hex/do_work() + var/result = null + pull_data() + var/red = get_pin_data(IC_INPUT, 1) + var/green = get_pin_data(IC_INPUT, 2) + var/blue = get_pin_data(IC_INPUT, 3) + if(isnum(red) && isnum(green) && isnum(blue)) + result = rgb(red, green, blue) + + set_pin_data(IC_OUTPUT, 1, result) push_data() activate_pin(2) \ No newline at end of file diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index ac9a0e13f9..c2e640403a 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -53,7 +53,7 @@ power_draw_per_use = 4 /obj/item/integrated_circuit/input/numberpad/ask_for_input(mob/user) - var/new_input = input(user, "Enter a number, please.","Number pad") as null|num + var/new_input = input(user, "Enter a number, please.","Number pad", get_pin_data(IC_OUTPUT, 1)) as null|num if(isnum(new_input) && CanInteract(user, physical_state)) set_pin_data(IC_OUTPUT, 1, new_input) push_data() @@ -72,18 +72,37 @@ power_draw_per_use = 4 /obj/item/integrated_circuit/input/textpad/ask_for_input(mob/user) - var/new_input = input(user, "Enter some words, please.","Number pad") as null|text + var/new_input = input(user, "Enter some words, please.","Number pad", get_pin_data(IC_OUTPUT, 1)) as null|text if(istext(new_input) && CanInteract(user, physical_state)) set_pin_data(IC_OUTPUT, 1, new_input) push_data() activate_pin(1) +/obj/item/integrated_circuit/input/colorpad + name = "color pad" + desc = "This small color pad allows someone to input a hexadecimal color into the system." + icon_state = "colorpad" + complexity = 2 + can_be_asked_input = 1 + inputs = list() + outputs = list("color entered" = IC_PINTYPE_COLOR) + activators = list("on entered" = IC_PINTYPE_PULSE_IN) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 4 + +/obj/item/integrated_circuit/input/colorpad/ask_for_input(mob/user) + var/new_color = input(user, "Enter a color, please.", "Color pad", get_pin_data(IC_OUTPUT, 1)) as color|null + if(new_color && CanInteract(user, physical_state)) + set_pin_data(IC_OUTPUT, 1, new_color) + push_data() + activate_pin(1) + /obj/item/integrated_circuit/input/med_scanner name = "integrated medical analyser" desc = "A very small version of the common medical analyser. This allows the machine to know how healthy someone is." icon_state = "medscan" complexity = 4 - inputs = list("\ target") + inputs = list("target" = IC_PINTYPE_REF) outputs = list( "total health %" = IC_PINTYPE_NUMBER, "total missing health" = IC_PINTYPE_NUMBER @@ -117,7 +136,7 @@ This type is much more precise, allowing the machine to know much more about the target than a normal analyzer." icon_state = "medscan_adv" complexity = 12 - inputs = list("\ target") + inputs = list("target" = IC_PINTYPE_REF) outputs = list( "total health %" = IC_PINTYPE_NUMBER, "total missing health" = IC_PINTYPE_NUMBER, @@ -159,7 +178,7 @@ relative coordinates, total amount of reagents, and maximum amount of reagents of the referenced object." icon_state = "video_camera" complexity = 6 - inputs = list("\ target" = IC_PINTYPE_REF) + inputs = list("target" = IC_PINTYPE_REF) outputs = list( "name" = IC_PINTYPE_STRING, "description" = IC_PINTYPE_STRING, @@ -262,7 +281,7 @@ complexity = 6 name = "advanced locator" desc = "This is needed for certain devices that demand a reference for a target to act upon. This type locates something \ - that is standing in given radius of up to 8 meters" + that is standing in given radius of up to 7 meters" extended_desc = "The first pin requires a ref to a kind of object that you want the locator to acquire. This means that it will \ give refs to nearby objects that are similar to given sample. If this pin is a string, the locator will search for\ item by matching desired text in name + description. If more than one valid object is found nearby, it will choose one of them at \ @@ -277,7 +296,7 @@ /obj/item/integrated_circuit/input/advanced_locator/on_data_written() var/rad = get_pin_data(IC_INPUT, 2) if(isnum(rad)) - rad = Clamp(rad, 0, 8) + rad = Clamp(rad, 0, 7) radius = rad /obj/item/integrated_circuit/input/advanced_locator/do_work() diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index c0eb3d5338..99a6c247a9 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -78,7 +78,25 @@ else if(assembly) assembly.set_light(0) - power_draw_idle = light_toggled ? light_brightness * 2 : 0 + power_draw_idle = light_toggled ? light_brightness * light_brightness : 0 // Should be the same draw as regular lights. + +/obj/item/integrated_circuit/output/light/power_fail() // Turns off the flashlight if there's no power left. + light_toggled = FALSE + update_lighting() + +/obj/item/integrated_circuit/output/light/advanced + name = "advanced light" + desc = "This light can turn on and off on command, in any color, and in various brightness levels." + extended_desc = "The brightness is limited to values between 1 and 6." + icon_state = "light_adv" + complexity = 8 + inputs = list( + "color" = IC_PINTYPE_COLOR, + "brightness" = IC_PINTYPE_NUMBER + ) + outputs = list() + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3) /obj/item/integrated_circuit/output/light/advanced/update_lighting() var/new_color = get_pin_data(IC_INPUT, 1) @@ -91,42 +109,9 @@ ..() -/obj/item/integrated_circuit/output/light/power_fail() // Turns off the flashlight if there's no power left. - light_toggled = FALSE - update_lighting() - -/obj/item/integrated_circuit/output/light/advanced - name = "advanced light" - desc = "This light can turn on and off on command, in any color, and in various brightness levels." - icon_state = "light_adv" - complexity = 8 - inputs = list( - "color" = IC_PINTYPE_COLOR, - "brightness" = IC_PINTYPE_NUMBER - ) - outputs = list() - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3) - /obj/item/integrated_circuit/output/light/advanced/on_data_written() update_lighting() -/obj/item/integrated_circuit/output/sound - name = "speaker circuit" - desc = "A miniature speaker is attached to this component." - icon_state = "speaker" - complexity = 8 - cooldown_per_use = 4 SECONDS - inputs = list( - "sound ID" = IC_PINTYPE_STRING, - "volume" = IC_PINTYPE_NUMBER, - "frequency" = IC_PINTYPE_BOOLEAN - ) - outputs = list() - activators = list("play sound" = IC_PINTYPE_PULSE_IN) - power_draw_per_use = 20 - var/list/sounds = list() - /obj/item/integrated_circuit/output/text_to_speech name = "text-to-speech circuit" desc = "A miniature speaker is attached to this component." @@ -146,6 +131,22 @@ var/obj/O = assembly ? loc : assembly audible_message("\icon[O] \The [O.name] states, \"[text]\"") +/obj/item/integrated_circuit/output/sound + name = "speaker circuit" + desc = "A miniature speaker is attached to this component." + icon_state = "speaker" + complexity = 8 + cooldown_per_use = 4 SECONDS + inputs = list( + "sound ID" = IC_PINTYPE_STRING, + "volume" = IC_PINTYPE_NUMBER, + "frequency" = IC_PINTYPE_BOOLEAN + ) + outputs = list() + activators = list("play sound" = IC_PINTYPE_PULSE_IN) + power_draw_per_use = 20 + var/list/sounds = list() + /obj/item/integrated_circuit/output/sound/New() ..() extended_desc = list() @@ -337,3 +338,147 @@ /obj/item/integrated_circuit/output/led/pink name = "pink LED" led_color = COLOR_PINK + + + +/obj/item/integrated_circuit/output/holographic_projector + name = "holographic projector" + desc = "This projects a holographic copy of an object." + extended_desc = "If the assembly moves, the hologram will also move.
\ + Position coordinates are relative to the assembly, and are capped between -7 and 7.
\ + The assembly must be able to see the object to make a holographic copy of it.
\ + Scaling is capped between -2 and 2.
\ + The rotation pin uses degrees.
\ + Imitated object cannot be changed while projecting. Position, \ + scale, and rotation can be updated without restarting by pulsing the update hologram pin." + complexity = 40 + icon_state = "holo_projector" + inputs = list( + "project hologram" = IC_PINTYPE_BOOLEAN, + "object to copy" = IC_PINTYPE_REF, + "hologram color" = IC_PINTYPE_COLOR, + "hologram X pos" = IC_PINTYPE_NUMBER, + "hologram Y pos" = IC_PINTYPE_NUMBER, + "hologram scale" = IC_PINTYPE_NUMBER, + "hologram rotation" = IC_PINTYPE_NUMBER + ) + inputs_default = list( + "3" = "#7DB4E1", + "4" = 0, + "5" = 0, + "6" = 1, + "7" = 0 + ) + outputs = list() + activators = list( + "update hologram" = IC_PINTYPE_PULSE_IN, + "on drawn hologram" = IC_PINTYPE_PULSE_OUT + ) + power_draw_idle = 0 // Raises to 500 when active, like a regular holopad. + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + var/obj/effect/overlay/holographic/hologram = null // Reference to the hologram effect, and also used to see if component is active. + var/icon/holo_base = null // Uncolored holographic icon. +// var/datum/beam/holo_beam = null // A visual effect, to make it easy to know where a hologram is coming from. + // It is commented out due to picking up the assembly killing the beam. + +/obj/item/integrated_circuit/output/holographic_projector/Destroy() + destroy_hologram() + return ..() + +/obj/item/integrated_circuit/output/holographic_projector/do_work() + var/toggled = get_pin_data(IC_INPUT, 1) + + if(hologram) // Currently active. + if(!toggled) // Being turned off. + destroy_hologram() + + else // Updating position/dir/etc. + update_hologram() + + else // Currently not active. + if(toggled) // We're gonna turn on. + create_hologram() + + activate_pin(2) + +// Updates some changable aspects of the hologram like the size or position. +/obj/item/integrated_circuit/output/holographic_projector/proc/update_hologram() + if(!hologram) + return FALSE + + var/holo_scale = get_pin_data(IC_INPUT, 6) + var/holo_rotation = get_pin_data(IC_INPUT, 7) + + if(!isnum(holo_scale) || !isnum(holo_rotation) ) + return FALSE // Invalid. + + hologram.adjust_scale(between(-2, holo_scale, 2) ) + hologram.adjust_rotation(holo_rotation) + update_hologram_position() + + return TRUE + +// This is a seperate function because other things besides do_work() might warrant updating position, like movement, without bothering with other parts. +/obj/item/integrated_circuit/output/holographic_projector/proc/update_hologram_position() + var/holo_x = get_pin_data(IC_INPUT, 4) + var/holo_y = get_pin_data(IC_INPUT, 5) + if(!isnum(holo_x) || !isnum(holo_y) ) + return FALSE + + holo_x = between(-7, holo_x, 7) + holo_y = between(-7, holo_y, 7) + + var/turf/T = get_turf(src) + if(T) + // Absolute coordinates. + var/holo_abs_x = T.x + holo_x + var/holo_abs_y = T.y + holo_y + var/turf/W = locate(holo_abs_x, holo_abs_y, T.z) + if(W) // Make sure we're not out of bounds. + hologram.forceMove(W) + return TRUE + return FALSE + +/obj/item/integrated_circuit/output/holographic_projector/proc/create_hologram() + var/atom/movable/AM = get_pin_data_as_type(IC_INPUT, 2, /atom/movable) + var/holo_color = get_pin_data(IC_INPUT, 3) + + if(istype(AM) && assembly) + if(AM in view(get_turf(src))) // It must be able to 'see' the object it will copy. + hologram = new(src) + var/icon/holo_icon = getHologramIcon(getFlatIcon(AM), no_color = TRUE) + // holo_icon.GrayScale() // So it looks better colored. + if(holo_color) // The color pin should ensure that it is a valid hex. + holo_icon.ColorTone(holo_color) + hologram.icon = holo_icon + hologram.name = "[AM.name] (Hologram)" + update_hologram() + + // holo_beam = assembly.Beam(hologram, icon_state = "holo_beam", time = INFINITY, maxdistance = world.view) + power_draw_idle = 500 + return TRUE + return FALSE + + + +/obj/item/integrated_circuit/output/holographic_projector/proc/destroy_hologram() + hologram.forceMove(src) + qdel(hologram) + +// holo_beam.End() +// qdel_null(holo_beam) + + power_draw_idle = 0 + +/obj/item/integrated_circuit/output/holographic_projector/on_data_written() + if(hologram) + update_hologram() + +/obj/item/integrated_circuit/output/holographic_projector/on_loc_moved(atom/oldloc) + if(hologram) + update_hologram_position() + +/obj/item/integrated_circuit/output/holographic_projector/power_fail() + if(hologram) + destroy_hologram() + set_pin_data(IC_INPUT, 1, FALSE) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 65929e51c9..e8ca2ae134 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -2,7 +2,6 @@ category_text = "Reagent" var/volume = 0 unacidable = 1 - phoronproof = 1 origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2) /obj/item/integrated_circuit/reagent/New() diff --git a/code/modules/integrated_electronics/~defines/~defines.dm b/code/modules/integrated_electronics/~defines/~defines.dm index 90aa05acf1..a9c68b28af 100644 --- a/code/modules/integrated_electronics/~defines/~defines.dm +++ b/code/modules/integrated_electronics/~defines/~defines.dm @@ -5,9 +5,6 @@ #undef DATA_CHANNEL #undef PULSE_CHANNEL -#undef IC_SPAWN_DEFAULT -//#undef IC_SPAWN_RESEARCH // Research designs depend on this unfortunately. - #undef IC_FORMAT_ANY #undef IC_FORMAT_STRING #undef IC_FORMAT_CHAR diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 2eb5aab12f..65286578c6 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -37,8 +37,8 @@ var/list/global/map_templates = list() if(rename) name = rename -/datum/map_template/proc/preload_size(path) - var/bounds = maploader.load_map(file(path), 1, 1, 1, cropMap=FALSE, measureOnly=TRUE) +/datum/map_template/proc/preload_size(path, orientation = SOUTH) + var/bounds = maploader.load_map(file(path), 1, 1, 1, cropMap=FALSE, measureOnly=TRUE, orientation=orientation) if(bounds) width = bounds[MAP_MAXX] // Assumes all templates are rectangular, have a single Z level, and begin at 1,1,1 height = bounds[MAP_MAXY] @@ -82,7 +82,7 @@ var/list/global/map_templates = list() admin_notice("Submap initializations finished.", R_DEBUG) -/datum/map_template/proc/load_new_z(var/centered = FALSE) +/datum/map_template/proc/load_new_z(var/centered = FALSE, var/orientation = SOUTH) var/x = 1 var/y = 1 @@ -90,7 +90,7 @@ var/list/global/map_templates = list() x = round((world.maxx - width)/2) y = round((world.maxy - height)/2) - var/list/bounds = maploader.load_map(file(mappath), x, y, no_changeturf = TRUE) + var/list/bounds = maploader.load_map(file(mappath), x, y, no_changeturf = TRUE, orientation=orientation) if(!bounds) return FALSE @@ -101,10 +101,10 @@ var/list/global/map_templates = list() log_game("Z-level [name] loaded at at [x],[y],[world.maxz]") return TRUE -/datum/map_template/proc/load(turf/T, centered = FALSE) +/datum/map_template/proc/load(turf/T, centered = FALSE, orientation = SOUTH) var/old_T = T if(centered) - T = locate(T.x - round(width/2) , T.y - round(height/2) , T.z) + T = locate(T.x - round(((orientation & NORTH|SOUTH) ? width : height)/2) , T.y - round(((orientation & NORTH|SOUTH) ? height : width)/2) , T.z) if(!T) return if(T.x+width > world.maxx) @@ -113,9 +113,9 @@ var/list/global/map_templates = list() return if(annihilate) - annihilate_bounds(old_T, centered) + annihilate_bounds(old_T, centered, orientation) - var/list/bounds = maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE) + var/list/bounds = maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE, orientation = orientation) if(!bounds) return @@ -129,18 +129,18 @@ var/list/global/map_templates = list() loaded++ return TRUE -/datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE) +/datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE, orientation = SOUTH) var/turf/placement = T if(centered) - var/turf/corner = locate(placement.x - round(width/2), placement.y - round(height/2), placement.z) + var/turf/corner = locate(placement.x - round(((orientation & NORTH|SOUTH) ? width : height)/2), placement.y - round(((orientation & NORTH|SOUTH) ? height : width)/2), placement.z) if(corner) placement = corner - return block(placement, locate(placement.x+width-1, placement.y+height-1, placement.z)) + return block(placement, locate(placement.x+((orientation & NORTH|SOUTH) ? width : height)-1, placement.y+((orientation & NORTH|SOUTH) ? height : width)-1, placement.z)) -/datum/map_template/proc/annihilate_bounds(turf/origin, centered = FALSE) +/datum/map_template/proc/annihilate_bounds(turf/origin, centered = FALSE, orientation = SOUTH) var/deleted_atoms = 0 admin_notice("Annihilating objects in submap loading locatation.", R_DEBUG) - var/list/turfs_to_clean = get_affected_turfs(origin, centered) + var/list/turfs_to_clean = get_affected_turfs(origin, centered, orientation) if(turfs_to_clean.len) for(var/turf/T in turfs_to_clean) for(var/atom/movable/AM in T) @@ -151,9 +151,9 @@ var/list/global/map_templates = list() //for your ever biggening badminnery kevinz000 //❤ - Cyberboss -/proc/load_new_z_level(var/file, var/name) +/proc/load_new_z_level(var/file, var/name, var/orientation = SOUTH) var/datum/map_template/template = new(file, name) - template.load_new_z() + template.load_new_z(orientation) // Very similar to the /tg/ version. /proc/seed_submaps(var/list/z_levels, var/budget = 0, var/whitelist = /area/space, var/desired_map_template_type = null) @@ -225,17 +225,19 @@ var/list/global/map_templates = list() var/specific_sanity = 100 // A hundred chances to place the chosen submap. while(specific_sanity > 0) specific_sanity-- - var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(chosen_template.width / 2) - var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(chosen_template.height / 2) + var/orientation = pick(cardinal) + chosen_template.preload_size(chosen_template.mappath, orientation) + var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.width : chosen_template.height) / 2) + var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.height : chosen_template.width) / 2) var/z_level = pick(z_levels) var/turf/T = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z_level) var/valid = TRUE - for(var/turf/check in chosen_template.get_affected_turfs(T,1)) + for(var/turf/check in chosen_template.get_affected_turfs(T,TRUE,orientation)) var/area/new_area = get_area(check) if(!(istype(new_area, whitelist))) valid = FALSE // Probably overlapping something important. - // world << "Invalid due to overlapping with area [new_area.type], when wanting area [whitelist]." + // world << "Invalid due to overlapping with area [new_area.type] at ([check.x], [check.y], [check.z]), when attempting to place at ([T.x], [T.y], [T.z])." break CHECK_TICK @@ -244,10 +246,10 @@ var/list/global/map_templates = list() if(!valid) continue - admin_notice("Submap \"[chosen_template.name]\" placed at ([T.x], [T.y], [T.z])", R_DEBUG) + admin_notice("Submap \"[chosen_template.name]\" placed at ([T.x], [T.y], [T.z])\n", R_DEBUG) // Do loading here. - chosen_template.load(T, centered = TRUE) // This is run before the main map's initialization routine, so that can initilize our submaps for us instead. + chosen_template.load(T, centered = TRUE, orientation=orientation) // This is run before the main map's initialization routine, so that can initilize our submaps for us instead. CHECK_TICK diff --git a/code/modules/maps/tg/reader.dm b/code/modules/maps/tg/reader.dm index 027d1c4cae..ff66d4bdd2 100644 --- a/code/modules/maps/tg/reader.dm +++ b/code/modules/maps/tg/reader.dm @@ -35,7 +35,7 @@ var/global/use_preloader = FALSE * 2) Read the map line by line, parsing the result (using parse_grid) * */ -/dmm_suite/load_map(dmm_file as file, x_offset as num, y_offset as num, z_offset as num, cropMap as num, measureOnly as num, no_changeturf as num) +/dmm_suite/load_map(dmm_file as file, x_offset as num, y_offset as num, z_offset as num, cropMap as num, measureOnly as num, no_changeturf as num, orientation as num) //How I wish for RAII if(!measureOnly) Master.StartLoadingMap() @@ -43,7 +43,7 @@ var/global/use_preloader = FALSE #ifdef TESTING turfsSkipped = 0 #endif - . = load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf) + . = load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf, orientation) #ifdef TESTING if(turfsSkipped) testing("Skipped loading [turfsSkipped] default turfs") @@ -51,7 +51,7 @@ var/global/use_preloader = FALSE if(!measureOnly) Master.StopLoadingMap() -/dmm_suite/proc/load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf) +/dmm_suite/proc/load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf, orientation) var/tfile = dmm_file//the map file we're creating if(isfile(tfile)) tfile = file2text(tfile) @@ -63,6 +63,10 @@ var/global/use_preloader = FALSE if(!z_offset) z_offset = world.maxz + 1 + // If it's not a single dir, default to north (Default orientation) + if(!orientation in cardinal) + orientation = SOUTH + var/list/bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) var/list/grid_models = list() var/key_len = 0 @@ -132,14 +136,71 @@ var/global/use_preloader = FALSE bounds[MAP_MAXY] = max(bounds[MAP_MAXY], min(ycrd, world.maxy)) var/maxx = xcrdStart + + // Assemble the grid of keys + var/list/key_list = list() + for(var/line in gridLines) + var/list/line_keys = list() + xcrd = 1 + for(var/tpos = 1 to length(line) - key_len + 1 step key_len) + if(xcrd > world.maxx) + if(cropMap) + break + else + world.maxx = xcrd + + if(xcrd >= 1) + var/model_key = copytext(line, tpos, tpos + key_len) + line_keys[++line_keys.len] = model_key + #ifdef TESTING + else + ++turfsSkipped + #endif + CHECK_TICK + maxx = max(maxx, ++xcrd) + key_list[++key_list.len] = line_keys + + // Rotate the list according to orientation + if(orientation != SOUTH) + var/num_cols = key_list[1].len + var/num_rows = key_list.len + var/list/new_key_list = list() + // If it's rotated 180 degrees, the dimensions are the same + if(orientation == NORTH) + new_key_list.len = num_rows + for(var/i = 1 to new_key_list.len) + new_key_list[i] = list() + new_key_list[i].len = num_cols + // Else, the dimensions are swapped + else + new_key_list.len = num_cols + for(var/i = 1 to new_key_list.len) + new_key_list[i] = list() + new_key_list[i].len = num_rows + + num_rows++ // Buffering against the base index of 1 + num_cols++ + // Populate the new list + for(var/i = 1 to new_key_list.len) + for(var/j = 1 to new_key_list[i].len) + switch(orientation) + if(NORTH) + new_key_list[i][j] = key_list[num_rows - i][num_cols - j] + if(EAST) + new_key_list[i][j] = key_list[num_rows - j][i] + if(WEST) + new_key_list[i][j] = key_list[j][num_cols - i] + + key_list = new_key_list + if(measureOnly) - for(var/line in gridLines) - maxx = max(maxx, xcrdStart + length(line) / key_len - 1) + for(var/list/line in key_list) + maxx = max(maxx, line.len) else - for(var/line in gridLines) + for(var/i = 1 to key_list.len) if(ycrd <= world.maxy && ycrd >= 1) xcrd = xcrdStart - for(var/tpos = 1 to length(line) - key_len + 1 step key_len) + for(var/j = 1 to key_list[1].len) if(xcrd > world.maxx) if(cropMap) break @@ -147,12 +208,11 @@ var/global/use_preloader = FALSE world.maxx = xcrd if(xcrd >= 1) - var/model_key = copytext(line, tpos, tpos + key_len) var/no_afterchange = no_changeturf || zexpansion - if(!no_afterchange || (model_key != space_key)) - if(!grid_models[model_key]) - throw EXCEPTION("Undefined model key in DMM.") - parse_grid(grid_models[model_key], model_key, xcrd, ycrd, zcrd, no_changeturf || zexpansion) + if(!no_afterchange || (key_list[i][j] != space_key)) + if(!grid_models[key_list[i][j]]) + throw EXCEPTION("Undefined model key in DMM: [dmm_file], [key_list[i][j]]") + parse_grid(grid_models[key_list[i][j]], key_list[i][j], xcrd, ycrd, zcrd, no_afterchange, orientation) #ifdef TESTING else ++turfsSkipped @@ -194,7 +254,7 @@ var/global/use_preloader = FALSE * 4) Instanciates the atom with its variables * */ -/dmm_suite/proc/parse_grid(model as text, model_key as text, xcrd as num,ycrd as num,zcrd as num, no_changeturf as num) +/dmm_suite/proc/parse_grid(model as text, model_key as text, xcrd as num,ycrd as num,zcrd as num, no_changeturf as num, orientation as num) /*Method parse_grid() - Accepts a text string containing a comma separated list of type paths of the same construction as those contained in a .dmm file, and instantiates them. @@ -248,6 +308,12 @@ var/global/use_preloader = FALSE if(istext(value)) fields[I] = apply_text_macros(value) + // Rotate dir if orientation isn't south (default) + if(fields["dir"]) + fields["dir"] = turn(fields["dir"], dir2angle(orientation) + 180) + else + fields["dir"] = turn(SOUTH, dir2angle(orientation) + 180) + //then fill the members_attributes list with the corresponding variables members_attributes.len++ members_attributes[index++] = fields diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 5a71af1bab..240cd53a7d 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -863,7 +863,7 @@ var/list/name_to_material sheet_plural_name = "bricks" /material/cult/place_dismantled_girder(var/turf/target) - new /obj/structure/girder/cult(target) + new /obj/structure/girder/cult(target, "cult") /material/cult/place_dismantled_product(var/turf/target) new /obj/effect/decal/cleanable/blood(target) diff --git a/code/modules/mob/_modifiers/unholy.dm b/code/modules/mob/_modifiers/unholy.dm index 1f7f3d67b5..cc4a23aa40 100644 --- a/code/modules/mob/_modifiers/unholy.dm +++ b/code/modules/mob/_modifiers/unholy.dm @@ -140,7 +140,8 @@ affected.update_damages() H.restore_blood() - H.apply_effect(15, AGONY) + if(!iscultist(H)) + H.apply_effect(2, AGONY) if(prob(10)) to_chat(H, "It feels as though your body is being torn apart!") L.updatehealth() diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index 6b8fdd8d07..55760d27b1 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -159,17 +159,17 @@ say("Down on the floor, [suspect_name]! You have [SECBOT_WAIT_TIME] seconds to comply.") playsound(src.loc, pick(preparing_arrest_sounds), 50) // Register to be told when the target moves - moved_event.register(target, src, /mob/living/bot/secbot/proc/target_moved) + GLOB.moved_event.register(target, src, /mob/living/bot/secbot/proc/target_moved) // Callback invoked if the registered target moves /mob/living/bot/secbot/proc/target_moved(atom/movable/moving_instance, atom/old_loc, atom/new_loc) if(get_dist(get_turf(src), get_turf(target)) >= 1) awaiting_surrender = INFINITY // Done waiting! - moved_event.unregister(moving_instance, src) + GLOB.moved_event.unregister(moving_instance, src) /mob/living/bot/secbot/resetTarget() ..() - moved_event.unregister(target, src) + GLOB.moved_event.unregister(target, src) awaiting_surrender = -1 walk_to(src, 0) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 18acbda04d..c9b2d6d3ff 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -8,10 +8,6 @@ if(!effective_force || blocked >= 100) return 0 - //Hulk modifier - if(HULK in user.mutations) - effective_force *= 2 - //If the armor soaks all of the damage, it just skips the rest of the checks if(effective_force <= soaked) return 0 diff --git a/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm b/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm new file mode 100644 index 0000000000..95b97f2707 --- /dev/null +++ b/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm @@ -0,0 +1,107 @@ +/* + Small, mechanically supported physical customisation options. + Also allows for per-species physical information ('his neck markings are more important than yours'). + ETA till a downstream ports this and adds boob and penis size: 2 days. +*/ + +/mob/living/carbon/human/proc/show_descriptors_to(var/mob/user) + if(LAZYLEN(descriptors)) + if(user == src) + for(var/entry in descriptors) + var/datum/mob_descriptor/descriptor = species.descriptors[entry] + LAZYADD(., "[descriptor.get_first_person_message_start()] [descriptor.get_standalone_value_descriptor(descriptors[entry])].") + else + for(var/entry in descriptors) + var/datum/mob_descriptor/descriptor = species.descriptors[entry] + LAZYADD(., descriptor.get_comparative_value_descriptor(descriptors[entry], user, src)) + +/datum/mob_descriptor + var/name // String ident. + var/chargen_label // String ident for chargen. + var/default_value // Initial value for this descriptor. + var/comparison_offset = 0 // Used for examining similar properties between different species. + var/comparative_value_descriptor_equivalent // String for looking at someone with roughly the same property. + var/list/standalone_value_descriptors // String set for initial descriptor text. + var/list/comparative_value_descriptors_smaller // String set for looking at someone smaller than you. + var/list/comparative_value_descriptors_larger // String set for looking at someone larger than you. + var/list/chargen_value_descriptors // Used for chargen selection of values in cases where there is a hidden meaning. + var/skip_species_mention + +/datum/mob_descriptor/New() + if(!chargen_label) + chargen_label = name + if(!chargen_value_descriptors) + chargen_value_descriptors = list() + for(var/i = 1 to LAZYLEN(standalone_value_descriptors)) + chargen_value_descriptors[standalone_value_descriptors[i]] = i + default_value = ceil(LAZYLEN(standalone_value_descriptors) * 0.5) + ..() + +/datum/mob_descriptor/proc/get_third_person_message_start(var/datum/gender/my_gender) + return "[my_gender.He] [my_gender.is]" + +/datum/mob_descriptor/proc/get_first_person_message_start() + return "You are" + +/datum/mob_descriptor/proc/get_standalone_value_descriptor(var/check_value) + if(isnull(check_value)) + check_value = default_value + if(check_value && LAZYLEN(standalone_value_descriptors) >= check_value) + return standalone_value_descriptors[check_value] + +// Build a species-specific descriptor string. +/datum/mob_descriptor/proc/get_initial_comparison_component(var/mob/me, var/datum/gender/my_gender, var/datum/gender/other_gender, var/my_value) + var/species_text + if(ishuman(me) && !skip_species_mention) + var/mob/living/carbon/human/H = me + var/use_name = "\improper [H.species.name]" + species_text = " for \a [use_name]" + . = "[get_third_person_message_start(my_gender)] [get_standalone_value_descriptor(my_value)][species_text]" + +/datum/mob_descriptor/proc/get_secondary_comparison_component(var/datum/gender/my_gender, var/datum/gender/other_gender, var/my_value, var/comparing_value) + var/raw_value = my_value + my_value += comparison_offset + var/variance = abs((my_value)-comparing_value) + if(variance < 1) + . = "[.], [get_comparative_value_string_equivalent(raw_value, my_gender, other_gender)]" + else + variance = variance / LAZYLEN(standalone_value_descriptors) + if(my_value < comparing_value) + . = "[.], [get_comparative_value_string_smaller(variance, my_gender, other_gender)]" + else if(my_value > comparing_value) + . = "[.], [get_comparative_value_string_larger(variance, my_gender, other_gender)]" + +/datum/mob_descriptor/proc/get_comparative_value_descriptor(var/my_value, var/mob/observer, var/mob/me) + + // Store our gender info for later. + var/datum/gender/my_gender = gender_datums[me.get_gender()] + var/datum/gender/other_gender = gender_datums[observer.get_gender()] + + . = get_initial_comparison_component(me, my_gender, other_gender, my_value) + + // Append the same-descriptor comparison text. + var/comparing_value + if(ishuman(observer)) + var/mob/living/carbon/human/human_observer = observer + if(LAZYLEN(human_observer.descriptors) && !isnull(human_observer.species.descriptors[name]) && !isnull(human_observer.descriptors[name])) + var/datum/mob_descriptor/obs_descriptor = human_observer.species.descriptors[name] + comparing_value = human_observer.descriptors[name] + obs_descriptor.comparison_offset + + if(. && !isnull(comparing_value)) + . = "[.][get_secondary_comparison_component(my_gender, other_gender, my_value, comparing_value)]" + + // We're done, add a full stop. + . = "[.]. " + +/datum/mob_descriptor/proc/get_comparative_value_string_equivalent(var/my_value, var/datum/gender/my_gender, var/datum/gender/other_gender) + return comparative_value_descriptor_equivalent + +/datum/mob_descriptor/proc/get_comparative_value_string_smaller(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) + var/maxval = LAZYLEN(comparative_value_descriptors_smaller) + value = Clamp(ceil(value * maxval), 1, maxval) + return comparative_value_descriptors_smaller[value] + +/datum/mob_descriptor/proc/get_comparative_value_string_larger(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) + var/maxval = LAZYLEN(comparative_value_descriptors_larger) + value = Clamp(ceil(value * maxval), 1, maxval) + return comparative_value_descriptors_larger[value] diff --git a/code/modules/mob/living/carbon/human/descriptors/descriptors_generic.dm b/code/modules/mob/living/carbon/human/descriptors/descriptors_generic.dm new file mode 100644 index 0000000000..934e7c79bc --- /dev/null +++ b/code/modules/mob/living/carbon/human/descriptors/descriptors_generic.dm @@ -0,0 +1,45 @@ +/datum/mob_descriptor/height + name = "height" + standalone_value_descriptors = list( + "very short", + "short", + "of average height", + "tall", + "very tall" + ) + comparative_value_descriptor_equivalent = "around the same height as you" + comparative_value_descriptors_smaller = list( + "slightly shorter than you", + "shorter than you", + "much shorter than you", + "tiny and insignificant next to you" + ) + comparative_value_descriptors_larger = list( + "slightly taller than you", + "taller than you", + "much taller than you", + "towering over you" + ) + +/datum/mob_descriptor/build + name = "build" + comparative_value_descriptor_equivalent = "around the same build as you" + standalone_value_descriptors = list( + "rail thin", + "thin", + "of average build", + "broad-shouldered", + "heavily built" + ) + comparative_value_descriptors_smaller = list( + "a bit smaller in build than you", + "smaller in build than you", + "much smaller in build than you", + "dwarfed by your height" + ) + comparative_value_descriptors_larger = list( + "slightly larger than you in build", + "built larger than you", + "built much larger than you", + "dwarfing you" + ) diff --git a/code/modules/mob/living/carbon/human/descriptors/descriptors_skrell.dm b/code/modules/mob/living/carbon/human/descriptors/descriptors_skrell.dm new file mode 100644 index 0000000000..6414430417 --- /dev/null +++ b/code/modules/mob/living/carbon/human/descriptors/descriptors_skrell.dm @@ -0,0 +1,27 @@ +/datum/mob_descriptor/headtail_length + name = "headtail length" + chargen_label = "headtails (gender)" + skip_species_mention = TRUE + standalone_value_descriptors = list( + "short", + "long" + ) + chargen_value_descriptors = list( + "short (male)" = 1, + "long (female)" = 2 + ) + +/datum/mob_descriptor/headtail_length/get_first_person_message_start() + . = "Your headtails are" + +/datum/mob_descriptor/headtail_length/get_third_person_message_start(var/datum/gender/my_gender) + . = "[my_gender.His] headtails are" + +/datum/mob_descriptor/headtail_length/get_comparative_value_string_equivalent(var/my_value, var/datum/gender/my_gender, var/datum/gender/other_gender) + . = "indicating [other_gender.he] [other_gender.is] [my_value == 1 ? "male" : "female"] like you" + +/datum/mob_descriptor/headtail_length/get_comparative_value_string_smaller(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) + . = "indicating [other_gender.he] [other_gender.is] male" + +/datum/mob_descriptor/headtail_length/get_comparative_value_string_larger(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) + . = "indicating [other_gender.he] [other_gender.is] female" diff --git a/code/modules/mob/living/carbon/human/descriptors/descriptors_vox.dm b/code/modules/mob/living/carbon/human/descriptors/descriptors_vox.dm new file mode 100644 index 0000000000..fa007fdaa5 --- /dev/null +++ b/code/modules/mob/living/carbon/human/descriptors/descriptors_vox.dm @@ -0,0 +1,35 @@ +/datum/mob_descriptor/vox_markings + name = "neck markings" + chargen_label = "neck markings (rank)" + skip_species_mention = TRUE + standalone_value_descriptors = list( + "very simplistic", + "rather simple", + "complex", + "moderately complex", + "bewilderingly complex" + ) + chargen_value_descriptors = list( + "servitor" = 1, + "labourer" = 2, + "cannon fodder" = 3, + "raider" = 4, + "leader" = 5 + ) + comparative_value_descriptor_equivalent = "around the same importance as yours" + comparative_value_descriptors_smaller = list( + "slightly less important than yours", + "much less important than yours", + "insignificant and beneath your notice" + ) + comparative_value_descriptors_larger = list( + "slightly more important than yours", + "much more important than yours", + "commanding your unquestioning obedience and respect" + ) + +/datum/mob_descriptor/vox_markings/get_first_person_message_start() + . = "Your neck markings are" + +/datum/mob_descriptor/vox_markings/get_third_person_message_start(var/datum/gender/my_gender) + . = "[my_gender.His] neck markings are" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index a7490b4969..f5d3e98cc1 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -426,6 +426,10 @@ pose = addtext(pose,".") //Makes sure all emotes end with a period. msg += "[T.He] [pose]" + var/show_descs = show_descriptors_to(user) + if(show_descs) + msg += "[jointext(show_descs, "
")]
" + to_chat(user, jointext(msg, null)) //Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a5ef3304ab..021021b45b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1148,6 +1148,15 @@ maxHealth = species.total_health + if(LAZYLEN(descriptors)) + descriptors = null + + if(LAZYLEN(species.descriptors)) + descriptors = list() + for(var/desctype in species.descriptors) + var/datum/mob_descriptor.descriptor = species.descriptors[desctype] + descriptors[desctype] = descriptor.default_value + spawn(0) if(regen_icons) regenerate_icons() make_blood() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index a2c725b5bd..4789136d66 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -24,8 +24,8 @@ // Should this all be in Touch()? if(istype(H)) - if(get_accuracy_penalty(H) && H != src) //Should only trigger if they're not aiming well - var/hit_zone = get_zone_with_miss_chance(H.zone_sel.selecting, src, get_accuracy_penalty(H)) + if(H.get_accuracy_penalty() && H != src) //Should only trigger if they're not aiming well + var/hit_zone = get_zone_with_miss_chance(H.zone_sel.selecting, src, H.get_accuracy_penalty()) if(!hit_zone) H.do_attack_animation(src) playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) @@ -235,7 +235,7 @@ H.visible_message("[attack_message]") playsound(loc, ((miss_type) ? (miss_type == 1 ? attack.miss_sound : 'sound/weapons/thudswoosh.ogg') : attack.attack_sound), 25, 1, -1) - + add_attack_logs(H,src,"Melee attacked with fists (miss/block)") if(miss_type) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 6797c570ec..57cb8d0f58 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -187,7 +187,7 @@ emp_act // Checked in borer code /mob/living/carbon/human/proc/check_head_coverage() var/obj/item/organ/external/H = organs_by_name[BP_HEAD] - var/list/body_parts = H.get_covering_clothing() + var/list/body_parts = H.get_covering_clothing(EYES) if(LAZYLEN(body_parts)) return 1 return 0 @@ -195,7 +195,7 @@ emp_act //Used to check if they can be fed food/drinks/pills /mob/living/carbon/human/proc/check_mouth_coverage() var/obj/item/organ/external/H = organs_by_name[BP_HEAD] - var/list/protective_gear = H.get_covering_clothing() + var/list/protective_gear = H.get_covering_clothing(FACE) for(var/obj/item/gear in protective_gear) if(istype(gear) && (gear.body_parts_covered & FACE) && !(gear.item_flags & FLEXIBLEMATERIAL)) return gear @@ -208,18 +208,6 @@ emp_act if(.) return return 0 -/mob/living/carbon/human/proc/get_accuracy_penalty(mob/living/user) - // Certain statuses make it harder to score a hit. These are the same as gun accuracy, however melee doesn't use multiples of 15. - var/accuracy_penalty = 0 - if(user.eye_blind) - accuracy_penalty += 75 - if(user.eye_blurry) - accuracy_penalty += 30 - if(user.confused) - accuracy_penalty += 45 - - return accuracy_penalty - /mob/living/carbon/human/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone) if(check_neckgrab_attack(I, user, target_zone)) return null @@ -227,7 +215,7 @@ emp_act if(user == src) // Attacking yourself can't miss return target_zone - var/hit_zone = get_zone_with_miss_chance(target_zone, src, get_accuracy_penalty(user)) + var/hit_zone = get_zone_with_miss_chance(target_zone, src, user.get_accuracy_penalty()) if(!hit_zone) user.do_attack_animation(src) @@ -370,13 +358,14 @@ emp_act if(istype(AM,/obj/)) var/obj/O = AM - if(in_throw_mode && !get_active_hand() && speed <= THROWFORCE_SPEED_DIVISOR) //empty active hand and we're in throw mode + if(in_throw_mode && speed <= THROWFORCE_SPEED_DIVISOR) //empty active hand and we're in throw mode if(canmove && !restrained()) if(isturf(O.loc)) - put_in_active_hand(O) - visible_message("[src] catches [O]!") - throw_mode_off() - return + if(can_catch(O)) + put_in_active_hand(O) + visible_message("[src] catches [O]!") + throw_mode_off() + return var/dtype = O.damtype var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) @@ -471,6 +460,29 @@ emp_act src.anchored = 1 src.pinned += O +// This does a prob check to catch the thing flying at you, with a minimum of 1% +/mob/living/carbon/human/proc/can_catch(var/obj/O) + if(!get_active_hand()) // If active hand is empty + var/obj/item/organ/external/temp = organs_by_name["r_hand"] + if (hand) + temp = organs_by_name["l_hand"] + if(temp && !temp.is_usable()) + return FALSE // The hand isn't working in the first place + + // Alright, our hand works? Time to try the catching. + var/catch_chance = 90 // Default 90% catch rate + + if(O.sharp) + catch_chance -= 50 // Catching knives is hard + + catch_chance -= get_accuracy_penalty() // Same issues with shooting a gun, or swinging a weapon + + catch_chance = between(1, catch_chance, 100) + + if(prob(catch_chance)) + return TRUE + return FALSE + /mob/living/carbon/human/embed(var/obj/O, var/def_zone=null) if(!def_zone) ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 2cbd93260c..f8fdae8bbb 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -99,6 +99,8 @@ var/identifying_gender // In case the human identifies as another gender than it's biological + var/list/descriptors // For comparative examine code + var/step_count = 0 // Track how many footsteps have been taken to know when to play footstep sounds can_be_antagged = TRUE diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index 525a611882..327b4d9ad1 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -81,6 +81,12 @@ genders = list(NEUTER) + descriptors = list( + /datum/mob_descriptor/height = -1, + /datum/mob_descriptor/build = 1, + /datum/mob_descriptor/vox_markings = 0 + ) + /datum/species/vox/get_random_name(var/gender) var/datum/language/species_language = all_languages[default_language] return species_language.get_random_name(gender) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 38d566d430..b5878e41ef 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -221,12 +221,25 @@ var/pass_flags = 0 + var/list/descriptors = list( + /datum/mob_descriptor/height, + /datum/mob_descriptor/build + ) + /datum/species/New() if(hud_type) hud = new hud_type() else hud = new() + // Prep the descriptors for the species + if(LAZYLEN(descriptors)) + var/list/descriptor_datums = list() + for(var/desctype in descriptors) + var/datum/mob_descriptor/descriptor = new desctype + descriptor_datums[descriptor.name] = descriptor + descriptors = descriptor_datums + //If the species has eyes, they are the default vision organ if(!vision_organ && has_organ[O_EYES]) vision_organ = O_EYES diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 5d95a63285..09491f9fbb 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -137,6 +137,11 @@ "Your scales bristle against the cold." ) + descriptors = list( + /datum/mob_descriptor/height = 2, + /datum/mob_descriptor/build = 2 + ) + /datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 30aa8f709c..b6331abe0d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -406,8 +406,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() face_standing.Blend(facial_s, ICON_OVERLAY) - if(h_style && !(head && (head.flags_inv & BLOCKHEADHAIR))) + if(h_style) var/datum/sprite_accessory/hair/hair_style = hair_styles_list[h_style] + if(head && (head.flags_inv & BLOCKHEADHAIR)) + if(!(hair_style.flags & HAIR_VERY_SHORT)) + hair_style = hair_styles_list["Short Hair"] + if(hair_style && (src.species.get_bodytype(src) in hair_style.species_allowed)) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") var/icon/hair_s_add = new/icon("icon" = hair_style.icon_add, "icon_state" = "[hair_style.icon_state]_s") diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 6812323a4e..1340fd77ef 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -4,4 +4,12 @@ if(ai_holder) ai_holder.go_sleep() - . = ..() \ No newline at end of file + if(nest) //Ew. + if(istype(nest, /obj/structure/prop/nest)) + var/obj/structure/prop/nest/N = nest + N.remove_creature(src) + if(istype(nest, /obj/structure/blob/factory)) + var/obj/structure/blob/factory/F = nest + F.spores -= src + nest = null + . = ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5a48b26fdb..c44a5e1b84 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -19,6 +19,14 @@ /mob/living/Destroy() dsoverlay.loc = null //I'll take my coat with me dsoverlay = null + if(nest) //Ew. + if(istype(nest, /obj/structure/prop/nest)) + var/obj/structure/prop/nest/N = nest + N.remove_creature(src) + if(istype(nest, /obj/structure/blob/factory)) + var/obj/structure/blob/factory/F = nest + F.spores -= src + nest = null if(buckled) buckled.unbuckle_mob(src, TRUE) return ..() @@ -177,6 +185,11 @@ default behaviour is: return return +/mob/living/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /obj/structure/blob) && faction == "blob") //Blobs should ignore things on their faction. + return TRUE + return ..() + /mob/living/verb/succumb() set hidden = 1 if ((src.health < 0 && src.health > (5-src.getMaxHealth()))) // Health below Zero but above 5-away-from-death, as before, but variable @@ -966,40 +979,41 @@ default behaviour is: else to_chat(src, "You feel nauseous...") - if(!skip_wait) - sleep(150) //15 seconds until second warning - to_chat(src, "You feel like you are about to throw up!") - sleep(100) //and you have 10 more for mad dash to the bucket + spawn() + if(!skip_wait) + sleep(150) //15 seconds until second warning + to_chat(src, "You feel like you are about to throw up!") + sleep(100) //and you have 10 more for mad dash to the bucket - //Damaged livers cause you to vomit blood. - if(!blood_vomit) - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(!H.isSynthetic()) - var/obj/item/organ/internal/liver/L = H.internal_organs_by_name["liver"] - if(L.is_broken()) - blood_vomit = 1 + //Damaged livers cause you to vomit blood. + if(!blood_vomit) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(!H.isSynthetic()) + var/obj/item/organ/internal/liver/L = H.internal_organs_by_name["liver"] + if(L.is_broken()) + blood_vomit = 1 - Stun(5) - src.visible_message("[src] throws up!","You throw up!") - playsound(loc, 'sound/effects/splat.ogg', 50, 1) + Stun(5) + src.visible_message("[src] throws up!","You throw up!") + playsound(loc, 'sound/effects/splat.ogg', 50, 1) + + var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs + if(istype(T)) + if(blood_vomit) + T.add_blood_floor(src) + else + T.add_vomit_floor(src, 1) - var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs - if(istype(T)) if(blood_vomit) - T.add_blood_floor(src) + if(getBruteLoss() < 50) + adjustBruteLoss(3) else - T.add_vomit_floor(src, 1) + nutrition -= 40 + adjustToxLoss(-3) - if(blood_vomit) - if(getBruteLoss() < 50) - adjustBruteLoss(3) - else - nutrition -= 40 - adjustToxLoss(-3) - - sleep(350) - lastpuke = 0 + spawn(350) + lastpuke = 0 /mob/living/update_canmove() if(!resting && cannot_stand() && can_stand_overridden()) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 63482af869..c3e3e31aeb 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -173,7 +173,7 @@ ..() /mob/living/blob_act(var/obj/structure/blob/B) - if(stat == DEAD) + if(stat == DEAD || faction == "blob") return var/damage = rand(30, 40) @@ -231,11 +231,6 @@ /mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/soaked, var/hit_zone) if(!effective_force || blocked >= 100) return 0 - - //Hulk modifier - if(HULK in user.mutations) - effective_force *= 2 - //Apply weapon damage var/weapon_sharp = is_sharp(I) var/weapon_edge = has_edge(I) @@ -536,3 +531,15 @@ if(!isnull(M.evasion)) result += M.evasion return result + +/mob/living/proc/get_accuracy_penalty() + // Certain statuses make it harder to score a hit. + var/accuracy_penalty = 0 + if(eye_blind) + accuracy_penalty += 75 + if(eye_blurry) + accuracy_penalty += 30 + if(confused) + accuracy_penalty += 45 + + return accuracy_penalty \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index d656feb485..e3b510e244 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -59,6 +59,8 @@ var/see_invisible_default = SEE_INVISIBLE_LIVING + var/nest //Not specific, because a Nest may be the prop nest, or blob factory in this case. + var/list/hud_list //Holder for health hud, status hud, wanted hud, etc (not like inventory slots) var/has_huds = FALSE //Whether or not we should bother initializing the above list diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 6cd2fa5f81..348ae69a54 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -163,7 +163,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robot", "Cabeiri" = "eyebot-standard", - "CUPCAKE" = "Noble-STD", "Haruka" = "marinaSD", "Usagi" = "tallflower", "Telemachus" = "toiletbot", @@ -173,9 +172,11 @@ var/global/list/robot_modules = list( "XI-ALP" = "heavyStandard", "Basic" = "robot_old", "Android" = "droid", - "Drone" = "drone-standard" + "Drone" = "drone-standard", + "Insekt" = "insekt-Default" ) + /obj/item/weapon/robot_module/robot/standard/New() ..() src.modules += new /obj/item/weapon/melee/baton/loaded(src) @@ -195,7 +196,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robotMedi", "Cabeiri" = "eyebot-medical", - "CUPCAKE" = "Noble-MED", "Haruka" = "marinaMD", "Minako" = "arachne", "Usagi" = "tallwhite", @@ -206,7 +206,8 @@ var/global/list/robot_modules = list( "Advanced Droid" = "droid-medical", "Needles" = "medicalrobot", "Drone" = "drone-surgery", - "Handy" = "handy-med" + "Handy" = "handy-med", + "Insekt" = "insekt-Med" ) /obj/item/weapon/robot_module/robot/medical/surgeon/New() @@ -266,7 +267,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robotMedi", "Cabeiri" = "eyebot-medical", - "CUPCAKE" = "Noble-MED", "Haruka" = "marinaMD", "Minako" = "arachne", "Usagi" = "tallwhite", @@ -277,7 +277,8 @@ var/global/list/robot_modules = list( "Advanced Droid" = "droid-medical", "Needles" = "medicalrobot", "Drone - Medical" = "drone-medical", - "Drone - Chemistry" = "drone-chemistry" + "Drone - Chemistry" = "drone-chemistry", + "Insekt" = "insekt-Med" ) /obj/item/weapon/robot_module/robot/medical/crisis/New() @@ -339,7 +340,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robotEngi", "Cabeiri" = "eyebot-engineering", - "CUPCAKE" = "Noble-ENG", "Haruka" = "marinaENG", "Usagi" = "tallyellow", "Telemachus" = "toiletbotengineering", @@ -497,7 +497,6 @@ var/global/list/robot_modules = list( "Cabeiri" = "eyebot-security", "Cerberus" = "bloodhound", "Cerberus - Treaded" = "treadhound", - "CUPCAKE" = "Noble-SEC", "Haruka" = "marinaSC", "Usagi" = "tallred", "Telemachus" = "toiletbotsecurity", @@ -506,7 +505,8 @@ var/global/list/robot_modules = list( "XI-ALP" = "heavySec", "Basic" = "secborg", "Black Knight" = "securityrobot", - "Drone" = "drone-sec" + "Drone" = "drone-sec", + "Insekt" = "insekt-Sec" ) /obj/item/weapon/robot_module/robot/security/general/New() @@ -541,7 +541,6 @@ var/global/list/robot_modules = list( "M-USE NanoTrasen" = "robotJani", "Arachne" = "crawler", "Cabeiri" = "eyebot-janitor", - "CUPCAKE" = "Noble-CLN", "Haruka" = "marinaJN", "Telemachus" = "toiletbotjanitor", "WTOperator" = "sleekjanitor", @@ -592,7 +591,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robotServ", "Cabeiri" = "eyebot-standard", - "CUPCAKE" = "Noble-SRV", "Haruka" = "marinaSV", "Michiru" = "maidbot", "Usagi" = "tallgreen", @@ -647,7 +645,6 @@ var/global/list/robot_modules = list( sprites = list( "M-USE NanoTrasen" = "robotCler", "Cabeiri" = "eyebot-standard", - "CUPCAKE" = "Noble-SRV", "Haruka" = "marinaSV", "Usagi" = "tallgreen", "Telemachus" = "toiletbot", @@ -687,7 +684,6 @@ var/global/list/robot_modules = list( sprites = list( "NM-USE NanoTrasen" = "robotMine", "Cabeiri" = "eyebot-miner", - "CUPCAKE" = "Noble-DIG", "Haruka" = "marinaMN", "Telemachus" = "toiletbotminer", "WTOperator" = "sleekminer", @@ -723,7 +719,8 @@ var/global/list/robot_modules = list( "WTOperator" = "sleekscience", "Droid" = "droid-science", "Drone" = "drone-science", - "Handy" = "handy-science" + "Handy" = "handy-science", + "Insekt" = "insekt-Sci" ) /obj/item/weapon/robot_module/robot/research/New() @@ -782,7 +779,8 @@ var/global/list/robot_modules = list( hide_on_manifest = 1 sprites = list( "Haruka" = "marinaCB", - "Combat Android" = "droid-combat" + "Combat Android" = "droid-combat", + "Insekt" = "insekt-Combat" ) /obj/item/weapon/robot_module/robot/security/combat/New() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 16d418fe50..66f7c90d7e 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -653,7 +653,6 @@ return ..() /mob/living/simple_animal/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) - effective_force = O.force //Animals can't be stunned(?) if(O.damtype == HALLOSS) @@ -1364,6 +1363,8 @@ // if (!istype(target, /turf)) // qdel(A) // return + + A.firer = src A.launch(target) return diff --git a/code/modules/mob/living/simple_mob/combat.dm b/code/modules/mob/living/simple_mob/combat.dm index 3aff9ae606..2469e47cce 100644 --- a/code/modules/mob/living/simple_mob/combat.dm +++ b/code/modules/mob/living/simple_mob/combat.dm @@ -28,11 +28,17 @@ // This is a seperate proc for the purposes of attack animations. // A is the thing getting attacked, T is the turf A is/was on when attack_target was called. /mob/living/simple_mob/proc/do_attack(atom/A, turf/T) -// if(!A.Adjacent(src)) face_atom(A) - if((!(A in T)) || !T.Adjacent(src)) // Most likely we have a slow attack and they dodged it or we somehow got moved. + var/missed = FALSE + if(!isturf(A) && !(A in T) ) // Turfs don't contain themselves so checking contents is pointless if we're targeting a turf. + missed = TRUE + else if(!T.AdjacentQuick(src)) + missed = TRUE + + if(missed) // Most likely we have a slow attack and they dodged it or we somehow got moved. add_attack_logs(src, A, "Animal-attacked (dodged)", admin_notify = FALSE) playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + visible_message(span("warning", "\The [src] misses their attack.")) return FALSE var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm index 3c4a1fb7a5..57d5986e80 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -36,7 +36,7 @@ say_list_type = /datum/say_list/merc // Grenade special attack vars - var/grenade_type = /obj/item/weapon/grenade/explosive/concussion + var/grenade_type = /obj/item/weapon/grenade/concussion special_attack_cooldown = 45 SECONDS special_attack_min_range = 2 special_attack_max_range = 7 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index a19f570362..9b24476e11 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -287,16 +287,11 @@ mob.move_delay += config.walk_speed mob.move_delay += mob.movement_delay() - var/tickcomp = 0 //moved this out here so we can use it for vehicles - if(config.Tickcomp) - // move_delay -= 1.3 //~added to the tickcomp calculation below - tickcomp = ((1/(world.tick_lag))*1.3) - 1.3 - mob.move_delay = mob.move_delay + tickcomp - if(istype(mob.buckled, /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm - mob.move_delay = world.time + tickcomp //drunk driving + mob.move_delay = world.time + //drunk driving if(mob.confused && prob(20)) //vehicles tend to keep moving in the same direction direct = turn(direct, pick(90, -90)) return mob.buckled.relaymove(mob,direct) @@ -580,4 +575,4 @@ /client/verb/moveleft() set name = ".moveleft" set instant = 1 - Move(get_step(mob, WEST), WEST) \ No newline at end of file + Move(get_step(mob, WEST), WEST) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index f465acb877..3835bbb144 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -133,7 +133,7 @@ ponytail1 name = "Ponytail 1" icon_state = "hair_ponytail" - flags = HAIR_TIEABLE + flags = HAIR_TIEABLE|HAIR_VERY_SHORT ponytail2 name = "Ponytail 2" @@ -158,12 +158,12 @@ ponytail6 name = "Ponytail 6" icon_state = "hair_ponytail6" - flags = HAIR_TIEABLE + flags = HAIR_TIEABLE|HAIR_VERY_SHORT fringetail name = "Fringetail" icon_state = "hair_fringetail" - flags = HAIR_TIEABLE + flags = HAIR_TIEABLE|HAIR_VERY_SHORT sideponytail name = "Side Ponytail" diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index ecf81dcd91..12671d584d 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -17,6 +17,21 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) attack_verb = list("attacked", "slapped", "whacked") var/clone_source = FALSE var/mob/living/carbon/brain/brainmob = null + var/can_assist = TRUE + +/obj/item/organ/internal/brain/proc/can_assist() + return can_assist + +/obj/item/organ/internal/brain/proc/implant_assist(var/targ_icon_state = null) + name = "[owner.real_name]'s assisted [initial(name)]" + if(targ_icon_state) + icon_state = targ_icon_state + if(dead_icon) + dead_icon = "[targ_icon_state]_dead" + else + icon_state = "[initial(icon_state)]_assisted" + if(dead_icon) + dead_icon = "[initial(dead_icon)]_assisted" /obj/item/organ/internal/brain/robotize() replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain) @@ -115,7 +130,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) target.key = brainmob.key ..() -/obj/item/organ/internal/pariah_brain +/obj/item/organ/internal/brain/pariah_brain name = "brain remnants" desc = "Did someone tread on this? It looks useless for cloning or cyborgification." organ_tag = "brain" @@ -123,18 +138,19 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) icon = 'icons/mob/alien.dmi' icon_state = "chitin" vital = 1 + can_assist = FALSE /obj/item/organ/internal/brain/xeno name = "thinkpan" desc = "It looks kind of like an enormous wad of purple bubblegum." icon = 'icons/mob/alien.dmi' icon_state = "chitin" + can_assist = FALSE /obj/item/organ/internal/brain/slime name = "slime core" desc = "A complex, organic knot of jelly and crystalline particles." - icon = 'icons/mob/slimes.dmi' - icon_state = "green slime extract" + icon_state = "core" parent_organ = BP_TORSO clone_source = TRUE flags = OPENCONTAINER @@ -145,6 +161,11 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) /obj/item/organ/internal/brain/slime/New() ..() create_reagents(50) + var/mob/living/carbon/human/H = null + spawn(15) //Match the core to the Promethean's starting color. + if(ishuman(owner)) + H = owner + color = rgb(min(H.r_skin + 40, 255), min(H.g_skin + 40, 255), min(H.b_skin + 40, 255)) /obj/item/organ/internal/brain/slime/proc/reviveBody() var/datum/dna2/record/R = new /datum/dna2/record() @@ -239,6 +260,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) desc = "A tightly furled roll of paper, covered with indecipherable runes." icon = 'icons/obj/wizard.dmi' icon_state = "scroll" + can_assist = FALSE /obj/item/organ/internal/brain/grey desc = "A piece of juicy meat found in a person's head. This one is strange." diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 16250e2c22..baa4a94530 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1332,12 +1332,16 @@ Note that amputating the affected organ does in fact remove the infection from t return english_list(flavor_text) // Returns a list of the clothing (not glasses) that are covering this part -/obj/item/organ/external/proc/get_covering_clothing() +/obj/item/organ/external/proc/get_covering_clothing(var/target_covering) // target_covering checks for mouth/eye coverage var/list/covering_clothing = list() + + if(!target_covering) + target_covering = src.body_part + if(owner) - var/list/protective_gear = list(owner.head, owner.wear_mask, owner.wear_suit, owner.w_uniform, owner.gloves, owner.shoes) + var/list/protective_gear = list(owner.head, owner.wear_mask, owner.wear_suit, owner.w_uniform, owner.gloves, owner.shoes, owner.glasses) for(var/obj/item/clothing/gear in protective_gear) - if(gear.body_parts_covered & src.body_part) + if(gear.body_parts_covered & target_covering) covering_clothing |= gear if(LAZYLEN(gear.accessories)) for(var/obj/item/clothing/accessory/bling in gear.accessories) diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 91b96fea31..0adb547284 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -110,7 +110,7 @@ var/global/list/limb_icon_cache = list() res.add_overlay(facial_s) //Head hair - if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR))) + if(owner.h_style) var/style = owner.h_style var/datum/sprite_accessory/hair/hair_style = hair_styles_list[style] if(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR)) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index f9fca6222f..2a18becdc1 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -106,6 +106,10 @@ /obj/item/weapon/cell/proc/check_charge(var/amount) return (charge >= amount) +// Returns how much charge is missing from the cell, useful to make sure not overdraw from the grid when recharging. +/obj/item/weapon/cell/proc/amount_missing() + return max(maxcharge - charge, 0) + // use power from a cell, returns the amount actually used /obj/item/weapon/cell/proc/use(var/amount) if(rigged && amount > 0) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 04e63379fc..20e11aa8a3 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -55,6 +55,12 @@ else return 0 +/obj/machinery/power/proc/viewload() + if(powernet) + return powernet.viewload + else + return 0 + /obj/machinery/power/proc/disconnect_terminal() // machines without a terminal will just return, no harm no fowl. return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d3b92e41de..2943b6539c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -591,13 +591,7 @@ P.accuracy = accuracy + acc_mod P.dispersion = disp_mod - // Certain statuses make it harder to aim, blindness especially. Same chances as melee, however guns accuracy uses multiples of 15. - if(user.eye_blind) - P.accuracy -= 75 - if(user.eye_blurry) - P.accuracy -= 30 - if(user.confused) - P.accuracy -= 45 + P.accuracy -= user.get_accuracy_penalty() //accuracy bonus from aiming if (aim_targets && (target in aim_targets)) diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 4710836408..c7518c5aa6 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -81,6 +81,7 @@ desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Found pretty much everywhere humans are. Uses .45 rounds." icon_state = "secguncomp" magazine_type = /obj/item/ammo_magazine/m45/rubber + allowed_magazines = list(/obj/item/ammo_magazine/m45) projectile_type = /obj/item/projectile/bullet/pistol/medium caliber = ".45" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm index 631d255f77..ccbfe300ec 100644 --- a/code/modules/projectiles/guns/vox.dm +++ b/code/modules/projectiles/guns/vox.dm @@ -9,8 +9,8 @@ var/last_regen = 0 var/spike_gen_time = 150 - var/max_spikes = 3 - var/spikes = 3 + var/max_spikes = 5 + var/spikes = 5 release_force = 30 icon = 'icons/obj/gun.dmi' icon_state = "spikethrower3" @@ -35,7 +35,7 @@ /obj/item/weapon/gun/launcher/spikethrower/examine(mob/user) ..(user) - user << "It has [spikes] spike\s remaining." + to_chat(user, "It has [spikes] spike\s remaining.") /obj/item/weapon/gun/launcher/spikethrower/update_icon() icon_state = "spikethrower[spikes]" @@ -65,7 +65,7 @@ firemodes = list( list(mode_name="stunning", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/stun/darkmatter, charge_cost = 300), - list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 600), + list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 400), list(mode_name="scatter burst", burst=8, fire_delay=null, move_delay=4, burst_accuracy=list(0, 0, 0, 0, 0, 0, 0, 0), dispersion=list(3, 3, 3, 3, 3, 3, 3, 3, 3), projectile_type=/obj/item/projectile/energy/darkmatter, charge_cost = 300), ) @@ -112,7 +112,7 @@ embed_chance = 0 /* - * Vox Darkmatter Cannon + * Vox Sonic Cannon */ /obj/item/weapon/gun/energy/sonic name = "soundcannon" @@ -122,7 +122,7 @@ w_class = ITEMSIZE_HUGE cell_type = /obj/item/weapon/cell/device/weapon/recharge battery_lock = 1 - charge_cost = 600 + charge_cost = 400 projectile_type=/obj/item/projectile/sonic/weak diff --git a/code/modules/projectiles/projectile/blob.dm b/code/modules/projectiles/projectile/blob.dm new file mode 100644 index 0000000000..926c78a0a0 --- /dev/null +++ b/code/modules/projectiles/projectile/blob.dm @@ -0,0 +1,63 @@ +/obj/item/projectile/energy/blob //Not super strong. + name = "spore" + icon_state = "declone" + damage = 3 + armor_penetration = 40 + damage_type = BRUTE + check_armour = "melee" + pass_flags = PASSTABLE | PASSBLOB + fire_sound = 'sound/effects/slime_squish.ogg' + var/splatter = FALSE // Will this make a cloud of reagents? + var/splatter_volume = 5 // The volume of its chemical container, for said cloud of reagents. + var/list/my_chems = list("mold") + +/obj/item/projectile/energy/blob/splattering + splatter = TRUE + +/obj/item/projectile/energy/blob/New() + if(splatter) + create_reagents(splatter_volume) + ready_chemicals() + ..() + +/obj/item/projectile/energy/blob/Destroy() + qdel(reagents) + reagents = null + ..() + +/obj/item/projectile/energy/blob/on_impact(var/atom/A) + var/turf/location = get_turf(src) + var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem + S.attach(location) + S.set_up(reagents, splatter_volume, 0, location) + playsound(location, 'sound/effects/slime_squish.ogg', 30, 1, -3) + spawn(0) + S.start() + ..() + +/obj/item/projectile/energy/blob/proc/ready_chemicals() + if(reagents) + var/reagent_vol = (round((splatter_volume / my_chems.len) * 100) / 100) //Cut it at the hundreds place, please. + for(var/reagent in my_chems) + reagents.add_reagent(reagent, reagent_vol) + +/obj/item/projectile/energy/blob/toxic + damage_type = TOX + check_armour = "bio" + my_chems = list("amatoxin") + +/obj/item/projectile/energy/blob/toxic/splattering + splatter = TRUE + +/obj/item/projectile/energy/blob/acid + damage_type = BURN + check_armour = "bio" + my_chems = list("sacid", "mold") + +/obj/item/projectile/energy/blob/acid/splattering + splatter = TRUE + +/obj/item/projectile/energy/blob/combustible + splatter = TRUE + flammability = 0.25 + my_chems = list("fuel", "mold") diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 48cf9d2b00..6f2635b3db 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -422,7 +422,7 @@ if(alien != IS_SLIME) return else if(eyes_covered) - to_chat(M, "Your [safe_thing] protect you from most of the pepperspray!") + to_chat(M, "Your [safe_thing] protects you from most of the pepperspray!") M.eye_blurry = max(M.eye_blurry, effective_strength * 3) M.Blind(effective_strength) M.Stun(5) diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 17ae15f7be..c225af1258 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -564,4 +564,29 @@ build_type = MECHFAB materials = list(DEFAULT_WALL_MATERIAL = 562, "glass" = 562) build_path = /obj/item/device/flash/synthetic - category = "Misc" \ No newline at end of file + category = "Misc" + +/* + * Non-Mech Vehicles + */ + +/datum/design/item/mechfab/vehicle + build_type = MECHFAB + category = "Vehicle" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6) + +/datum/design/item/mechfab/vehicle/spacebike_chassis + name = "Spacebike Chassis" + desc = "A space-bike's un-assembled frame." + id = "vehicle_chassis_spacebike" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3) + materials = list(DEFAULT_WALL_MATERIAL = 12000, "silver" = 3000, "phoron" = 3000, "osmium" = 1000) + build_path = /obj/item/weapon/vehicle_assembly/spacebike + +/datum/design/item/mechfab/vehicle/quadbike_chassis + name = "Quadbike Chassis" + desc = "A space-bike's un-assembled frame." + id = "vehicle_chassis_quadbike" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_MAGNET = 3, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 15000, "silver" = 3000, "plastic" = 3000, "osmium" = 1000) + build_path = /obj/item/weapon/vehicle_assembly/quadbike diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm index 8751ee1547..6a0aae0005 100644 --- a/code/modules/shieldgen/directional_shield.dm +++ b/code/modules/shieldgen/directional_shield.dm @@ -364,7 +364,7 @@ forceMove(my_tool) if(active) my_tool.set_ready_state(0) - if(my_mecha.has_charge(my_tool.energy_drain * 100)) //Stops at around 2000 charge. + if(my_mecha.has_charge(my_tool.energy_drain * 50)) //Stops at around 1000 charge. my_mecha.use_power(my_tool.energy_drain) else destroy_shields() diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index f455be67a5..d761dbd6e8 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -1,6 +1,6 @@ -/obj/vehicle/bike/ +/obj/vehicle/bike name = "space-bike" - desc = "Space wheelies! Woo! " + desc = "Space wheelies! Woo!" icon = 'icons/obj/bike.dmi' icon_state = "bike_off" dir = SOUTH @@ -10,24 +10,49 @@ health = 100 maxhealth = 100 + locked = 0 + powered = 1 + fire_dam_coeff = 0.6 brute_dam_coeff = 0.5 var/protection_percent = 60 - var/land_speed = 10 //if 0 it can't go on turf - var/space_speed = 1 + var/land_speed = 1.5 //if 0 it can't go on turf + var/space_speed = 0.5 var/bike_icon = "bike" + var/custom_icon = FALSE + + paint_color = "#ffffff" var/datum/effect/effect/system/ion_trail_follow/ion var/kickstand = 1 /obj/vehicle/bike/New() ..() + cell = new /obj/item/weapon/cell/high(src) ion = new /datum/effect/effect/system/ion_trail_follow() ion.set_up(src) turn_off() - overlays += image('icons/obj/bike.dmi', "[icon_state]_off_overlay", MOB_LAYER + 1) icon_state = "[bike_icon]_off" + update_icon() + +/obj/vehicle/bike/built/New() + ..() + qdel(cell) + cell = null + +/obj/vehicle/bike/random/New() + paint_color = rgb(rand(1,255),rand(1,255),rand(1,255)) + ..() + +/obj/vehicle/bike/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/multitool) && open) + var/new_paint = input("Please select paint color.", "Paint Color", paint_color) as color|null + if(new_paint) + paint_color = new_paint + update_icon() + return + ..() /obj/vehicle/bike/verb/toggle() set name = "Toggle Engine" @@ -36,7 +61,7 @@ if(usr.incapacitated()) return - if(!on) + if(!on && cell && cell.charge > charge_use) turn_on() src.visible_message("\The [src] rumbles to life.", "You hear something rumble deeply.") else @@ -53,8 +78,8 @@ if(kickstand) src.visible_message("You put up \the [src]'s kickstand.") else - if(istype(src.loc,/turf/space)) - usr << " You don't think kickstands work in space..." + if(istype(src.loc,/turf/space) || istype(src.loc, /turf/simulated/floor/water)) + to_chat(usr, " You don't think kickstands work here...") return src.visible_message("You put down \the [src]'s kickstand.") if(pulledby) @@ -63,34 +88,45 @@ kickstand = !kickstand anchored = (kickstand || on) -/obj/vehicle/bike/load(var/atom/movable/C) +/obj/vehicle/bike/load(var/atom/movable/C, var/mob/user as mob) var/mob/living/M = C if(!istype(C)) return 0 if(M.buckled || M.restrained() || !Adjacent(M) || !M.Adjacent(src)) return 0 - return ..(M) + return ..(M, user) -/obj/vehicle/bike/MouseDrop_T(var/atom/movable/C, mob/user as mob) - if(!load(C)) - user << " You were unable to load \the [C] onto \the [src]." +/obj/vehicle/bike/MouseDrop_T(var/atom/movable/C, var/mob/user as mob) + if(!load(C, user)) + to_chat(user, " You were unable to load \the [C] onto \the [src].") return /obj/vehicle/bike/attack_hand(var/mob/user as mob) if(user == load) - unload(load) - user << "You unbuckle yourself from \the [src]" + unload(load, user) + to_chat(user, "You unbuckle yourself from \the [src].") + else if(!load && load(user, user)) + to_chat(user, "You buckle yourself to \the [src].") /obj/vehicle/bike/relaymove(mob/user, direction) if(user != load || !on) - return - return Move(get_step(src, direction)) + return 0 + if(Move(get_step(src, direction))) + return 1 + return 0 /obj/vehicle/bike/Move(var/turf/destination) - if(kickstand) return + if(kickstand) return 0 + if(on && (!cell || cell.charge < charge_use)) + turn_off() + visible_message("\The [src] whines, before its engines wind down.") + return 0 //these things like space, not turf. Dragging shouldn't weigh you down. - if(istype(destination,/turf/space) || pulledby) + if(on && cell) + cell.use(charge_use) + + if(istype(destination,/turf/space) || istype(destination, /turf/simulated/floor/water) || pulledby) if(!space_speed) return 0 move_delay = space_speed @@ -109,6 +145,7 @@ if(pulledby) pulledby.stop_pulling() ..() + /obj/vehicle/bike/turn_off() ion.stop() anchored = kickstand @@ -127,12 +164,74 @@ /obj/vehicle/bike/update_icon() overlays.Cut() + if(custom_icon) + if(on) + var/image/bodypaint = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_on_a", src.layer) + bodypaint.color = paint_color + overlays += bodypaint + + var/image/overmob = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_on_overlay", MOB_LAYER + 1) + var/image/overmob_color = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_on_overlay_a", MOB_LAYER + 1) + overmob.plane = MOB_PLANE + overmob_color.plane = MOB_PLANE + overmob_color.color = paint_color + overlays += overmob + overlays += overmob_color + if(open) + icon_state = "[bike_icon]_on-open" + else + icon_state = "[bike_icon]_on" + else + var/image/bodypaint = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_off_a", src.layer) + bodypaint.color = paint_color + overlays += bodypaint + + var/image/overmob = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_off_overlay", MOB_LAYER + 1) + var/image/overmob_color = image('icons/obj/custom_items_vehicle.dmi', "[bike_icon]_off_overlay_a", MOB_LAYER + 1) + overmob.plane = MOB_PLANE + overmob_color.plane = MOB_PLANE + overmob_color.color = paint_color + overlays += overmob + overlays += overmob_color + if(open) + icon_state = "[bike_icon]_off-open" + else + icon_state = "[bike_icon]_off" + ..() + return + if(on) - overlays += image('icons/obj/bike.dmi', "[bike_icon]_on_overlay", MOB_LAYER + 1) - icon_state = "[bike_icon]_on" + var/image/bodypaint = image('icons/obj/bike.dmi', "[bike_icon]_on_a", src.layer) + bodypaint.color = paint_color + overlays += bodypaint + + var/image/overmob = image('icons/obj/bike.dmi', "[bike_icon]_on_overlay", MOB_LAYER + 1) + var/image/overmob_color = image('icons/obj/bike.dmi', "[bike_icon]_on_overlay_a", MOB_LAYER + 1) + overmob.plane = MOB_PLANE + overmob_color.plane = MOB_PLANE + overmob_color.color = paint_color + overlays += overmob + overlays += overmob_color + if(open) + icon_state = "[bike_icon]_on-open" + else + icon_state = "[bike_icon]_on" else - overlays += image('icons/obj/bike.dmi', "[bike_icon]_off_overlay", MOB_LAYER + 1) - icon_state = "[bike_icon]_off" + var/image/bodypaint = image('icons/obj/bike.dmi', "[bike_icon]_off_a", src.layer) + bodypaint.color = paint_color + overlays += bodypaint + + var/image/overmob = image('icons/obj/bike.dmi', "[bike_icon]_off_overlay", MOB_LAYER + 1) + var/image/overmob_color = image('icons/obj/bike.dmi', "[bike_icon]_off_overlay_a", MOB_LAYER + 1) + overmob.plane = MOB_PLANE + overmob_color.plane = MOB_PLANE + overmob_color.color = paint_color + overlays += overmob + overlays += overmob_color + if(open) + icon_state = "[bike_icon]_off-open" + else + icon_state = "[bike_icon]_off" ..() @@ -140,4 +239,4 @@ /obj/vehicle/bike/Destroy() qdel(ion) - ..() \ No newline at end of file + ..() diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index e8927197dc..508ad2a750 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -1,4 +1,4 @@ -/obj/vehicle/train/cargo/engine +/obj/vehicle/train/engine name = "cargo train tug" desc = "A ridable electric car designed for pulling cargo trolleys." icon = 'icons/obj/vehicles.dmi' @@ -11,9 +11,11 @@ load_offset_x = 0 mob_offset_y = 7 + var/speed_mod = 1.1 var/car_limit = 3 //how many cars an engine can pull before performance degrades active_engines = 1 - var/obj/item/weapon/key/cargo_train/key + var/obj/item/weapon/key/key + var/key_type = /obj/item/weapon/key/cargo_train /obj/item/weapon/key/cargo_train name = "key" @@ -22,7 +24,7 @@ icon_state = "train_keys" w_class = ITEMSIZE_TINY -/obj/vehicle/train/cargo/trolley +/obj/vehicle/train/trolley name = "cargo train trolley" icon = 'icons/obj/vehicles.dmi' icon_state = "cargo_trailer" @@ -38,15 +40,15 @@ //------------------------------------------- // Standard procs //------------------------------------------- -/obj/vehicle/train/cargo/engine/New() +/obj/vehicle/train/engine/New() ..() cell = new /obj/item/weapon/cell/high(src) - key = new(src) + key = new(key_type) var/image/I = new(icon = 'icons/obj/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs overlays += I turn_off() //so engine verbs are correctly set -/obj/vehicle/train/cargo/engine/Move(var/turf/destination) +/obj/vehicle/train/engine/Move(var/turf/destination) if(on && cell.charge < charge_use) turn_off() update_stats() @@ -62,23 +64,24 @@ return ..() -/obj/vehicle/train/cargo/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/vehicle/train/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob) if(open && W.is_wirecutter()) passenger_allowed = !passenger_allowed user.visible_message("[user] [passenger_allowed ? "cuts" : "mends"] a cable in [src].","You [passenger_allowed ? "cut" : "mend"] the load limiter cable.") else ..() -/obj/vehicle/train/cargo/engine/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/key/cargo_train)) +/obj/vehicle/train/engine/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, key_type)) if(!key) user.drop_item() W.forceMove(src) key = W - verbs += /obj/vehicle/train/cargo/engine/verb/remove_key + verbs += /obj/vehicle/train/engine/verb/remove_key return ..() +/* //cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead /obj/vehicle/train/cargo/bullet_act(var/obj/item/projectile/Proj) if(has_buckled_mobs() && prob(70)) @@ -92,19 +95,20 @@ icon_state = initial(icon_state) + "_open" else icon_state = initial(icon_state) +*/ -/obj/vehicle/train/cargo/trolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H) +/obj/vehicle/train/trolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H) return -/obj/vehicle/train/cargo/engine/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H) +/obj/vehicle/train/engine/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H) ..() update_stats() -/obj/vehicle/train/cargo/engine/remove_cell(var/mob/living/carbon/human/H) +/obj/vehicle/train/engine/remove_cell(var/mob/living/carbon/human/H) ..() update_stats() -/obj/vehicle/train/cargo/engine/Bump(atom/Obstacle) +/obj/vehicle/train/engine/Bump(atom/Obstacle) var/obj/machinery/door/D = Obstacle var/mob/living/carbon/human/H = load if(istype(D) && istype(H)) @@ -112,7 +116,7 @@ ..() -/obj/vehicle/train/cargo/trolley/Bump(atom/Obstacle) +/obj/vehicle/train/trolley/Bump(atom/Obstacle) if(!lead) return //so people can't knock others over by pushing a trolley around ..() @@ -120,44 +124,44 @@ //------------------------------------------- // Train procs //------------------------------------------- -/obj/vehicle/train/cargo/engine/turn_on() +/obj/vehicle/train/engine/turn_on() if(!key) return else ..() update_stats() - verbs -= /obj/vehicle/train/cargo/engine/verb/stop_engine - verbs -= /obj/vehicle/train/cargo/engine/verb/start_engine + verbs -= /obj/vehicle/train/engine/verb/stop_engine + verbs -= /obj/vehicle/train/engine/verb/start_engine if(on) - verbs += /obj/vehicle/train/cargo/engine/verb/stop_engine + verbs += /obj/vehicle/train/engine/verb/stop_engine else - verbs += /obj/vehicle/train/cargo/engine/verb/start_engine + verbs += /obj/vehicle/train/engine/verb/start_engine -/obj/vehicle/train/cargo/engine/turn_off() +/obj/vehicle/train/engine/turn_off() ..() - verbs -= /obj/vehicle/train/cargo/engine/verb/stop_engine - verbs -= /obj/vehicle/train/cargo/engine/verb/start_engine + verbs -= /obj/vehicle/train/engine/verb/stop_engine + verbs -= /obj/vehicle/train/engine/verb/start_engine if(!on) - verbs += /obj/vehicle/train/cargo/engine/verb/start_engine + verbs += /obj/vehicle/train/engine/verb/start_engine else - verbs += /obj/vehicle/train/cargo/engine/verb/stop_engine + verbs += /obj/vehicle/train/engine/verb/stop_engine -/obj/vehicle/train/cargo/RunOver(var/mob/living/carbon/human/H) +/obj/vehicle/train/RunOver(var/mob/living/carbon/human/H) var/list/parts = list(BP_HEAD, BP_TORSO, BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM) H.apply_effects(5, 5) for(var/i = 0, i < rand(1,3), i++) H.apply_damage(rand(1,5), BRUTE, pick(parts)) -/obj/vehicle/train/cargo/trolley/RunOver(var/mob/living/carbon/human/H) +/obj/vehicle/train/trolley/RunOver(var/mob/living/carbon/human/H) ..() attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])") -/obj/vehicle/train/cargo/engine/RunOver(var/mob/living/carbon/human/H) +/obj/vehicle/train/engine/RunOver(var/mob/living/carbon/human/H) ..() if(is_train_head() && istype(load, /mob/living/carbon/human)) @@ -173,7 +177,7 @@ //------------------------------------------- // Interaction procs //------------------------------------------- -/obj/vehicle/train/cargo/engine/relaymove(mob/user, direction) +/obj/vehicle/train/engine/relaymove(mob/user, direction) if(user != load) return 0 @@ -186,7 +190,7 @@ else return ..() -/obj/vehicle/train/cargo/engine/examine(mob/user) +/obj/vehicle/train/engine/examine(mob/user) if(!..(user, 1)) return @@ -196,7 +200,7 @@ user << "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition." user << "The charge meter reads [cell? round(cell.percent(), 0.01) : 0]%" -/obj/vehicle/train/cargo/engine/verb/start_engine() +/obj/vehicle/train/engine/verb/start_engine() set name = "Start engine" set category = "Vehicle" set src in view(0) @@ -217,7 +221,7 @@ else usr << "[src]'s engine won't start." -/obj/vehicle/train/cargo/engine/verb/stop_engine() +/obj/vehicle/train/engine/verb/stop_engine() set name = "Stop engine" set category = "Vehicle" set src in view(0) @@ -233,7 +237,7 @@ if (!on) usr << "You stop [src]'s engine." -/obj/vehicle/train/cargo/engine/verb/remove_key() +/obj/vehicle/train/engine/verb/remove_key() set name = "Remove key" set category = "Vehicle" set src in view(0) @@ -252,12 +256,12 @@ usr.put_in_hands(key) key = null - verbs -= /obj/vehicle/train/cargo/engine/verb/remove_key + verbs -= /obj/vehicle/train/engine/verb/remove_key //------------------------------------------- // Loading/unloading procs //------------------------------------------- -/obj/vehicle/train/cargo/trolley/load(var/atom/movable/C, var/mob/user) +/obj/vehicle/train/trolley/load(var/atom/movable/C, var/mob/user) if(ismob(C) && !passenger_allowed) return 0 if(!istype(C,/obj/machinery) && !istype(C,/obj/structure/closet) && !istype(C,/obj/structure/largecrate) && !istype(C,/obj/structure/reagent_dispensers) && !istype(C,/obj/structure/ore_box) && !istype(C, /mob/living/carbon/human)) @@ -273,7 +277,7 @@ if(load) return 1 -/obj/vehicle/train/cargo/engine/load(var/atom/movable/C, var/mob/user) +/obj/vehicle/train/engine/load(var/atom/movable/C, var/mob/user) if(!istype(C, /mob/living/carbon/human)) return 0 @@ -283,7 +287,7 @@ //This prevents the object from being interacted with until it has // been unloaded. A dummy object is loaded instead so the loading // code knows to handle it correctly. -/obj/vehicle/train/cargo/trolley/proc/load_object(var/atom/movable/C) +/obj/vehicle/train/trolley/proc/load_object(var/atom/movable/C) if(!isturf(C.loc)) //To prevent loading things from someone's inventory, which wouldn't get handled properly. return 0 if(load || C.anchored) @@ -309,7 +313,7 @@ C.pixel_y = initial(C.pixel_y) C.layer = initial(C.layer) -/obj/vehicle/train/cargo/trolley/unload(var/mob/user, var/direction) +/obj/vehicle/train/trolley/unload(var/mob/user, var/direction) if(istype(load, /datum/vehicle_dummy_load)) var/datum/vehicle_dummy_load/dummy_load = load load = dummy_load.actual_load @@ -322,13 +326,13 @@ // Latching/unlatching procs //------------------------------------------- -/obj/vehicle/train/cargo/engine/latch(obj/vehicle/train/T, mob/user) +/obj/vehicle/train/engine/latch(obj/vehicle/train/T, mob/user) if(!istype(T) || !Adjacent(T)) return 0 //if we are attaching a trolley to an engine we don't care what direction // it is in and it should probably be attached with the engine in the lead - if(istype(T, /obj/vehicle/train/cargo/trolley)) + if(istype(T, /obj/vehicle/train/trolley)) T.attach_to(src, user) else var/T_dir = get_dir(src, T) //figure out where T is wrt src @@ -349,7 +353,7 @@ // more engines increases this limit by car_limit per // engine. //------------------------------------------------------- -/obj/vehicle/train/cargo/engine/update_car(var/train_length, var/active_engines) +/obj/vehicle/train/engine/update_car(var/train_length, var/active_engines) src.train_length = train_length src.active_engines = active_engines @@ -360,9 +364,9 @@ move_delay = max(0, (-car_limit * active_engines) + train_length - active_engines) //limits base overweight so you cant overspeed trains move_delay *= (1 / max(1, active_engines)) * 2 //overweight penalty (scaled by the number of engines) move_delay += config.run_speed //base reference speed - move_delay *= 1.1 //makes cargo trains 10% slower than running when not overweight + move_delay *= speed_mod //makes cargo trains 10% slower than running when not overweight -/obj/vehicle/train/cargo/trolley/update_car(var/train_length, var/active_engines) +/obj/vehicle/train/trolley/update_car(var/train_length, var/active_engines) src.train_length = train_length src.active_engines = active_engines diff --git a/code/modules/vehicles/construction.dm b/code/modules/vehicles/construction.dm new file mode 100644 index 0000000000..49021d5fd0 --- /dev/null +++ b/code/modules/vehicles/construction.dm @@ -0,0 +1,274 @@ +/* + * Construction! + */ + +/obj/item/weapon/vehicle_assembly + name = "vehicle assembly" + desc = "The frame of some vehicle." + icon = 'icons/obj/vehicles_64x64.dmi' + icon_state = "quad-frame" + item_state = "buildpipe" + + density = TRUE + slowdown = 10 //It's a vehicle frame, what do you expect? + w_class = 5 + pixel_x = -16 + + var/build_stage = 0 + var/obj/item/weapon/cell/cell = null + +/obj/item/weapon/vehicle_assembly/New() + ..() + icon_state = "[initial(icon_state)][build_stage]" + update_icon() + +/obj/item/weapon/vehicle_assembly/proc/increase_step(var/new_name = null) + build_stage++ + if(new_name) + name = new_name + icon_state = "[initial(icon_state)][build_stage]" + update_icon() + return 1 + +/* + * Quadbike and trailer. + */ + +/obj/item/weapon/vehicle_assembly/quadbike + name = "all terrain vehicle assembly" + desc = "The frame of an ATV." + icon_state = "quad-frame" + +/obj/item/weapon/vehicle_assembly/quadbike/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + ..() + + switch(build_stage) + if(0) + if(istype(W, /obj/item/stack/material/plastic)) + var/obj/item/stack/material/plastic/P = W + if (P.get_amount() < 8) + to_chat(user, "You need eight sheets of plastic to add tires to \the [src].") + return + to_chat(user, "You start to add tires to [src].") + if(do_after(user, 40) && build_stage == 0) + if(P.use(8)) + to_chat(user, "You add tires to \the [src].") + increase_step("wheeled [initial(name)]") + return + + if(1) + if(istype(W, /obj/item/weapon/stock_parts/console_screen)) + user.drop_item() + qdel(W) + to_chat(user, "You add the lights to \the [src].") + increase_step() + return + + if(2) + if(istype(W, /obj/item/weapon/stock_parts/spring)) + user.drop_item() + qdel(W) + to_chat(user, "You add the control system to \the [src].") + increase_step() + return + if(istype(W, /obj/item/stack/material/steel)) + var/obj/item/stack/material/steel/S = W + if(S.get_amount() < 5) + to_chat(user, "You need five sheets of steel to convert \the [src] into a trailer.") + if(do_after(user, 80) && build_stage == 2) + if(S.use(5)) + var/obj/item/weapon/vehicle_assembly/quadtrailer/Trailer = new(src) + Trailer.forceMove(get_turf(src)) + Trailer.increase_step("framed [initial(Trailer.name)]") + to_chat(user, "You convert \the [src] into \the [Trailer].") + user.drop_from_inventory(src) + qdel(src) + return + + if(3) + if(istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if (C.get_amount() < 2) + to_chat(user, "You need two coils of wire to wire [src].") + return + to_chat(user, "You start to wire [src].") + if(do_after(user, 40) && build_stage == 3) + if(C.use(2)) + to_chat(user, "You wire \the [src].") + increase_step("wired [initial(name)]") + return + + if(4) + if(istype(W, /obj/item/weapon/cell)) + user.drop_item() + W.forceMove(src) + cell = W + to_chat(user, "You add the power supply to \the [src].") + increase_step("powered [initial(name)]") + return + + if(5) + if(istype(W, /obj/item/weapon/stock_parts/motor)) + user.drop_item() + qdel(W) + to_chat(user, "You add the motor to \the [src].") + increase_step() + return + + if(6) + if(istype(W, /obj/item/stack/material/plasteel)) + var/obj/item/stack/material/plasteel/PL = W + if (PL.get_amount() < 2) + to_chat(user, "You need two sheets of plasteel to add reinforcement to \the [src].") + return + to_chat(user, "You start to add reinforcement to [src].") + if(do_after(user, 40) && build_stage == 6) + if(PL.use(2)) + to_chat(user, "You add reinforcement to \the [src].") + increase_step("reinforced [initial(name)]") + return + + if(7) + if(W.is_wrench() || W.is_screwdriver()) + playsound(loc, W.usesound, 50, 1) + to_chat(user, "You begin your finishing touches on \the [src].") + if(do_after(user, 20) && build_stage == 7) + playsound(loc, W.usesound, 30, 1) + var/obj/vehicle/train/engine/quadbike/built/product = new(src) + to_chat(user, "You finish \the [product]") + product.loc = get_turf(src) + product.cell = cell + cell.forceMove(product) + cell = null + user.drop_from_inventory(src) + qdel(src) + return + +/obj/item/weapon/vehicle_assembly/quadtrailer + name = "all terrain trailer" + desc = "The frame of a small trailer." + icon_state = "quadtrailer-frame" + +/obj/item/weapon/vehicle_assembly/quadtrailer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + ..() + + switch(build_stage) + if(0) + if(istype(W, /obj/item/weapon/vehicle_assembly/quadbike)) + var/obj/item/weapon/vehicle_assembly/quadbike/Q = W + if(Q.build_stage > 2) + to_chat(user, "\The [Q] is too advanced to be of use with \the [src]") + return + user.drop_item() + qdel(W) + increase_step("framed [initial(name)]") + + if(1) + if(istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if (C.get_amount() < 2) + to_chat(user, "You need two coils of wire to wire [src].") + return + to_chat(user, "You start to wire [src].") + if(do_after(user, 40) && build_stage == 1) + if(C.use(2)) + to_chat(user, "You wire \the [src].") + increase_step("wired [initial(name)]") + return + + if(2) + if(W.is_screwdriver()) + playsound(loc, W.usesound, 50, 1) + to_chat(user, "You close up \the [src].") + var/obj/vehicle/train/trolley/trailer/product = new(src) + product.loc = get_turf(src) + user.drop_from_inventory(src) + qdel(src) + return + +/* + * Space bike. + */ + +/obj/item/weapon/vehicle_assembly/spacebike + name = "vehicle assembly" + desc = "The frame of some vehicle." + icon = 'icons/obj/bike.dmi' + icon_state = "bike-frame" + + pixel_x = 0 + +/obj/item/weapon/vehicle_assembly/spacebike/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + switch(build_stage) + if(0) + if(istype(W, /obj/item/weapon/tank/jetpack) || istype(W, /obj/item/borg/upgrade/jetpack)) + user.drop_item() + qdel(W) + increase_step() + + if(1) + if(istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if (C.get_amount() < 2) + to_chat(user, "You need two coils of wire to wire [src].") + return + to_chat(user, "You start to wire [src].") + if(do_after(user, 40) && build_stage == 1) + if(C.use(2)) + to_chat(user, "You wire \the [src].") + increase_step("wired [initial(name)]") + return + + if(2) + if(istype(W, /obj/item/stack/material/plastic)) + var/obj/item/stack/material/plastic/P = W + if (P.get_amount() < 3) + to_chat(user, "You need three sheets of plastic to add a seat to \the [src].") + return + to_chat(user, "You start to add a seat to [src].") + if(do_after(user, 40) && build_stage == 2) + if(P.use(3)) + to_chat(user, "You add a seat to \the [src].") + increase_step("seated [initial(name)]") + return + + if(3) + if(istype(W, /obj/item/weapon/stock_parts/console_screen)) + user.drop_item() + qdel(W) + to_chat(user, "You add the lights to \the [src].") + increase_step() + return + + if(4) + if(istype(W, /obj/item/weapon/stock_parts/spring)) + user.drop_item() + qdel(W) + to_chat(user, "You add the control system to \the [src].") + increase_step() + return + + if(5) + if(istype(W, /obj/item/weapon/cell)) + user.drop_item() + W.forceMove(src) + cell = W + to_chat(user, "You add the power supply to \the [src].") + increase_step("powered [initial(name)]") + return + + if(6) + if(W.is_wrench() || W.is_screwdriver()) + playsound(loc, W.usesound, 50, 1) + to_chat(user, "You begin your finishing touches on \the [src].") + if(do_after(user, 20) && build_stage == 6) + playsound(loc, W.usesound, 30, 1) + var/obj/vehicle/bike/built/product = new(src) + to_chat(user, "You finish \the [product]") + product.loc = get_turf(src) + product.cell = cell + cell.forceMove(product) + cell = null + user.drop_from_inventory(src) + qdel(src) + return diff --git a/code/modules/vehicles/quad.dm b/code/modules/vehicles/quad.dm new file mode 100644 index 0000000000..23a00f6de7 --- /dev/null +++ b/code/modules/vehicles/quad.dm @@ -0,0 +1,259 @@ + +/obj/vehicle/train/engine/quadbike //It's a train engine, so it can tow trailers. + name = "electric all terrain vehicle" + desc = "A ridable electric ATV designed for all terrain. Except space." + icon = 'icons/obj/vehicles_64x64.dmi' + icon_state = "quad" + on = 0 + powered = 1 + locked = 0 + + load_item_visible = 1 + load_offset_x = 0 + mob_offset_y = 5 + + pixel_x = -16 + speed_mod = 0.45 + car_limit = 1 //It gets a trailer. That's about it. + active_engines = 1 + key_type = /obj/item/weapon/key/quadbike + + var/frame_state = "quad" //Custom-item proofing! + var/custom_frame = FALSE + + paint_color = "#ffffff" + + var/outdoors_speed_mod = 0.7 //The general 'outdoors' speed. I.E., the general difference you'll be at when driving outside. + +/obj/vehicle/train/engine/quadbike/New() + cell = new /obj/item/weapon/cell/high(src) + key = new(key_type) + turn_off() + +/obj/vehicle/train/engine/quadbike/built/New() + key = new(key_type) + turn_off() + +/obj/vehicle/train/engine/quadbike/random/New() + paint_color = rgb(rand(1,255),rand(1,255),rand(1,255)) + ..() + +/obj/item/weapon/key/quadbike + name = "key" + desc = "A keyring with a small steel key, and a blue fob reading \"ZOOM!\"." + icon = 'icons/obj/vehicles.dmi' + icon_state = "quad_keys" + w_class = ITEMSIZE_TINY + +/obj/vehicle/train/engine/quadbike/Move(var/turf/destination) + var/turf/T = get_turf(src) + ..() //Move it move it, so we can test it test it. + if(T != get_turf(src) && !istype(destination, T.type)) //Did we move at all, and are we changing turf types? + if(istype(destination, /turf/simulated/floor/water)) + speed_mod = outdoors_speed_mod * 4 //It kind of floats due to its tires, but it is slow. + else if(istype(destination, /turf/simulated/floor/outdoors/rocks)) + speed_mod = initial(speed_mod) //Rocks are good, rocks are solid. + else if(istype(destination, /turf/simulated/floor/outdoors/dirt) || istype(destination, /turf/simulated/floor/outdoors/grass)) + speed_mod = outdoors_speed_mod //Dirt and grass are the outdoors bench mark. + else if(istype(destination, /turf/simulated/floor/outdoors/mud)) + speed_mod = outdoors_speed_mod * 1.5 //Gets us roughly 1. Mud may be fun, but it's not the best. + else if(istype(destination, /turf/simulated/floor/outdoors/snow)) + speed_mod = outdoors_speed_mod * 1.7 //Roughly a 1.25. Snow is coarse and wet and gets everywhere, especially your electric motors. + else + speed_mod = initial(speed_mod) + update_car(train_length, active_engines) + switch(dir) //Due to being a Big Boy sprite, it has to have special pixel shifting to look 'normal' when being driven. + if(1) + pixel_y = -6 + if(2) + pixel_y = -6 + if(4) + pixel_y = 0 + if(8) + pixel_y = 0 + + +/obj/vehicle/train/engine/quadbike/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/multitool) && open) + var/new_paint = input("Please select paint color.", "Paint Color", paint_color) as color|null + if(new_paint) + paint_color = new_paint + update_icon() + return + ..() + +/obj/vehicle/train/engine/quadbike/update_icon() + ..() + overlays.Cut() + if(custom_frame) + var/image/Bodypaint = new(icon = 'icons/obj/custom_items_vehicle.dmi', icon_state = "[frame_state]_a", layer = src.layer) + Bodypaint.color = paint_color + overlays += Bodypaint + + var/image/Overmob = new(icon = 'icons/obj/custom_items_vehicle.dmi', icon_state = "[frame_state]_overlay", layer = src.layer + 0.2) //over mobs + var/image/Overmob_color = new(icon = 'icons/obj/custom_items_vehicle.dmi', icon_state = "[frame_state]_overlay_a", layer = src.layer + 0.2) //over the over mobs, gives the color. + Overmob.plane = MOB_PLANE + Overmob_color.plane = MOB_PLANE + Overmob_color.color = paint_color + + overlays += Overmob + overlays += Overmob_color + return + + var/image/Bodypaint = new(icon = 'icons/obj/vehicles_64x64.dmi', icon_state = "[frame_state]_a", layer = src.layer) + Bodypaint.color = paint_color + overlays += Bodypaint + + var/image/Overmob = new(icon = 'icons/obj/vehicles_64x64.dmi', icon_state = "[frame_state]_overlay", layer = src.layer + 0.2) //over mobs + var/image/Overmob_color = new(icon = 'icons/obj/vehicles_64x64.dmi', icon_state = "[frame_state]_overlay_a", layer = src.layer + 0.2) //over the over mobs, gives the color. + Overmob.plane = MOB_PLANE + Overmob_color.plane = MOB_PLANE + Overmob_color.color = paint_color + + overlays += Overmob + overlays += Overmob_color + +/obj/vehicle/train/engine/quadbike/Bump(atom/Obstacle) + if(!istype(Obstacle, /atom/movable)) + return + var/atom/movable/A = Obstacle + + if(!A.anchored) + var/turf/T = get_step(A, dir) + if(isturf(T)) + A.Move(T) //bump things away when hit + + if(istype(A, /mob/living)) + var/mob/living/M = A + visible_message("[src] knocks over [M]!") + M.apply_effects(2, 2) // Knock people down for a short moment + M.apply_damages(8 / move_delay) // Smaller amount of damage than a tug, since this will always be possible because Quads don't have safeties. + var/list/throw_dirs = list(1, 2, 4, 8, 5, 6, 9, 10) + if(!emagged) // By the power of Bumpers TM, it won't throw them ahead of the quad's path unless it's emagged or the person turns. + health -= round(M.mob_size / 2) + throw_dirs -= dir + throw_dirs -= get_dir(M, src) //Don't throw it AT the quad either. + else + health -= round(M.mob_size / 4) // Less damage if they actually put the point in to emag it. + var/turf/T2 = get_step(A, pick(throw_dirs)) + M.throw_at(T2, 1, 1, src) + if(istype(load, /mob/living/carbon/human)) + var/mob/living/D = load + to_chat(D, "You hit [M]!") + add_attack_logs(D,M,"Ran over with [src.name]") + + +/obj/vehicle/train/engine/quadbike/RunOver(var/mob/living/carbon/human/H) + ..() + var/list/throw_dirs = list(1, 2, 4, 8, 5, 6, 9, 10) + if(!emagged) + throw_dirs -= dir + if(tow) + throw_dirs -= get_dir(H, tow) //Don't throw it at the trailer either. + var/turf/T = get_step(H, pick(throw_dirs)) + H.throw_at(T, 1, 1, src) + +/* + * Trailer bits and bobs. + */ + +/obj/vehicle/train/trolley/trailer + name = "all terrain trailer" + icon = 'icons/obj/vehicles_64x64.dmi' + icon_state = "quadtrailer" + anchored = 0 + passenger_allowed = 1 + buckle_lying = 1 + locked = 0 + + load_item_visible = 1 + load_offset_x = 0 + load_offset_y = 13 + mob_offset_y = 16 + + pixel_x = -16 + + paint_color = "#ffffff" + +/obj/vehicle/train/trolley/trailer/random/New() + paint_color = rgb(rand(1,255),rand(1,255),rand(1,255)) + ..() + +/obj/vehicle/train/trolley/trailer/proc/update_load() + if(load) + var/y_offset = load_offset_y + if(istype(load, /mob/living)) + y_offset = mob_offset_y + load.pixel_x = (initial(load.pixel_x) + 16 + load_offset_x + pixel_x) //Base location for the sprite, plus 16 to center it on the 'base' sprite of the trailer, plus the x shift of the trailer, then shift it by the same pixel_x as the trailer to track it. + load.pixel_y = (initial(load.pixel_y) + y_offset + pixel_y) //Same as the above. + return 1 + return 0 + +/obj/vehicle/train/trolley/trailer/New() + ..() + update_icon() + +/obj/vehicle/train/trolley/trailer/Move() + ..() + if(lead) + switch(dir) //Due to being a Big Boy sprite, it has to have special pixel shifting to look 'normal'. + if(1) + pixel_y = -10 + pixel_x = -16 + if(2) + pixel_y = 0 + pixel_x = -16 + if(4) + pixel_y = 0 + pixel_x = -25 + if(8) + pixel_y = 0 + pixel_x = -5 + else + pixel_x = initial(pixel_x) + pixel_y = initial(pixel_y) + update_load() + +/obj/vehicle/train/trolley/trailer/Bump(atom/Obstacle) + if(!istype(Obstacle, /atom/movable)) + return + var/atom/movable/A = Obstacle + + if(!A.anchored) + var/turf/T = get_step(A, dir) + if(isturf(T)) + A.Move(T) //bump things away when hit + + if(istype(A, /mob/living)) + var/mob/living/M = A + visible_message("[src] knocks over [M]!") + M.apply_effects(1, 1) + M.apply_damages(8 / move_delay) + if(load) + M.apply_damages(4/move_delay) + var/list/throw_dirs = list(1, 2, 4, 8, 5, 6, 9, 10) + if(!emagged) + throw_dirs -= dir + var/turf/T2 = get_step(A, pick(throw_dirs)) + M.throw_at(T2, 1, 1, src) + if(istype(load, /mob/living/carbon/human)) + var/mob/living/D = load + to_chat(D, "You hit [M]!") + add_attack_logs(D,M,"Ran over with [src.name]") + +/obj/vehicle/train/trolley/trailer/update_icon() + ..() + overlays.Cut() + + var/image/Bodypaint = new(icon = 'icons/obj/vehicles_64x64.dmi', icon_state = "[initial(icon_state)]_a", layer = src.layer) + Bodypaint.color = paint_color + overlays += Bodypaint + +/obj/vehicle/train/trolley/trailer/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/multitool) && open) + var/new_paint = input("Please select paint color.", "Paint Color", paint_color) as color|null + if(new_paint) + paint_color = new_paint + update_icon() + return + ..() diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 42f97676ad..6db4400f81 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -17,6 +17,7 @@ var/obj/vehicle/train/lead var/obj/vehicle/train/tow + var/open_top = TRUE //------------------------------------------- // Standard procs @@ -58,6 +59,19 @@ D << "You hit [M]!" add_attack_logs(D,M,"Ran over with [src.name]") +//trains are commonly open topped, so there is a chance the projectile will hit the mob riding the train instead +/obj/vehicle/train/bullet_act(var/obj/item/projectile/Proj) + if(has_buckled_mobs() && prob(70)) + var/mob/living/L = pick(buckled_mobs) + L.bullet_act(Proj) + return + ..() + +/obj/vehicle/train/update_icon() + if(open) + icon_state = initial(icon_state) + "_open" + else + icon_state = initial(icon_state) //------------------------------------------- // Vehicle procs diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 2109d42f44..f3ea8fc91c 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -34,6 +34,8 @@ var/obj/item/weapon/cell/cell var/charge_use = 5 //set this to adjust the amount of power the vehicle uses per move + var/paint_color = "#666666" //For vehicles with special paint overlays. + var/atom/movable/load //all vehicles can take a load, since they should all be a least drivable var/load_item_visible = 1 //set if the loaded item should be overlayed on the vehicle sprite var/load_offset_x = 0 //pixel_x offset for item overlay diff --git a/html/changelog.html b/html/changelog.html index f7b88aa5d8..a93c2f038b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,13 @@ -->
+

28 August 2018

+

Mechoid updated:

+
    +
  • Mechs now have multiple equipment slot types, and more slots in total for greater customization.
  • +
  • A large number of Mech weapon modules and their jury rigged versions.
  • +
+

08 August 2018

Atermonera updated:

    @@ -62,6 +69,7 @@

    Mechoid updated:

    • Hallucinations are no longer only Pun Pun.
    • +
    • Hallucinations are no longer only Pun Pun.

    Neerti updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d702ae761b..ca2f07ec1a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4213,3 +4213,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. of Sif. - sounddel: Removes low and high-pitched droning from available ambience. Consider trying ambience again if you had turned it off to avoid those. +2018-08-28: + Mechoid: + - rscadd: Mechs now have multiple equipment slot types, and more slots in total + for greater customization. + - rscadd: A large number of Mech weapon modules and their jury rigged versions. diff --git a/html/changelogs/Mechoid - Vehicles.yml b/html/changelogs/Mechoid - Vehicles.yml new file mode 100644 index 0000000000..94b8e280e9 --- /dev/null +++ b/html/changelogs/Mechoid - Vehicles.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds two vehicles to Robotics and Cargo, the Quad and Spacebike." diff --git a/html/changelogs/Woodrat - Spacesuit.yml b/html/changelogs/Woodrat - Spacesuit.yml new file mode 100644 index 0000000000..6a1cac4460 --- /dev/null +++ b/html/changelogs/Woodrat - Spacesuit.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Woodrat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds two rig suits. Military Rig suit from bay and PMC rigsuits" + - rscadd: "Adds four exploration and pilot voidsuits (alternate sprites by Naidh)" + - rscadd: "Adds exploration and pilot voidsuits" diff --git a/html/changelogs/changelog-instruments.yml b/html/changelogs/changelog-instruments.yml new file mode 100644 index 0000000000..0a37d08b12 --- /dev/null +++ b/html/changelogs/changelog-instruments.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - rscadd: "Ported /vg/ instrument code, improved the UI of instruments." + - rscadd: "Added a client side pref that mutes instruments being played for you." diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 042350e15d..915b9d8bc6 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/mob/ears.dmi b/icons/mob/ears.dmi index 1df73dc111..a8d55c2e92 100644 Binary files a/icons/mob/ears.dmi and b/icons/mob/ears.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index ba1c32c26a..d1c09ef542 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index cc467f5df7..6f23560d10 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index a98cb6061c..77950aa4a5 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 3dce22596f..72e9c00465 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index f13fb1c997..f3f75a86ea 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/mob/rig_back.dmi b/icons/mob/rig_back.dmi index 19bf38764e..74cb306a6c 100644 Binary files a/icons/mob/rig_back.dmi and b/icons/mob/rig_back.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index fbbc875bc6..edbd1ed90f 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/spacesuit.dmi b/icons/mob/spacesuit.dmi index 188593823e..2f875885a5 100644 Binary files a/icons/mob/spacesuit.dmi and b/icons/mob/spacesuit.dmi differ diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index 849144c6f3..1c3f150a8e 100644 Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi index 14f5755ef5..09dde09b2f 100644 Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi index 0868e30f9f..253d740ba9 100644 Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index 1746fef25e..443f30fe2d 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 93135f7106..b9c958f7d1 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index be709c012d..e85786a547 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index 8c4876821d..de17a80f86 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index d48cf7f882..c65654823d 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index e45ec90933..5b2bfe8e4f 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index a3daa966cf..aa6e8bfb81 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/bike.dmi b/icons/obj/bike.dmi index 69aa0ccb4e..aecc6aa2e9 100644 Binary files a/icons/obj/bike.dmi and b/icons/obj/bike.dmi differ diff --git a/icons/obj/clothing/ears.dmi b/icons/obj/clothing/ears.dmi index a2c81adfbe..77d0b44126 100644 Binary files a/icons/obj/clothing/ears.dmi and b/icons/obj/clothing/ears.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 920880e155..8342982785 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 6fa2c8c23b..989207c6eb 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index a369471b51..c585c40625 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index c1e4545825..a923ea9986 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/spacesuits.dmi b/icons/obj/clothing/spacesuits.dmi index 1be8028b74..50af23f601 100644 Binary files a/icons/obj/clothing/spacesuits.dmi and b/icons/obj/clothing/spacesuits.dmi differ diff --git a/icons/obj/clothing/species/seromi/hats.dmi b/icons/obj/clothing/species/seromi/hats.dmi index ec3a7b2fc0..f1e77ae42c 100644 Binary files a/icons/obj/clothing/species/seromi/hats.dmi and b/icons/obj/clothing/species/seromi/hats.dmi differ diff --git a/icons/obj/clothing/species/seromi/suits.dmi b/icons/obj/clothing/species/seromi/suits.dmi index cd8ee95287..e715f2f62f 100644 Binary files a/icons/obj/clothing/species/seromi/suits.dmi and b/icons/obj/clothing/species/seromi/suits.dmi differ diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi index 3cd80e33ea..1489b3fa7a 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index ab7190e8ce..96c2e45129 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi index 0b38c7a178..3622feffdb 100644 Binary files a/icons/obj/clothing/species/tajaran/hats.dmi and b/icons/obj/clothing/species/tajaran/hats.dmi differ diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi index 98660fb867..e70f3bd1bb 100644 Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index 641ccce45e..e20774b376 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 240bbc7738..8819aedffd 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index d45dac6e1f..38154ec14a 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 2d8e89049e..d0bb4a6b39 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/cult.dmi b/icons/obj/cult.dmi index 7d73fe97be..54c588f5ad 100644 Binary files a/icons/obj/cult.dmi and b/icons/obj/cult.dmi differ diff --git a/icons/obj/custom_items_vehicle.dmi b/icons/obj/custom_items_vehicle.dmi new file mode 100644 index 0000000000..a6afb68bab Binary files /dev/null and b/icons/obj/custom_items_vehicle.dmi differ diff --git a/icons/obj/electronic_assemblies.dmi b/icons/obj/electronic_assemblies.dmi deleted file mode 100644 index 5799d85866..0000000000 Binary files a/icons/obj/electronic_assemblies.dmi and /dev/null differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index ddf2e1c64e..0a9ae62c72 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/integrated_electronics/electronic_components.dmi b/icons/obj/integrated_electronics/electronic_components.dmi new file mode 100644 index 0000000000..129491755e Binary files /dev/null and b/icons/obj/integrated_electronics/electronic_components.dmi differ diff --git a/icons/obj/integrated_electronics/electronic_misc.dmi b/icons/obj/integrated_electronics/electronic_misc.dmi new file mode 100644 index 0000000000..226b82e499 Binary files /dev/null and b/icons/obj/integrated_electronics/electronic_misc.dmi differ diff --git a/icons/obj/integrated_electronics/electronic_setups.dmi b/icons/obj/integrated_electronics/electronic_setups.dmi new file mode 100644 index 0000000000..58ef0903be Binary files /dev/null and b/icons/obj/integrated_electronics/electronic_setups.dmi differ diff --git a/icons/obj/integrated_electronics/electronic_tools.dmi b/icons/obj/integrated_electronics/electronic_tools.dmi new file mode 100644 index 0000000000..975f2fc9a8 Binary files /dev/null and b/icons/obj/integrated_electronics/electronic_tools.dmi differ diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi index 970d2f8a42..833baa61ca 100644 Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 91658df513..e412404075 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index c19111ab72..349ddb3832 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 85e245ce9f..6379879df7 100644 Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ diff --git a/icons/obj/vehicles_64x64.dmi b/icons/obj/vehicles_64x64.dmi new file mode 100644 index 0000000000..98ed024d68 Binary files /dev/null and b/icons/obj/vehicles_64x64.dmi differ diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index d978078100..bd49ba9b4e 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -6990,7 +6990,7 @@ "cEv" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cEw" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cEx" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cEy" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/engine,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) +"cEy" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/engine,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cEz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/qm) "cEA" = (/obj/structure/closet,/obj/item/weapon/storage/backpack/dufflebag,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cEB" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor/tiled,/area/quartermaster/qm) @@ -7052,7 +7052,7 @@ "cFF" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage) "cFG" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_one_access = list(13,31); tag_door = "cargo_bay_door"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Bay Port"; dir = 4; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cFH" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cFI" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/quartermaster/storage) +"cFI" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/trolley,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cFJ" = (/obj/machinery/light/small,/turf/simulated/floor,/area/maintenance/apmaint) "cFK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/apmaint) "cFL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/space_heater,/turf/simulated/floor,/area/maintenance/apmaint) @@ -7103,7 +7103,7 @@ "cGE" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "cGF" = (/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "cGG" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cGH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Bay Starboard"; dir = 8; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/storage) +"cGH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/trolley,/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Bay Starboard"; dir = 8; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cGI" = (/turf/simulated/wall,/area/quartermaster/warehouse) "cGJ" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/effect/decal/cleanable/cobweb,/obj/effect/floor_decal/corner/brown/full{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cGK" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/module/power_control,/obj/item/weapon/cell{maxcharge = 2000},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) @@ -7206,7 +7206,7 @@ "cID" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cIE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/quartermaster/storage) "cIF" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cIG" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) +"cIG" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/trolley,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cIH" = (/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Warehouse"; dir = 4; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cII" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cIJ" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/quartermaster/warehouse) @@ -9872,7 +9872,7 @@ "dHR" = (/obj/item/weapon/rig/breacher,/obj/item/clothing/mask/breath,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) "dHS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "dHT" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/breacher,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10175,3 +10175,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index 23348f8005..858dd33696 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -256,8 +256,8 @@ "eV" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) "eW" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "eX" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) -"eY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"eZ" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"eY" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"eZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fa" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fb" = (/turf/simulated/shuttle/wall/dark,/area/shuttle/syndicate_elite/mothership) "fc" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership) @@ -267,8 +267,8 @@ "fg" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "fh" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fi" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fj" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fk" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fj" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fk" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fl" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) "fm" = (/obj/structure/table/standard,/obj/item/weapon/soap/deluxe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "fn" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) @@ -284,8 +284,8 @@ "fx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north,/area/space) "fy" = (/turf/space/transit/north,/area/syndicate_station/transit) "fz" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/arrival/pre_game) -"fA" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"fB" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fA" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fB" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "fC" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) "fD" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) "fE" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/requests_console{department = "Arrival shuttle"; pixel_y = 26},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) @@ -307,13 +307,13 @@ "fU" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "fV" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "fW" = (/turf/space/transit/north,/area/skipjack_station/transit) -"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "fZ" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "ga" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) "gb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) -"gc" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"gd" = (/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gc" = (/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "ge" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gf" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "gg" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) @@ -379,13 +379,13 @@ "ho" = (/obj/structure/table/steel_reinforced,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hp" = (/obj/structure/table/steel_reinforced,/obj/random/toolbox,/obj/random/toolbox,/obj/random/toolbox,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) -"hr" = (/obj/vehicle/train/cargo/engine,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"hr" = (/obj/vehicle/train/engine,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hs" = (/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) "ht" = (/obj/machinery/door/airlock/glass_medical{name = "Medical Bay"; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hu" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom) -"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "hy" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "hz" = (/obj/structure/closet/walllocker/emerglocker{pixel_y = -32},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hA" = (/obj/machinery/button/remote/blast_door{id = "tradestarshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -395,7 +395,7 @@ "hE" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hF" = (/obj/structure/table/steel_reinforced,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/weldpack,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) -"hH" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"hH" = (/obj/vehicle/train/trolley,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hI" = (/obj/machinery/light,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hJ" = (/obj/machinery/vending/medical{pixel_y = -32; req_access = null},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hK" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -598,14 +598,14 @@ "lz" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lA" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon_state = "dark"},/area/alien) "lB" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lC" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lD" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lC" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lD" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lE" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lF" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) "lG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "lH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lI" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lJ" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lI" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lJ" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lK" = (/turf/space,/area/shuttle/alien/base) "lL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) "lM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership) @@ -614,8 +614,8 @@ "lP" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership) "lQ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership) "lR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lS" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lT" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lS" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lT" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lU" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lV" = (/turf/unsimulated/wall,/area) "lW" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership{name = "\improper Ninja Base"}) @@ -821,8 +821,8 @@ "pO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "pP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) "pQ" = (/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pR" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pS" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pR" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pS" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "pT" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "pU" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "pV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -870,8 +870,8 @@ "qL" = (/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qM" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qN" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qO" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qP" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qO" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qP" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "qQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "qR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "qS" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/green,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/green,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -884,12 +884,12 @@ "qZ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ra" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/specops/centcom) "rb" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating/airless,/area/shuttle/specops/centcom) -"rc" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rd" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"re" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rf" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rc" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rd" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"re" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rf" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "ri" = (/turf/simulated/shuttle/wall/dark{hard_corner = 1; join_group = "shuttle_ert"},/area/shuttle/specops/centcom) "rj" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rk" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) @@ -916,8 +916,8 @@ "rF" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "rG" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "rH" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rI" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rJ" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rI" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rJ" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "rK" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "rL" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "rM" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) @@ -1521,8 +1521,8 @@ "Dm" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortWest"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "Dn" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Do" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) -"Dp" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) -"Dq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Dp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Dq" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "Dr" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "Ds" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "Dt" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) @@ -1561,8 +1561,8 @@ "Ea" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Eb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Ec" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Ed" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) -"Ee" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Ed" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Ee" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "Ef" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Eg" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) "Eh" = (/turf/unsimulated/wall,/area/centcom/medical) @@ -1610,8 +1610,8 @@ "EX" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EY" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fa" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) -"Fb" = (/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fa" = (/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fb" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "Fc" = (/obj/structure/table/steel,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "Fd" = (/obj/structure/closet/secure_closet/personal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "Fe" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) @@ -1634,10 +1634,10 @@ "Fv" = (/obj/effect/floor_decal/corner/beige{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Fw" = (/obj/effect/floor_decal/corner/beige,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Fx" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fy" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) -"Fz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) -"FA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) -"FB" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fz" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FA" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FB" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "FC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "FD" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "FE" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) @@ -1712,8 +1712,8 @@ "GV" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "GW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "GX" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom) -"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) -"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "Ha" = (/turf/unsimulated/floor{icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "Hb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "Hc" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) @@ -1860,8 +1860,8 @@ "JN" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "JO" = (/obj/structure/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) "JP" = (/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom) -"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) -"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) +"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) +"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "JS" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "JT" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "JU" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) @@ -2070,8 +2070,8 @@ "NP" = (/turf/unsimulated/beach/water,/area/beach) "NQ" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor,/area/centcom/evac) "NR" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor,/area/centcom/evac) -"NS" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) -"NT" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) +"NS" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) +"NT" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) "NU" = (/obj/structure/table/standard,/obj/item/weapon/storage/lockbox,/turf/simulated/shuttle/floor/black,/area/centcom/evac) "NV" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/centcom/evac) "NW" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/black,/area/centcom/evac) @@ -2090,10 +2090,10 @@ "Oj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 3"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "Ok" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "Ol" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_1_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "large_escape_pod_1_recovery_hatch"},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) -"Om" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) -"On" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) -"Oo" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) -"Op" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Om" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"On" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Oo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Op" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "Oq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "Or" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/simulated/shuttle/floor,/area/centcom/evac) "Os" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2111,8 +2111,8 @@ "OE" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac) "OF" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OG" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/centcom) -"OH" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) -"OI" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"OH" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"OI" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "OJ" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OK" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "OL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) @@ -2145,8 +2145,8 @@ "Pm" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) "Po" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pp" = (/obj/item/xenos_claw,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pq" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pp" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pq" = (/obj/item/xenos_claw,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pr" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Ps" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pt" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2161,8 +2161,8 @@ "PC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PF" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PG" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PF" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PG" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PH" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space,/area/space) "PJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2399,7 +2399,7 @@ "Ug" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Uh" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Ui" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacadadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagagagagagagagagagagagagagafafafafafafafafafafafafafafafafafafafafahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiah aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacadacaeacacacacacacacacacacacacacacacacacacacacacacacaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagakalagakalagakalagakalagafafafafafafafafafafafafafafafafafafafafamanananaoananananananapaqaraqaraqaqaraqaraqapasatatatatatatatatatapauavawawawawawawawawapaxaxaxaxaxaxaxaxaxaxapayayayayayayayayayayapazaAaBaCaDaDaDaDaDaEaF @@ -2433,20 +2433,20 @@ aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajaj aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeFeMeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajaaaaaaaaaaaaaaajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeReSeFeFeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqbqbqbqbqbDbDbDbDbDbqbqbqbqbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaaaeTeTeTeTeTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeVeVeVeVeVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeWeXexexexeFeHePePeKeFexeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeYeZfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafjfkeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeZeYfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafkfjeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajfofofofofofofofofoajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaeTeTfpfqfreTfseTeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbftftftfbeUfufveUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexexexexexexexexeFeFexexexexexexexexexexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfAfBfCfDfEfFfAfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfBfAfCfDfEfFfBfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfwfwfwfwfwajfwfwfwajajajfwfwfwajfwfwfwfwfwfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbfNfOfPfQfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFeFexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfXfYfYfLfYfYfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfYfXfXfLfXfXfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqfxfxfobqajbqfxfxfobqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgmgmgmfLgmgmgmglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfSfSgnfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkgogpgqgkafafafafafgkgkgrgsgkgkafafgkgkgkgkgtguafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgxgxgxgygzgxgxglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgAfHgBfbgafOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgigCgDgkgEgFgGgHgIgkgkafafafgkgkgigjgjgigkgogqgigJgKgkgtgLafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgMgMgMfLgMgMgMglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgNgOgNfbfNfOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgPgQgRgRgSgRgRgTgUgVgkgkgogpgqgkgkgWgRgRgXgkgYgZhagRhbgkgtgLafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhwhxhxfLhxhxhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhxhwhwfLhwhwhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkhKgRgkgihLhMhNhOhPhQhHhsgRhzgigkgkgihRhSgkgkafafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgdfLfLfLgdhUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgcfLfLfLgchUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwfwajajajajajajaaajaaajajajajajajajaaeTicidgziegxifigeTaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihihihiiihihihijikihihihijihihihihihihijihihhVafafafafafafafafafafafafafafafafafafafafafafafgkgkilimgkingkioipiqgigkirgRhshshshshshshshshsgRhsgRisithshsgRgkgtguafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfxfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajaaaaiueTiviviveTiuaaaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihiiihihihihihihihihihihihijihihihihihijihihihihihhVafafafafafafafafafafafafafafafafafafafafafafafiwixhsiygkizgigkiAgkiBgkiChshsiDiEiFiGiHiIiJhshshshsiKiLhshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfofyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajajaaabeTiuiuiueTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihiMihihihihihiiihihikijihihijihihijikihijihhVafafafafafafafafafafafafafafafafafafafafafafafiNiOiPhsiQgRgRgRgRiRgRgRgRhshsiSiTiUiViWiXiYhshshshsiZhshshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2469,12 +2469,12 @@ ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaa ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhVihjyjyjyjyjyjyjyjKjKjKjyjyjyjyjyjyjykekTlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslslslsafafhVihjyltltltltltjyjKjKjKjyjKjKjKjKjKjyluhVlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlvlvlslvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyluhVhVhVhVhVafafafafafafafafaflwlxlylxlzafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlClDlElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlIlJlIlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlIlIlIlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlSlTlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlDlClElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlJlIlJlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlJlJlJlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlTlSlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihihihihihihihihihihihihihihihihihihihihhVafafafafafafafafafafafaflxlWlWlWlxafafafafafafafafafafafaflXlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslsafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafaflwlZmamblwafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2498,12 +2498,12 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmToGmTmTmTmTmToGoHmTmTmTmTozmimioImimioImimimimimimimimioJmimioJmimimimioCoKmImIoFmimimimimimimimimQmQomomommQmdoLnCmdoMmdoNmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcafafafafafafafafmcmcmcafafafafafafafafafafafafafafhVhVorororhVhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdngoOmTmToPmdmDmDmdoQoQmdmDmDmdmDmDmDmDmDoRoSoSmdmdmimimioCoToUoVoFmimioWmwmimimimimdoXnOnOnOoYmdoLnCmdoZmdoZmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcafafafafafafmcmcafafafafafafafafafafafafafafafafhVpaorpbhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmTpcmTmTmTmTmTpcpdmTmTmTpemdpfmimimimimipgphmdpipjpkplpmpnmimipomDppmimimimimimimimimipqmdmimimimimdmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafafafafafafafafafafprpspspthVhVpuhVhVhVhVhVhVhVmcmcmchVhVhVhVhVhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpRpSpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpSpRpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmTqbqcqdqemdqfmimiqgqhmimiqimdmimimimimimimimimdmdmdmDmDmdqjqjmdmdmdmdmdmdmimimimimDqkqkqkqkqkqkmdqlnCqmmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcmcmcmcafafafafafafafafafpLpLqnqoqpqqqrpLpLafpPpQqsqspQpQpQpQqtquququqvhVmcmcmchVhVhVhVhVhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqOqPqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrcrdrerfrfrfrgrhriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrfrfrfrfrfrfrfrzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrIrJrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqPqOqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrdrcrfrerererhrgriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrerererererererzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrJrIrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimirYrZsasbscsdmdsesfsgshsisjskslmdsmqFqFqFqFqFqFqFqFqFqFafmdmimimimimdsnqksospqkqksqqkqksrmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLstsusvswsxpLafafafafafafsyqaqaqaszlelesAsAhVmcmcmchVrWfVfVsBhVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdsCsDrYrZsasbscsdmdmdmdmdmdmdmdmdmdmdsEsEsEsEsEsEsEsEsEsEsEsEmdmdsFsFmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLsGsHrmqLsIpLafafafafafafsJqaqaqahVsKlehVhVhVhVhVhVhVsLsMsMsLhVhVhVhVmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafmdmdsNsNmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafrOsssssssssssOsOsOsOsOsPsPsOsOsOsOsOssssssssssrOrOrOrOrOrOrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLpLsQsurmqLsRpLpLafafnEnvsShVqaqaqahVhVhVhVsTsUsVsWsXsYfVfVfVfVsZsZtahVhVmc @@ -2544,27 +2544,27 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBYvYvYvXvEvE afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYCavYvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYCaBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYvYBPvYztxzxzzwwLAbxzCjwLAbzwwLCkxzxzBSyGyGClClClClyGCmCmyGClClClClyGyGAQAQAQAQCnCoCpCpCpCqCrAQAQAQAQAxAxAxAxAxAxAxAQAQAQAxAxAxAxAxrOvHvHCsAWAWAWAyBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmcmcmcmcmcafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYwLCzxzAqxbAbCACBxbAEAqwLCCBrBrCDwLCECFCGCFCGBcAQAQBcCFCHCFCFCIAxAQAQAQCJCKCLCLCLCLCLCMCNAQAQAQAxCFCGCFCECGBcAQAQAQBcCGCFCFCOrOvHvHAyCPAWCQAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYwLwLztztxbCVCWxbxbztztwLwLwLwLwLwLBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQCXCYCLCLCLCLCLCLCLCZCrAQAQAxBcBcBcBcBcBcAQAQAQBcBcBcBcBcAxDaDaAyAWDbDcAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDpDqCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDqCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDqDpCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDpCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDxwxwDGvYvYvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYDIDJvExwDGvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYBcAQAQAQAxAQAQAxAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDKDBDLDBDMCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAYAWAWAWAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDPxwDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDQDBDBDBDRCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEdEeCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEeEdCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYEhEhEiEiEhEjEjEjEhEiEiEhEhEjEjEhEhBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQEkElCLCLCLCLCLCLCLEmEnAQAQAxBcBcBcBcBcBcAQAQBcBcBcBcBcBcAyEoEoEpEqErEsAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYEhEtEuEuEvEwExExEyEuEzEhEAEBECEDEhCHCECFCGCGBcAQAQBcCOEECGCFCFAxAQAQAQEFEGCLCLCLCLCLEmCKAQAQAQAxEHCFCECFCGBcAQAQBcCFCGCFEIEEAyEoEoEoEoEoEoAYBIAWAWAyBJBJBTBTBTBTBUBVBVBWBTBTBTBUBJBJBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYEJEJvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBYBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBOBPvYEiEuEuEuEuEuEuEuEuEuEKEhELEuEMENEhEOEPEPEPEPEOEQEQEOEPEPEPEPEOEOAQAQAQAQEkCoERERERCqEnAQAQAQAQESESESESESESESETETESESESESESESAyEoEoEoEoEoEoAyBIAWAWAYCeCfBVBVBVBVBVBVBVBVBVBVBVBVCgCeChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFaFbFbFbFbFbFbFbFbFbFbFbFbFaEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFbFbFyFzFAFBFbFbFyFCFDFBFbFbEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFbFbFyFKFLFBFbFbFyFMFNFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFbFbFyGkGlFBFbFbFyGmGnFBFbFbEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFbFbFyGxGyFBFbFbFyGzGAFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFbFbFbFbFbFbGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGYGZGZFbFbHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFbFbHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFbFbHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFbFbHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFbFaFaFaFaFaFaFaFaFaFaFaFaFbEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFaFaFzFyFBFAFaFaFzFCFDFAFaFaEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFaFaFzFKFLFAFaFaFzFMFNFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFaFaFzGkGlFAFaFaFzGmGnFAFaFaEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFaFaFzGxGyFAFaFaFzGzGAFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFaFaFaFaFaFaGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGZGYGYFaFaHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFaFaHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFaFaHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFaFaHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhHyEuEuEuHYHZEuEuIaEhHDEuIbIcIdEhEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOGNGNGNHeHeHeHeHeHeHeHeHeGNGNGNESIeGBIeGBIeGDGBGBHJIeGBIeGBIeAyAYAYAYAYAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKvEvYvYIfvEafafEVFSFrFWEVFSFGFWEVFSFrFWEVafafvEvYvYvYEhIgEuEuEuEuEuEuEuIhEhHDEuEuIiIdEhIjIkIkIkIlGNHeHeHeHeHeHeHeHeHeHeHeGNGNImGNGNHeGNGNImGNGNHeHeGNGNGNESESESESESESESESESESESESESafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhInEuEuEuIoIpEuEuIqEhIrIsEuItIuEhIvEuEuEuIwGNHeGNGNGNGNIxGNGNGNHeHeHeHeHeHeGNHeGNHeHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2573,7 +2573,7 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrISFrFrFrFrFrISFrFrHiHhxwHhvYvYvYEhEhITEhHlEhEhIUEuIVEhHDEuEuEuEuIWEuEuIXEuIYGNHeGNIZIDIDIDIDJaGNIQJbJbJbJbJbIQIQIQJbJbJbJbJcJdGNHeGNGNGNGNGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhEVJeFhEVEVJfEVEVFhJeEVFhvDvDvDvYvYvYEhJgEuJhJiJjEhJkEuJlEhJmJnJoJpJqEhJrJsJsJsJtGNHeGNIZJuJvJvIDIDJwIQIQJxJyJxIQIQIQIQIQJxJyJxJzIQGNHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafmKmKmKmKmKmKmKmKmKmKmKafafafvEvYvYvYvEafafEUJAJBEUJCJDJEJFJGEUJHJIEUafafvEvFvFvFEhJgEuJJJKJLEhJMEuJNEhEhEhEhEhEhEhEhEhEhEhGNGNHeGNGNGNGNGNGNGNGNIQJbJbJbJbJbIQIQIQJbJbJbJbJOIQGNGNGNGNGNGNGNHeGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJQJRJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJRJQJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafwrvDvDvDwrafafafafafafafafafafafafafafafafafwrvDvDvDwrafafEUKfKgEUKhJEKiKjKkEUKlKmEUafafwrvYvYvYEhKnEuJhKoKpEhFtEuEvHzEyEuEvEjEyEuEuEuEuEKGNHeGNGNGNKqKqKqKqKqGNKrKsKsKsKsKsKsKsKsKsKsKsKsKtKrGNKqKqKqKqKqGNGNGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvVvWvVvDafafafafafafafafafafafafafafafafafvDvVvVvVvDafafEUKuKuEUKvKwJEKxKyEUKuKuEUafafvDvYvYvYEhKzEuEuEuKAEhFtEuEuEzFYEuEuKBEuEuEuEuEuEKGNHeGNKCKDKEKEKEKEKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKGKGKGKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvDvDvDafafafafafafafafafafafafafafafafafvDvDvDvDvDafafEUKIKIEUEUKuKuKuEUEUKIKIEUafafvDvYvYvYEhKJEuEuIXKKEhKLEuEuEKKMEuKNEjFnEuEMEuEuEKGNHeGNKCKDKEKOKEKOKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKPKGKPKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2603,26 +2603,26 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMhMhMhNkMhMhMhNlMhMhMhNmMhMhMhMhMhMhMhNnMhMhMhMhMhMhNoMOMOMOMONpMOMOMOMOMOMNMhMOMSMSMOMhMXMYMHMHNqNqNrNsNsNtMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahLXNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuLXah afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMNMOMOMOMOMOMONwMOMOMONxMOMOMOMOMOMOMONyMOMONzNANBMhMOMSMSMSMSMSMSMSMSMSMSMOMhMOMSMSMOMlNCNCNDNDNCNCNCMhMhMhMhNENFNGNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNHNINININININININININININININININININININHah afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNKNKNKNKNKNKNKNKMSMONJMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNLNMNNNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONSNTNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNTNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNTMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOmOnOoOpOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOoOoOoOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOHOIOoOoOoMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONTNSNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNSNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNSMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOnOmOpOoOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOpOpOpOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOIOHOpOpOpMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcmcmcmcOsOsOsOfOfOfOfOsOfOfOfOfOJOfOfOfOfOfOfOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhOKNKNKOKMhNCNCOLNCNCMhODMSOrMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOoOoOoOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOoOoOoOoOoMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOoOOOoOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOpOpOpOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOpOpOpOpOpMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOpOOOpOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOMOsOsOsOsOsOsOsOsOfOuOuOFOfPaOuOfOuOuOuOJOYPbOsOsOfmcmcahmcmcmcmclYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMiMiMiMiMiMiMiMiMiMiMiMiMhafafafafMhMhMhMhMhMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOsOsOsmcmcOsOfOfOfOfPcOuOtOfPcOtOfOuOuOuOfOYOYOYPdOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOMOsmcmcmcOsPePfPfOfOfOfOfOfOfOfOfOuOuOuOfOYOYOYPgOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcOsOMOMOMOMOsOsmcmcOsPhPiPhOJOuOuOuOuOuOuOuOuOuOuOfPjPkPlOfOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONONONONONONONONONONONONONONONONONONONONOah ahmcPmOMOMOMOMOMOsmcmcOfPnPhPhOJOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahah -ahmcPoPpPqOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcPtOMPqOMPqOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcOsOMPqOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcPoPqPpOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcPtOMPpOMPpOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcOsOMPpOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsPzOMOMOMPAOMmcmcafafmcOfOuOuOuOuOuOuOJPvPvPBPvPvOJOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPFPGPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPGPFPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsOsOsOsPJPKOsmcmKmJafafOfOuOuOfafafafOfOfPCPDPEOfOfafafafOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsOsOsOsOsOsmcafafafafafPLPMPMPNafafafafafafafafafafafafafPLPMPMPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcmcmcmcmcmcmcmcmcafafafafPLPOPPPNafafafafafafafafafafafafafPLPOPPPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafPQPQPQPRPQPQPQafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2657,3 +2657,4 @@ lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf "} + diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm index a7b66436cc..96b7a63435 100644 --- a/maps/northern_star/polaris-5.dmm +++ b/maps/northern_star/polaris-5.dmm @@ -1912,7 +1912,7 @@ "KN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "KO" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "KP" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 8fe5ac8696..11711d916c 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -43,7 +43,7 @@ "aaQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/turf/simulated/floor/holofloor/wood,/area/crew_quarters/firstdeck/gym) "aaR" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/rust,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/hallway/primary/firstdeck/auxdockfore) "aaS" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/auxdockfore) -"aaT" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "d1fore_port2_inner"; locked = 1; name = "Dock Internal Airlock"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/auxdockfore) +"aaT" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "d1fore_port2_inner"; locked = 1; name = "Dock Internal Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/auxdockfore) "aaU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "d1fore_port2_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -26; req_one_access = list(13)},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/auxdockfore) "aaV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/firstdeck/auxdockfore) "aaW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/monotile,/area/hallway/primary/firstdeck/auxdockfore) @@ -170,7 +170,7 @@ "adn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "ado" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "adp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) -"adq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/first_deck{c_tag = "First Deck Aft Hallway - Two"; dir = 2},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) +"adq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/first_deck{c_tag = "First Deck Fore Hallway - One"; dir = 2},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "adr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "ads" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "adt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) @@ -210,7 +210,7 @@ "aeb" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "aec" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "aed" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) -"aee" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/first_deck{c_tag = "First Deck Aft Hallway - Two"; dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) +"aee" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/first_deck{c_tag = "First Deck Fore Hallway - Two"; dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "aef" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "aeg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,67)},/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "aeh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) @@ -263,7 +263,7 @@ "afc" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor/tiled,/area/hangar/one) "afd" = (/obj/effect/floor_decal/borderfloorblack/corner{dir = 8},/obj/effect/floor_decal/industrial/danger/corner{dir = 1},/turf/simulated/floor/tiled,/area/hangar/one) "afe" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) -"aff" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) +"aff" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afh" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afi" = (/obj/structure/closet/crate/engineering,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/plating,/area/construction/firstdeck/construction5) @@ -1995,7 +1995,7 @@ "aMs" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMt" = (/obj/machinery/computer/security/engineering,/obj/machinery/light{dir = 1},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMu" = (/obj/machinery/space_heater,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) -"aMv" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{icon_state = "intact"; dir = 6},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) +"aMv" = (/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "aMw" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMx" = (/obj/machinery/atmospherics/binary/pump/high_power/on{dir = 4; name = "Pump station in"; target_pressure = 4500},/obj/machinery/firealarm{pixel_y = 24},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMy" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) @@ -2130,7 +2130,7 @@ "aOX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/binary/pump/on{dir = 8; target_pressure = 200},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aOY" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aOZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) -"aPa" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) +"aPa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "aPb" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aPc" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/hangar/two) "aPd" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/shuttle2/start) @@ -2283,7 +2283,7 @@ "aRU" = (/obj/machinery/camera/network/first_deck{c_tag = "First Deck - Aft Hallway Four"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/structure/closet/medical_wall{pixel_x = 31; pixel_y = 0},/obj/item/roller,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/aft) "aRV" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/monotile,/area/security/checkpoint3) "aRW" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/monotile,/area/security/checkpoint3) -"aRX" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/monotile,/area/security/checkpoint3) +"aRX" = (/obj/structure/catwalk,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) "aRY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) "aRZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) "aSa" = (/turf/simulated/wall,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) @@ -2325,7 +2325,7 @@ "aSK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/aft) "aSL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/steel_grid,/area/security/checkpoint3) "aSM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/checkpoint3) -"aSN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals5,/turf/simulated/floor/tiled,/area/security/checkpoint3) +"aSN" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{icon_state = "intact"; dir = 6},/obj/random/mob/mouse,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aSO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/security{c_tag = "SEC - Auxiliary Checkpoint"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/security/checkpoint3) "aSP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) "aSQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) @@ -2700,7 +2700,7 @@ "aZV" = (/obj/machinery/vending/wallmed1{pixel_y = 32},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/security/prison) "aZW" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/red/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/security/prison) "aZX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/steel,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/security/prison) -"aZY" = (/obj/structure/table/steel,/obj/item/device/communicator,/obj/item/device/communicator,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/prison) +"aZY" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aZZ" = (/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/security/prison) "baa" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge,/obj/effect/floor_decal/industrial/warning/cee{icon_state = "warningcee"; dir = 8},/turf/simulated/floor/tiled/dark,/area/security/prison) "bab" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge,/obj/effect/floor_decal/industrial/warning/cee{icon_state = "warningcee"; dir = 4},/turf/simulated/floor/tiled/dark,/area/security/prison) @@ -2751,7 +2751,7 @@ "baU" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "baV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "baW" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) -"baX" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access = list(2)},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) +"baX" = (/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) "baY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/security/brig) "baZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/brig) "bba" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals4,/turf/simulated/floor/tiled,/area/security/brig) @@ -3342,7 +3342,7 @@ "bmn" = (/obj/effect/landmark{name = "lightsout"},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby) "bmo" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby) "bmp" = (/obj/machinery/light{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby) -"bmq" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/effect/wingrille_spawn/reinforced/polarized{id = "hosoffice"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hos) +"bmq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled,/area/security/checkpoint3) "bmr" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "bms" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) "bmt" = (/obj/structure/bed/chair,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) @@ -3397,7 +3397,7 @@ "bnq" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/monotile,/area/security/lobby) "bnr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/lobby) "bns" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby) -"bnt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green,/obj/effect/wingrille_spawn/reinforced/polarized{id = "hosoffice"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hos) +"bnt" = (/obj/structure/table/steel,/obj/item/device/communicator,/obj/item/device/communicator,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/security/prison) "bnu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "bnv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/flashlight/lamp/green{dir = 2; pixel_x = 10; pixel_y = 12},/obj/structure/table/reinforced,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) "bnw" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/folder/red,/obj/item/weapon/stamp/hos,/obj/structure/table/reinforced,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) @@ -3425,7 +3425,7 @@ "bnS" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos) "bnT" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos) "bnU" = (/obj/structure/closet,/obj/random/contraband,/obj/random/contraband,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/security_port) -"bnV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) +"bnV" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access = list(2)},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "bnW" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8; target_pressure = 200},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/security_port) "bnX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"},/turf/simulated/floor/plating,/area/maintenance/security_port) "bnY" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -3458,7 +3458,7 @@ "boz" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "boA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "boB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"boC" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"boC" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/effect/wingrille_spawn/reinforced/polarized{id = "hosoffice"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hos) "boD" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/clean,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; icon_state = "intact"},/obj/random/maintenance/security,/obj/random/cash,/turf/simulated/floor,/area/maintenance/security_starboard) "boE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "boF" = (/obj/effect/floor_decal/corner/black/full{dir = 8},/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos) @@ -3628,7 +3628,7 @@ "brN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor,/area/maintenance/substation/atmospherics) "brO" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Atmospherics Substation"; req_one_access = list(11,24)},/turf/simulated/floor,/area/maintenance/substation/atmospherics) "brP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/maintenance/engineering) -"brQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/engineering) +"brQ" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green,/obj/effect/wingrille_spawn/reinforced/polarized{id = "hosoffice"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hos) "brR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/airless,/area/maintenance/security_port) "brS" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_port_outer"; locked = 1; name = "External Airlock Access"; req_access = list(13)},/turf/simulated/floor/tiled/dark,/area/maintenance/security_port) "brT" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eva_port_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eva_port_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/tiled,/area/maintenance/security_port) @@ -3993,7 +3993,7 @@ "byO" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research) "byP" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research) "byQ" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor/plating,/area/maintenance/research) -"byR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research) +"byR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/security_port) "byS" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research) "byT" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/research) "byU" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/research) @@ -4555,7 +4555,7 @@ "bJE" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bJF" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bJG" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_port_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_one_access = list(11,24)},/obj/structure/table/steel,/obj/item/weapon/storage/fancy/cigarettes,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"bJH" = (/obj/structure/closet/crate/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light,/turf/simulated/floor,/area/engineering/storage) +"bJH" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "bJI" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/floodlight,/turf/simulated/floor,/area/engineering/storage) "bJJ" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 25},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/storage) "bJK" = (/obj/machinery/space_heater,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/storage) @@ -4717,7 +4717,7 @@ "bMK" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_waste) "bML" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_waste) "bMM" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access = list(10,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_waste) -"bMN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"bMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/random/mob/mouse,/turf/simulated/floor,/area/maintenance/engineering) "bMO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bMP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "bMQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) @@ -5479,7 +5479,7 @@ "cbs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/fpcenter) "cbt" = (/obj/machinery/status_display{pixel_x = 32},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/fpcenter) "cbu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall,/area/maintenance/substation/central) -"cbv" = (/obj/structure/disposalpipe/up{dir = 1},/obj/structure/cable{d1 = 16; d2 = 0; icon_state = "16-0"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/central) +"cbv" = (/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/research) "cbw" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/maintenance/substation/central) "cbx" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/central) "cby" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/central) @@ -5904,7 +5904,7 @@ "cjB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) "cjC" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) "cjD" = (/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) -"cjE" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Port Hallway One"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) +"cjE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/meter,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/research) "cjF" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) "cjG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) "cjH" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) @@ -5927,7 +5927,7 @@ "cjY" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/obj/machinery/atm{pixel_y = 30},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cjZ" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cka" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) -"ckb" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Port Hallway Three"},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) +"ckb" = (/obj/structure/closet/crate/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light,/obj/item/stack/material/lead{amount = 30},/turf/simulated/floor,/area/engineering/storage) "ckc" = (/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "ckd" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cke" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) @@ -6023,7 +6023,7 @@ "clQ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/starboard) "clR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "clS" = (/obj/effect/wingrille_spawn/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/primary/seconddeck/starboard) -"clT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Port Hallway Four"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) +"clT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "clU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "clV" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/industrial/danger{dir = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/hallway/primary/seconddeck/starboard) "clW" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/maintenance/research_medical) @@ -6121,7 +6121,7 @@ "cnK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cnL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/paleblue/bordercorner,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cnM" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) -"cnN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Port Hallway Two"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) +"cnN" = (/obj/structure/disposalpipe/up{dir = 1},/obj/structure/cable{d1 = 16; d2 = 0; icon_state = "16-0"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 4},/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/central) "cnO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cnP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cnQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) @@ -6215,11 +6215,11 @@ "cpA" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/medical/genetics) "cpB" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/research{name = "Genetics Lab"; req_one_access = list(5,47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/seconddeck/research_medical) "cpC" = (/obj/effect/decal/warning_stripes,/obj/machinery/atmospherics/tvalve/mirrored/bypass,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plating,/area/medical/virology) -"cpD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/black{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology) -"cpE" = (/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/lime/bordercorner,/turf/simulated/floor/tiled/white,/area/medical/virology) -"cpF" = (/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/white,/area/medical/virology) -"cpG" = (/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/lime/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) -"cpH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/black{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) +"cpD" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Starboard Hallway One"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) +"cpE" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Starboard Hallway Three"},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) +"cpF" = (/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology) +"cpG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/black{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) +"cpH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Starboard Hallway Four"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cpI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/lime/bordercorner,/turf/simulated/floor/tiled/white,/area/medical/virology) "cpJ" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 8},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Virology Emergency Phone"; pixel_x = -6; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 32},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/lime/border{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/virology) "cpK" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) @@ -6868,7 +6868,7 @@ "cCd" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/port_emergency) "cCe" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/port_emergency) "cCf" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/powercell,/turf/simulated/floor/plating,/area/construction/seconddeck/construction1) -"cCg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/maintenance/cargo) +"cCg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Starboard Hallway Two"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/starboard) "cCh" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/cargo) "cCi" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/cash,/turf/simulated/floor,/area/maintenance/apmaint) "cCj" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/construction/seconddeck/construction1) @@ -7193,7 +7193,7 @@ "cIq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay2) "cIr" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/medbay2) "cIs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/medbay2) -"cIt" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay2) +"cIt" = (/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/lime/bordercorner,/obj/machinery/atmospherics/pipe/simple/hidden/red{icon_state = "intact"; dir = 9},/turf/simulated/floor/tiled/white,/area/medical/virology) "cIu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay2) "cIv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/medbay2) "cIw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/medbay2) @@ -7249,7 +7249,7 @@ "cJu" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled/hydro,/area/hallway/primary/seconddeck/ascenter) "cJv" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/ascenter) "cJw" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/boots/combat,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay) -"cJx" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cJx" = (/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -29},/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/white,/area/medical/virology) "cJy" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/medical/medbay) "cJz" = (/obj/structure/sign/warning/high_voltage{pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/paleblue/bordercorner,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay) "cJA" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/medbay) @@ -7375,8 +7375,8 @@ "cLQ" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 36; pixel_y = 0},/obj/structure/cable/green,/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/brown/bordercorner,/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cLR" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office) "cLS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/office) -"cLT" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/engine{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/office) -"cLU" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office) +"cLT" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/engine{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/office) +"cLU" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/trolley{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office) "cLV" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/office) "cLW" = (/turf/unsimulated/mask,/area/quartermaster/office) "cLX" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/cargo) @@ -7528,7 +7528,7 @@ "cON" = (/obj/structure/ladder/updown,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/as_emergency) "cOO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/as_emergency) "cOP" = (/obj/machinery/space_heater,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/as_emergency) -"cOQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cOQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/red{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/medical/virology) "cOR" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "cOS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "cOT" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Medical Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) @@ -7589,7 +7589,7 @@ "cPW" = (/obj/structure/table/gamblingtable,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/machinery/alarm{pixel_y = 22},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) "cPX" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/cash,/turf/simulated/floor,/area/maintenance/cargo) "cPY" = (/obj/structure/bed/chair/wood{dir = 8},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) -"cPZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) +"cPZ" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/lime/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) "cQa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) "cQb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,25,27,28,35)},/turf/simulated/floor/plating,/area/maintenance/bar) "cQc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) @@ -7696,7 +7696,7 @@ "cRZ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/airless,/area/maintenance/cargo) "cSa" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "crg_aft_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_one_access = list(13)},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/airless,/area/maintenance/cargo) "cSb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/cargo) -"cSc" = (/obj/item/glass_jar,/turf/simulated/floor/plating,/area/maintenance/cargo) +"cSc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/medical/virology) "cSd" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/turf/simulated/floor/plating,/area/maintenance/cargo) "cSe" = (/obj/structure/table/rack{dir = 1},/obj/random/toy,/obj/random/tank,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/turf/simulated/floor/plating,/area/maintenance/cargo) "cSf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/cargo) @@ -7777,7 +7777,7 @@ "cTC" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTD" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 22},/obj/machinery/button/holosign{id = "cafeopen"; name = "Open Sign"; pixel_x = 11; pixel_y = 30},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTE" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) -"cTF" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafe Back Room"; dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) +"cTF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/maintenance/cargo) "cTG" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_coffee/full,/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "cTH" = (/obj/structure/disposalpipe/segment,/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/medbay) "cTI" = (/obj/structure/closet/crate/plastic,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/reagent_containers/dropper,/obj/random/maintenance/clean,/obj/random/soap,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -7983,7 +7983,7 @@ "cXA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "aft_starboard_pump"},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/plating,/area/maintenance/medbay) "cXB" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"},/turf/simulated/wall/r_wall,/area/maintenance/medbay) "cXC" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) -"cXD" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cXD" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/medbay2) "cXE" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/ward) "cXF" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = 0; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/ward) "cXG" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/ward) @@ -8421,7 +8421,7 @@ "dfW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled/hydro,/area/hydroponics) "dfX" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/hydro,/area/hydroponics) "dfY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/hydro,/area/hydroponics) -"dfZ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/chapel) +"dfZ" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/medbay) "dga" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera/network/civilian{c_tag = "CIV - Holodeck Port"; dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/holodeck_control) "dgb" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/paper{desc = ""; info = "Brusies sustained in the holodeck can be healed simply by sleeping."; name = "Holodeck Disclaimer"},/obj/machinery/camera/network/civilian{c_tag = "CIV - Holodeck Control"; dir = 4},/turf/simulated/floor/tiled,/area/holodeck_control) "dgc" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/holodeck_control) @@ -8602,7 +8602,7 @@ "djv" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/tiled/steel_grid,/area/library) "djw" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Aft Hallway Four"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) "djx" = (/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/chapel/main) -"djy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Chapel Office"; req_access = list(27)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_grid,/area/chapel/office) +"djy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/medbay) "djz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,25,27,28,35)},/turf/simulated/floor/plating,/area/maintenance/chapel) "djA" = (/turf/simulated/wall/r_wall,/area/chapel/main) "djB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) @@ -8644,7 +8644,7 @@ "dkl" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,25,27,28,35)},/turf/simulated/floor/plating,/area/library) "dkm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/wood,/area/library) "dkn" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) -"dko" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/deck/cards,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/wood,/area/library) +"dko" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/catwalk,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/bar) "dkp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/library) "dkq" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/library) "dkr" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/library) @@ -9776,7 +9776,7 @@ "dFZ" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/structure/largecrate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) "dGa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) "dGb" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) -"dGc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) +"dGc" = (/obj/item/glass_jar,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/cargo) "dGd" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/sc/hop/quarters) "dGe" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hop/quarters) "dGf" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hop/quarters) @@ -9798,7 +9798,7 @@ "dGv" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hor/quarters) "dGw" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hor/quarters) "dGx" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/sc/hor/quarters) -"dGy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) +"dGy" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafe Back Room"; dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "dGz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) "dGA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 8},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dGB" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop/quarters) @@ -10241,7 +10241,7 @@ "dOW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) "dOX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) "dOY" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) -"dOZ" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room) +"dOZ" = (/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/cargo) "dPa" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "dPb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "dPc" = (/obj/structure/bed/chair/comfy/blue{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) @@ -10582,7 +10582,16 @@ "dVz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/station_map{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) "dVA" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/machinery/station_map{dir = 8; pixel_x = 32},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) "dVB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/station_map{dir = 1; pixel_y = -32},/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/central) - +"dVC" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/light/small,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay) +"dVD" = (/obj/machinery/light/small{dir = 8},/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/chapel) +"dVE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/catwalk,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/bar) +"dVF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Chapel Office"; req_access = list(27)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_grid,/area/chapel/office) +"dVG" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/deck/cards,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/wood,/area/library) +"dVH" = (/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) +"dVI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/meter,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) +"dVJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/meter,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) +"dVK" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/bridge/meeting_room) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10689,7 +10698,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaadLadLaekaelaemaenaenaenaeoaenaenaenaepaeqaczabtaeraesaetaeuaevaewaexaeyaezaeAaeBaeAaezaeCabtabtadFaeDaeEaejaejaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaeFaaaaaaaaaadLadLaeGaeHaeIaemaeJaeKaeLaeMaeNaeOaenaePaeQaePaeRaeRaeSaeTajdabtabtaaaaaaaaaaeVaeWaeVaaaaaaaaaabtaanaeDaeXaeYaejaejaaaaaaaaaaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaeZaaaaaaaaaaaaaadaaaaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaeFaeFafaafbafcafcafcafcafcafcafcafcafcafcafcafdafaaeFaeFaaiadLadLafeaffafgafhaemafiafjafjafkafkaflaenafmafnafoafpaePafqafrafsabtaaaaaaaftaftaftafuaftaftaftaaaaaaaanafvaeXafwafwaejaejaanaeZaeZafxafyafzafzafzafzafzafzafzafzafzafzafzafAafBaeZaeZaafaafaafaadaaaaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaeFafCafDafEafFafFafFafGafHafIafJafGafFafFafFafKafDafLaeFafMafNafOafPafQafRafSaemafTafkafUafjafkaflaenafVafWafXafYaePafZagaagbabtaaaaaaaftagcagdageagfaggaftaaaaaaaanafvaeXaghagiagjagkaghaeZaglaglaglagmagmagmagmagmagmagmagmagmagmagmagnagoagpaeZaaaaaaaaaaadaaaaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaeFafCafDafEafFafFafFafGafHafIafJafGafFafFafFafKafDafLaeFafMafNafOafPafQafRafSaemafTafkafUafjafkaflaenafVafWafXafYaePafZagaagbabtaaaaaaaftagcagdageagfaggaftaaaaaaaanafvaeXaMvagiagjagkaghaeZaglaglaglagmagmagmagmagmagmagmagmagmagmagmagnagoagpaeZaaaaaaaaaaadaaaaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaadaaaaaaaaaaeFafCafDafEafFafFafGagqagragsagtagqafGafFafFafKafDaguagvafMagwagxagyagzagAagBaemagCafkafjafjagDagEaenagFagGagHagIaePagJagKagJabtaaaaaaaftagLagdagMagdagNaftaaaaaaaanagOagPagQagRagSagTaghagUaglafxaglagmagmagmagmagmagmagmagmagmagmagmagVagoagpaeZaaaaaaaaaaadaadaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaeFafCafDafEafFafFagWagXagYagZagYahaagWafFafFafKafDahbaeFahcahdaheaheahfaheaheaemahgahhafkafjafjahiaenaePahjaePahkaePahlahmahlabtaaaaaaaftahnahoahpahqahraftaaaaaaahsahtahtahuahtahtahvahwaeZahxagoahyagmagmagmagmagmagmagmagmagmagmagmagVagoagpaeZaaaaaaaaaaaaaadaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaahcaeFahzahAafEafFafFafGahBagWahCagWahDafGafFafFafKahEahFaeFaeFahGaheahHahIahJahKaemahLahMahNahOafjahPahQaePahRaePahSaePahTahUahVabtaaaaaaaftahWagdahXahYahZaftaaaaaaahsaiaaibaicaidahtaieaeZaeZaifaigaihagmagmagmagmagmagmagmagmagmagmagmagVaiiaijaeZaikaaaaaaaaaaadaaaaaaadIadIadIadIadIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10702,7 +10711,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLakLakLakLakLakLakLakLakLakLakLakLakLaeFaeFakMakgafFafGakNakOakNakNakPakQakRakSafFafKakTaeFaeFaeFaioakUadlaaaaaaaaaaaaajpajpakoakVakWakWakXakYakZalaalbalcaldalealfalgalhalialjalkallalmalmalnakIajxajxaaaaaaaaaaaaadFaloaiyaeZaeZaeZalpaiAagmagmagmagmagmagmagmagmagmagmagmagValqaeZaeZalralralralralralralralralralralralralraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltalualtaltalualtaltaltalvaeFalwalxakgafFafGalyaiDalzagZalAalBalCafGafFafKalDalEaeFahcaioadladlaaaaaaaaaajpajpakoakoalFakoalGalHalHalHalHalHalHalHalHalHalHalHalHalIalIalIalJakIalKakIakIajxajxaaaaaaaaaadFadFaiyaikaeZalLalMaiAagmagmagmagmagmagmagmagmagmagmagmagValNaijaeZalOalOalOalOalOalPalOalOalOalOalOalPalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRalSalTalUalValWalXalYalZamaambaeFamcajEafEafFaiDaiDahBafFafFafFahBaiDaiDafFafKajEamdaeFameaioadLaaaaaaaaaaaaajpakoakVakWamfamgalHalHalHalHalHalHalHalHalHalHalHalHalHalIalIalIalIamhamialmalnakIajxaaaaaaaaaaaaaejaiyamjaeZaiSamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfagpaeZalOamlalOalOalOalOalOalOalOalOalOalOalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsammamnamoamoamoamoamoamoamoampamaambaeFamqajEafEafFamramsafFafFafFafFafFamramsafFafKajEamtaeFamuaioadLaaaaaaaaaajoajoamvalFakoamwamxalHalHalHamyamzamAamBamCamDamEamBamFamGamHamIamJalIamKamLakIalKamMajwajwaaaaaaaaaaejaiyamNaeZamOamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfamPaeZalOalOalOalOalOalOamQalOalOalOalOalOalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsammamnamoamoamoamoamoamoamoampamaambaeFamqajEafEafFamramsafFafFafFafFafFamramsafFafKajEamtaeFamuaPaadLaaaaaaaaaajoajoamvalFakoamwamxalHalHalHamyamzamAamBamCamDamEamBamFamGamHamIamJalIamKamLakIalKamMajwajwaaaaaaaaaaejaiyamNaeZamOamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfamPaeZalOalOalOalOalOalOamQalOalOalOalOalOalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRamRamSamTamoamUamVamWamXamaambaeFamYamZanaanbanbanbanbanbanbanbanbanbanbanbancandaneaeFanfaioadLaaaaaaaaaajoanganhalFalGanianianialHalHanjanjanjanjanjankanlanmanmannanoanpanqalIalIalIalJalKanransajwaaaaaaaaaaejaiyantaeZanuanvanwanxanxanxanxanxanxanxanxanxanxanxanyanzanAaeZalOalOalOalOalOanBanCalOalOalOalOalOalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltanEaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianianTanUanialHanVanWanXanYanZanZaoaaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZalPalOalOalOaowalOalOalOalOalOalOalOalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaakLakLakLakLakLakLakLaoxaoxaoyaoyaoyaoyaoyaeFaeFaeFaeFaeFaeFaeFaeFaozahcaoAaeFaoBaoBaoBaeFaeFaeFaeFafMaoCaoDadlaaaaaaajpaoEaoFaoGaoHaoIaoJaoKanialHanjaoLaoMaoNanZanZaoOaoPaoQaoRaoSaoTaoUaoVaoWaoXalIaoYaoZapaajxaaaaaaadFapbapcapdaeZaeZaeZaikapeapeapeaikapfaikapgaikaeZaeZaeZaeZaeZaeZaeZaphaphaphaphaphapiapialralralralralralralraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10711,7 +10720,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLarSapkakLakLakLakLakLakLarTarUarUarUarVarWarXapuarYapyaqParZasaasbapuascasdaseapCasfasgashapCasiasjaskaslasmasnadlasoasoaspasqasrajSamxarfargarfanialHalHalHalHalHalHalHalHalHalHalHalIalIalIamHassastalIasuasvaswasxasyasyadFaszaghasAasAasAasAaqgasBasCasDaqgasEasFasGaqmasHasIasJarIasKaqqaqmasLasMasNasOasOasOaphalralralralralralralOalPalraaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmatnatmatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKatLatMatNatOatDatPatQatRatSatSatSatSatSalralOalOalraaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaafaaaaaaaaaatTatUapkakLasQasQasQasQasQatVatWatXatYatZauaaubaucaudatZaueaucaufatWaugauhauiaujaukaukaukaulaumaunauoaupauqauzausautauuaukauvauwauxauyauBauDauCauFauEavLauGavMauratoatoatoatoatoatpauIauJauKattauLauMauNatpauOauPauQauRauSauTauUauVauWauXauYauZavaavbauRavcauSauSavdasFauRaveavfavgavaavhauRaviavaavjavkauRavlavmauSavnatSatSatSatSatSalravoalOavpaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafatTapkavqakLasQasQasQasQasQavravsavtavuavuavvavwavwavxavyavzavwavAavwavwavBavCavDavwavwavyavwavwavAavwavEavFavGavHavwavIavwavwavJavKavwavNavPavOavRavQawOavSawQauratoatoatoatoatoatpavTavUavVavWavXavYavZatpawaawbawcawdawdaweawdawfawgawhawiawjawkawlawlawmawlawlawnawoawlawlawmawpawlawqawlawrawlawlawsawtawtawuawvawwatSatSatSatSatSalrawxalOavpaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafatTaRXavqakLasQasQasQasQasQavravsavtavuavuavvavwavwavxavyavzavwavAavwavwavBavCavDavwavwavyavwavwavAavwavEavFavGavHavwavIavwavwavJavKavwavNavPavOavRavQawOavSawQauratoatoatoatoatoatpavTavUavVavWavXavYavZatpawaawbawcawdawdaweawdawfawgawhawiawjawkawlawlawmawlawlawnawoawlawlawmawpawlawqawlawrawlawlawsawtawtawuawvawwatSatSatSatSatSalrawxalOavpaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaafaaaaaaaaaatTapkawyakLasQasQasQasQasQawzawAawBawCawDawEawFawGawHawIawJawKaxGawAawLawMatbawNawAawAawPawAawRawAawSawTawUawVawWawXawYawZaxaaxbaxcauyaxdauDaxeaxgaxfaxiaxhaxjauratoatoatoatoatoatpaxkaxlaxmattavZaxnaxoatpaxpaxqaxrasGaxsaxtaxuaxvaxwauXaxxaxyaxzaxAaxBaxsaxDaxsaxEasFasGaxFaxsaUiaxHaxIasGaxJaxzaxKaxLasGaxMaxNaxsaxOatSatSatSatSatSalraxPalOavpaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaakLapkapkakLaxQasQasQasQasQarTaxRaxSarUaxTaxUaxVaxWaxXaxVaxYaxVaxVaxVaxVaxZatbayaarUarUarUarUarUarUarUarUarUaybaycarUaydayeayfaygayhayiaxCatmatnayjatmatmatmatmauraynatoatoatoatoatpayoaypayqattatuazvatuatpayraysaytayuatPayvatDaywayxatDatDatDatDayyayyayyayyayzayAayBayCayDayDayDayDayEayDayFayGayHayIayJayKatPayLatRayMatSatSatSatSalrayNalOalraaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLayOapkakLakLakLakLakLakLarTarUarUarUayPapkaxVayQayRaySayTayUayRayVaxVayWayXayYaybayZazaazbazcazcazdazeazfazgazhaybasoasoaziazjazkazlaykazmaznazoazpaykaylaymauHauHazsaztazuauHatpatpatpatpatpatpaAlatpatpazwazxazyazzasyasyayxazAazBazCazDazEazFayyazGazHazIayyazJasFazKayDazLazMayDazNazOazPayDazQazRazSazTazTazTazUalralralralralralrarRalOalraaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10730,19 +10739,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaCsaEEaFOaFQaFQaFQaFQaFQaFQaFQaKGaKGaKGaKHaKIaCsaKJaKJaKJaKJaKJaKpaKKaKLaKMaKqaKNaKNaKNaKNaybazhaKsaKOaKPaKtaKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKQaKRaKSaJUaKTaKUaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKyaKyaKVaKWaKzaElaKXaDjaJraKYaGxaGyaGyaHOaKZaLaaJwaLbaLcaHOaGyaGyaGBaKYaJyaDjaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFQaFQaFQaFQaFQaFQaFQaIHaIIaIIaIIaFTaLdaKJaKJaKJaKJaKJaKpaLeaLfaLgaKqaLhaAcaAcaAcaLiazhaLjaLkaLlaLmaKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKQaLnaLoaLpaLqaLraKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKyaLsaLtaLuaLvaElaLwaDjaJraLxaGxaGyaGyaHkaLyaJwaJwaJwaLzaHkaGyaGyaGBaLxaJyaDjaDkaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaLAaFOaFQaFQaFQaFQaFQaFQaFQaFRaEPaEPaEPaLBaLCaKJaKJaKJaKJaKJaKpaLDaLEaLFaKqaAcaAcaAcaLGaybaLHaKsaLIaLlaLJaKtaaaaaaaaaaaaaLKaLLaLMaLLaLNaaaaaaaLOaLOaLPaJUaLQaLRaLRaLRaLRaLRaLRaLSaLSaLSaLRaLRaLRaLRaKyaLTaLtaLUaKzaElaDkaDjaDjaLVaLWaGyaGyaKhaLXaLXaJwaLXaLXaKhaGyaGyaGBaLYaDjaDjaDjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFQaFQaFQaFQaFQaFQaFQaFRaLZaEPaEPaFTaMaaKJaKJaKJaKJaKJaKpaKqaMbaKqaKqaMcaMdaMeaMfaMfaMgaKsaMhaLlaMiaKtaaaaaaaaaaaaaMjaMkaMlaMmaMjaaaaaaaaaaLOaMnaJUaMoaMpaMqaMraMsaMtaLSaMuaMvaMwaMxaMyaMzaLRaMAaMBaLtaLuaKzaMCaDjaDjaMDaMEaLWaGyaGyaHOaMFaKhaMGaKhaHlaHOaGyaGyaGBaMHaMIaDjaDkaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFQaFQaFQaFQaFQaFQaFQaFRaLZaEPaEPaFTaMaaKJaKJaKJaKJaKJaKpaKqaMbaKqaKqaMcaMdaMeaMfaMfaMgaKsaMhaLlaMiaKtaaaaaaaaaaaaaMjaMkaMlaMmaMjaaaaaaaaaaLOaMnaJUaMoaMpaMqaMraMsaMtaLSaMuaSNaMwaMxaMyaMzaLRaMAaMBaLtaLuaKzaMCaDjaDjaMDaMEaLWaGyaGyaHOaMFaKhaMGaKhaHlaHOaGyaGyaGBaMHaMIaDjaDkaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaCsaEEaFOaFPaFQaFQaFQaFQaFQaFPaFRaMJaMKaMLaMMaCsaMNaKJaKJaKJaKJaMfaDOaDOaDOaybaybaybaybaMfaMOaLHaKsaKsaMPaKsaKtaMQaMQaMQaMRaMjaMSaMTaMUaMjaMVaMQaMQaMQaMWaMXaMWaLRaMqaMYaMZaNbaNaaNdaNcaNfaNeaNgaMzaLRaKzaKzaNhaKzaKzaNiaDkaDjaNjaNkaLWaGyaGyaKhaNlaNmaJwaNmaNnaKhaGyaGyaGBaNkaJyaDjaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaCsaNoaNpaNqaNraNraNsaNtaNtaNuaNvaNwaCtaCtaCtaCsaMfaMfaMfaMfaMfaMfaNxaNxaNxaNyaNzaybaNAaNBaAcaNCaNDaNEaNFaNGaNHaMQaNIaNJaNKaNLaNMaNNaNMaNLaNOaNPaNQaMQaNRaNSaNRaLRaNTaNUaNVaNWaNXaNYaNZaOaaObaOcaMzaLRaOdaOeaOfaOgaOhaOiaAIaOjaOkaNkaGxaGyaGyaHOaHUaOlaOmaOnaHUaHOaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaCsaCsaOoaOpaOqaOqaOraOqaOqaOsaOtaOuaCuaDOaOvaAcaAcaAcaOwaAcaAcaAcaAcaAcaOxaAcaAcaOyaAcaAcaAcaAcaAcaAcaAcaLHaOzaMQaOAaOAaOBaOCaODaOEaOFaOGaOHaOAaOIaMQaIpaOJaOKaLRaOLaOMaONaOOaOPaOQaORaOSaOTaOUaOVaLRaOWaOXaOYaOZaPaaPbaAIaDjaPcaNkaGxaGyaGyaGyaHOaPdaPeaPfaHOaGyaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaCsaCsaCOaDRaCOaCsaCOaDRaCOaCsaCsaCsaDOaOvaMfaFcaFcaFcaFcaFcaMfaPgaPhaMfaMfaMfaMfaMfaMfaMfaFcaFcaAcaAcazhaPiaMQaPjaOAaPkaPlaPlaPmaPnaPnaPoaOAaPpaMQaPqaPraPsaLRaPtaPuaPvaPwaPxaPyaPzaPAaPBaPCaPDaLRaPEaPFaPGaPHaFuaFuaPIaDjaDjaNkaPJaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPLaPMaDjaDjaafaafaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaCsaCsaOoaOpaOqaOqaOraOqaOqaOsaOtaOuaCuaDOaOvaAcaAcaAcaOwaAcaAcaAcaAcaAcaOxaAcaAcaOyaAcaAcaAcaAcaAcaAcaAcaLHaOzaMQaOAaOAaOBaOCaODaOEaOFaOGaOHaOAaOIaMQaIpaOJaOKaLRaOLaOMaONaOOaOPaOQaORaOSaOTaOUaOVaLRaOWaOXaOYaOZaZYaPbaAIaDjaPcaNkaGxaGyaGyaGyaHOaPdaPeaPfaHOaGyaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaCsaCsaCOaDRaCOaCsaCOaDRaCOaCsaCsaCsaDOaOvaMfaFcaFcaFcaFcaFcaMfaPgaPhaMfaMfaMfaMfaMfaMfaMfaFcaFcbaXaAcazhaPiaMQaPjaOAaPkaPlaPlaPmaPnaPnaPoaOAaPpaMQaPqaPraPsaLRaPtaPuaPvaPwaPxaPyaPzaPAaPBaPCaPDaLRaPEaPFaPGaPHaFuaFuaPIaDjaDjaNkaPJaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPLaPMaDjaDjaafaafaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaCsaMfaMfaMfaaaaaaaaaaaaaaaaMfaMfaMfaMfaaaaaaaaaaafaaaaaaaaaaFcaFcaAcazhazcaMQaPNaPOaPPaPQaPRaPSaPTaPUaPVaPWaNMaPXaPYaPZaKTaLRaLRaQaaQbaQcaLSaQdaQeaQfaQgaQhaQiaLRaQjaQkaQlaFuaFuaaaaaaaaaaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaFcaFcazhaQmaMQaNMaNMaQnaNMaNMaQoaNMaNMaQpaNMaNMaQqaQraPZaQsaQtaQuaQuaQvaQuaQuaQuaQuaQuaQwaQuaQuaLRaQxaQyaFuaFuaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaFcaQzaQAaQBaQCaQDaQDaQEaQFaQGaQHaQDaQIaQDaQJaQKaQLaQMaQNaQKaQOaQPaQQaQRaQSaQKaQTaQUaQVaQVaQWaQXaQYaQZaFuaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaagaadaadabcaagaagaadaadaafaagaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaabaaaaaaaaaaMfazgazgaybaRaaRbaRbaRcaRdaReaRfaRgaRhaRbaRiaRjaRkaRlaRmaRjaRnaRjaRoaRpaRqaRraRsaRtaRjaRjaRuayxazBazBaPIaaaaaaaaaaabaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaafaadaadaadaafaaeaagaadaadaadaafaaaaafaagaadaadaadaadaafaaeaaaaMfaMfaMfaMfaLOaLOaLOaRvaRwaRxaRyaRzaRAaRzaRzaRBaKvaRCaKwaKxaRDaRDaRDaRDaREaRFaRGaRHaLOaLOaLOaPIaPIaPIaPIaafaafaadaadaadaadaKmaaaaadaafaadaadaadaadaadaadaadaaaaaeaKmaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaRNaROaRMaRPaRQaRRaRzaRSaRTaRCaRUaRSaRDaRVaRWaRXaREaRYaRZaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaRNaROaRMaRPaRQaRRaRzaRSaRTaRCaRUaRSaRDaRVaRWaRWaREaRYaRZaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaaaaaaaaaaaaaaaaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaSgaShaSiaSjaSkaSlaSmaSnaRMaSoaSpaSqaSraRSaSsaStaKTaKRaRDaSuaRVaSvaSwaSxaSyaSzaSAaSBaSCaSDaSEaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaSFaSGaRyaRzaRzaRzaRzaRSaSHaSIaSJaSKaSLaSMaSNaSOaREaSPaSQaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaSFaSGaRyaRzaRzaRzaRzaRSaSHaSIaSJaSKaSLaSMbmqaSOaREaSPaSQaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaSfaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSRaRyaRyaRyaRyaRyaRyaSSaSTaRyaSUaSVaSWaSXaSYaSZaTaaTbaTcaTdaTeaTfaTgaREaThaTiaREaREaREaREaREaREaTjaaaaaaaaaaTkaaaaaaaaaaTkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaSfaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaTlaTlaTmaTlaTnaRMaToaTpaTqaTraTbaTbaTbaTsaTbaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaSaaTDaTEaTFaTEaTEaSeaaaaaaaaaaTkaaaaaaaaaaTkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaTGaTHaTIaTJaTKaTLaTMaTNaRyaTOaTPaTQaTRaRnaTSaTTaTUaTcaTdaTVaTWaTXaREaTYaTZaUaaUbaUcaUdaUeaUfaSeaaaaaaaaaaTkaaaaaaaaaaTkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10919,8 +10928,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaWBaYmaYnaYoaXaaYpaXLaXMaXIaXLaYqaXhaYraXjaYsaWnaYtaWNaYuaYvaYwaYxaYyaYzaYAaYBaYCaYDaYEaXvaYFaWoaYGaYHaYIaYJaYKaXAaYLaYMaYNaWXaXEaXFaXFaXFaYiaYjaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaWsaWsaWtaWtaWtaWtaYkaWtaWtaWtaYlaWtaWtaWtaWtaWsaWsaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaWBaYOaYPaXJaXaaYQaYRaYSaYTaYUaYVaXhaYWaXjaYXaWnaYYaYZaZaaZbaWnaZcaZdaZeaZfaZgaWoaZhaZiaZjaWoaWoaXAaXAaZkaZlaZmaZnaZoaZpaZqaWXaXEaZraZsaZtaYiaYjaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaWsaWtaWtaWtaWtaWtaWtaYkaWuaYlaWtaWtaWtaWtaWtaWtaWsaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaWCaXaaZuaXaaXhaZvaXLaZwaZxaXLaZyaXhaXhaZzaXhaWnaZAaWnaZBaWnaWnaWnaZCaZDaZCaWnaWoaWoaWoaWoaWoaWoaZEaZFaYbaZGaZHaXAaZIaZJaZKaWXaZLaXFaZMaXFaZNaWXaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaafaafaafaWsaWuaZOaWtaWtaWtaWtaWtaZPaWtaWtaWtaWtaWtaZQaWuaWsaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaZRaZSaZTaZUaZVaZWaXLaZXaZYaXLaZZbaababbacbadbaebafbagbahbaibajbakbalbambanbaobapbaqbarbasbatbauaXAaXAaXAbavaXAaXAbawbaxbawaWXbaybazbaAbazbaBaWXaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaWsaWtaWtaWtaWtaWtaWtbaCbaDbaEaWtaWtaWtaWtaWtaWtaWsaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaabaaaaaabaFbaGbaHbaIbaJbaKbaLbaMbaNbaLbaObaPbaLbaQbaRbakbaSbaTbaUbaVbaWbaXbaYbaZbbabbbbbcbbdbbebbfbbgbaobbhbbibbjbbkbblbbmbbnbbkbbobbpbbqaXFbbraXFbbsaWXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaWsaWsaWtaWtaWtaWtbaCaWtbaDaWtbaEaWtaWtaWtaWtaWsaWsaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaZRaZSaZTaZUaZVaZWaXLaZXbntaXLaZZbaababbacbadbaebafbagbahbaibajbakbalbambanbaobapbaqbarbasbatbauaXAaXAaXAbavaXAaXAbawbaxbawaWXbaybazbaAbazbaBaWXaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaWsaWtaWtaWtaWtaWtaWtbaCbaDbaEaWtaWtaWtaWtaWtaWtaWsaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaabaaaaaabaFbaGbaHbaIbaJbaKbaLbaMbaNbaLbaObaPbaLbaQbaRbakbaSbaTbaUbaVbaWbnVbaYbaZbbabbbbbcbbdbbebbfbbgbaobbhbbibbjbbkbblbbmbbnbbkbbobbpbbqaXFbbraXFbbsaWXaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaWsaWsaWtaWtaWtaWtbaCaWtbaDaWtbaEaWtaWtaWtaWtaWsaWsaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabbtbbubbvaXMbbwbbxbbybbzbbAbbBbbCbbDbbEbbFbbGbakbaSbbHbbIbbJbbKbbLbbMbbNbbObaobbPbbQbbRbbSbapbaobbTbbUbbVbbWbbXbbXbbYbbZbcabcbbccbcdbcebcdbcfaYjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWsaWtaWtaWtbaCaWtbcgbaDbchaWtbaEaWtaWtaWtaWsaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaWBaWBbcibcjbckaXhbclbcmbcnaXhbcobcpaXhaXLbcqbcrbcrbcrbcsbctbcubcvbcwbcxbcybczbaobaobcAbaobaobaobcBbcCbcDbcEbcFbbUbcGbbUbcHaYjbcIbcJbcKbcJbcLaYjaaaaaaaaaaadbcMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWsaWsaWtaWtaWtaWtbcgbaDbchaWtaWtaWtaWtaWsaWsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaafaagaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabcNbcObcPbcQbcRbcSbcPbcTbcRbcUbcVaXhbcWbcXbcrbcYbcZbdabdbbdcbcrbddbdebdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdrbbUbbUbbUbdsbdtbdubdvbdwbdxbduaYjaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWsaWtaWtaWtaWtbcgbaDbchaWtaWtaWtaWtaWsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10934,18 +10943,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaafaaaaaaaabaaaaaaaaabgvbjabjbbgvbjabjbbgvbjcbjdbgvbgwbgvbjabjebgvaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaabgxbjfbjgbjhbgybjibjjbcRbjkbjlbcRbjmbjnbjmbjmbjobjpbjqbjmbjrbjsbjtbjubjvbjwbjxbjubjybjsbjzbjAbjBbjCbfgbjDbjEbjFbjGbjHbjIbjJbjKbjLbjMbjNbjObjPbjQbjRbjSaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhbjTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaabjUbgwaaabjUbgwaaabjVbjVaaabgwaaabjUbjWaaaaaaaaaaaaaaaaaaaafbfGaaaaaaaaaaaaaaaaaabgxbjXbjgbjYbgxbcNbcNbcNbcNbcRbcRbjZbkabkbbkcbkdbkebkfbkgbjrbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbksbktbkubkqbkvbkvbkvbkvbkvbkvbkvbkvbkwbkxbkybkybkybEBbkyaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaaaaabkAbkCbkEbkDbkBbkEbkFbkGbkHbkIbkJbkFbkGbkKbkLbkMbkAbkAaaaaaaaaaaaaaadaaaaaaaadaaaaaaaaabgxbgxbkNbgxbgxbkObkPbkQbjrbkRbkSbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhblibljblkbllblmblnbloblpblqbkvblrblsbltblublvblwbkvblxblybkyblzblAblBbkyaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhgaafaafaafaafaaaaaaaaaaafaafaafaafbhhaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaabkAblCblDblEblFblGblHblIblJblKblLblMblNblOblPblQblRblSblTbkAaafaafaafaadaafabcaadaafaafaafblUblVblVblVblWblXblYblZbjrbmabmbbmcbmdbmebkZbmfbmgbmhbmibmjbmkbldbmlbmmbmnbmoblcbljbmpbmqbmrbmsbmtbmubmvbkvbmwbmxbmybmzbmAbmBbmCbmDbmEbmFbmGbmHbmIbkyaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmJbhgbmJaaaaaaaafaaaaaaaaaaafaaaaaabmJbhhbmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaabkAbmKbmLbmMbmNbmLbmObmPbmQbmRbmLbmSbmNbmTbmMbmUbmLbmVbmWbkAaaaaaaaaaaafaaaaaaaaaaaaaaaaaablUbmXbmYbmZblWblWbnablWbjrbnbbncbndbnebnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnobnsblkbntbnubnvbnwbnxbnybkvbnzbnAbmAbnBbmAbnCbmCbnDbnEbkybkybkybkybkyaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhgaafaafaafaafaaaaaaaaaaafaafaafaafbhhaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabkGbnFbnGbmObmPbnHbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbmQbnSbnTbkGaaaaaaaaaaafaaaaaaaaaaaaaaaaaablUblUbnUbnVbnWbnXbnYblVbjrbnZboabmbbobbocbkZbodbmfboebofbjrbogbohboibojbokbolbombonboobkqbopboqborbosbotbkvboubovbowboxbmyboybmCbozboAboBboCboDboEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaabkAblCblDblEblFblGblHblIblJblKblLblMblNblOblPblQblRblSblTbkAaafaafaafaadaafabcaadaafaafaafblUblVblVblVblWblXblYblZbjrbmabmbbmcbmdbmebkZbmfbmgbmhbmibmjbmkbldbmlbmmbmnbmoblcbljbmpboCbmrbmsbmtbmubmvbkvbmwbmxbmybmzbmAbmBbmCbmDbmEbmFbmGbmHbmIbkyaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmJbhgbmJaaaaaaaafaaaaaaaaaaafaaaaaabmJbhhbmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaabkAbmKbmLbmMbmNbmLbmObmPbmQbmRbmLbmSbmNbmTbmMbmUbmLbmVbmWbkAaaaaaaaaaaafaaaaaaaaaaaaaaaaaablUbmXbmYbmZblWblWbnablWbjrbnbbncbndbnebnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnobnsblkbrQbnubnvbnwbnxbnybkvbnzbnAbmAbnBbmAbnCbmCbnDbnEbkybkybkybkybkyaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhgaafaafaafaafaaaaaaaaaaafaafaafaafbhhaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabkGbnFbnGbmObmPbnHbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbmQbnSbnTbkGaaaaaaaaaaafaaaaaaaaaaaaaaaaaablUblUbnUbyRbnWbnXbnYblVbjrbnZboabmbbobbocbkZbodbmfboebofbjrbogbohboibojbokbolbombonboobkqbopboqborbosbotbkvboubovbowboxbmyboybmCbozboAboBbJHboDboEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvboFboGboJboKboHboIboLboMboNboLboQboPboOboQboRboSboTboUbmMbmUboVboWboXbkGaaaaaaaaaaafaaaaaaaaaaabaaaaaaaaaboYboZbpablYbpbbnYblVbpcbpdbpebpfbpgbphbkZbpibkZbpjbpkbjrbjubjubjubplbpmbpnbjubpobjubkqbppbpqbprbpsbptbkvbpubpvbmAbpwbmxbpxbmCbpybpzbpAbpBbpCboEaaaaaaaaaaabaagaaaaaaaaaaaaaaaaafabcaadaadaadaadaadaagaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvbpDbpEbpFbpGbpHbpIbpJbpKbmPbpLbpMbpMbpNbnHbpObpPbmPbpQbpRbpSbpTbpUbpVbpWbpWbpWbpWbpWaaaaaaaaaaaaaaaaaaaaaboYboZbpXbpYbpZbqablVbjrbqbbqcbqdbqebqfbqgbqhbqibqjbqkbjrbqlbjubqmbqnbqobqpbqmbqqbjubqrbkqbkqbkqbkqbkqbkvbqsbqtbqubqvbqwbqxbmCbqybqzbqAbqBbqBboEaaaaaaaaaaaaaadaaaaaaaaaaaaaafaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKaafaafaafaafbgvbgvbgvbgvaaabqCbqDbqEbmMbmNbqFbqGbqJbqIbqHbqKbqLbqMbqHbqNbpTbmTbqObqPbpWbqQbqRbqSbpWbqTbqUbqUaaaaaabqVblUbqWbqXbqYbqZbrabrbbrbbrbbrbbrbbrbbrcbrbbrbbrbbrbbrbbrbbrbbrbbrbbrdbrebrfbrfbrgbrhbribribrjbrkbrlbrmbrnbmCbrobrpbrqbrobrobmCbmCbrrbrsbrtbrubrvbrwbrxaafaafaafaadaaaaaaaaaaafaafaaaaaaaafaaaaaaaafaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabgvbrybrzboJboKboHbrAboLbrBbrCboUbrDbmLbmTbmUbmLbrEbnJbrFbnJbrGbrHbrIbrJbrKbrLbrMbrNbrObrPbrQbqUbqUaaabrRbrSbrTbrUbrVbrWbrXbrYbrZbsabsbbscbsdbsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbsubsvbtPbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsKbsLbsMbsNbsObsPaaaaaaaaaabcaadaadaadaagaabaaaaaaaafaaaaaaaafaaaaafaafbsQaafaafaaaaaaaaaaaeaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabgvbrybrzboJboKboHbrAboLbrBbrCboUbrDbmLbmTbmUbmLbrEbnJbrFbnJbrGbrHbrIbrJbrKbrLbrMbrNbrObrPbMNbqUbqUaaabrRbrSbrTbrUbrVbrWbrXbrYbrZbsabsbbscbsdbsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbsubsvbtPbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsKbsLbsMbsNbsObsPaaaaaaaaaabcaadaadaadaagaabaaaaaaaafaaaaaaaafaaaaafaafbsQaafaafaaaaaaaaaaaeaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabgvbsRbsSbpFbpGbsTbsUbmTbsVbsWbsXbsYbqHbsZbpTbtabtbbtcbtdbtebtfbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbqUaaabtrbrSbtsbttbtubtvbtwbtxbtybtzbtAbtzbtBbtzbtCbtDbtzbtEbtFbtGbtHbtIbtJbtKbtLbtMbtNbtObtQbtRbuTbtSbvkbtTbtUbtVbtWbtVbtXbtVbtYbtZbuabubbucbudbsLbuebufbsObugaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabuhbuibujbukaaaaafaaabulaaaaafaaaaaaaagaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaabaaaaaabhhaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabqCbumbqEbmMbmNbunbuobupbuqburbsWbusbutbutbutbuubutbutbuvbuwbuwbuwbuwbuwbuxbuybuzbqTbqTblUblUbuAbuBbuCbuDbuEbrbbuFbuGbuHbuGbuIbuJbuGbuKbuLbuHbuKbuMbuNbuObuPbuQbspbuRbuSbuUbuVbvXbvYbuWbuXbuWbuYbuWbuWbuWbuZbvabvbbvabuZbuZbvcbvdbrtbvebvfbrwbrwaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabvgbvhbvhbvgbvgbvgbvibvjaaaaafaaaaaaaafaaaaaaaaaaaaaabbhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaadabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvbvmbvlboJboKbvnbvqboLbrBbvobvpbwvboQbvrboQboTbvsbutbvtbvubvvbvwbvxbuvbvybvzbvAbvBbuwbvCbvDbvEbvFbvGbvHbvIbvJbvKblUblUbvLbrbbvMbvNbvObvNbvPbrbbvQbuPbrbbvRbuPbrbbvSbuPbrYbvTbvUbvVbvWbxhbxjbzybxjbuWbwabwbbwcbwdbwebuWbwfbwgbwhbwibwjbuZbwkbvZbvZbwlbwmbwnbvgaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabwobwpbwqbwrbwsbwsbwtbvjbvibviaaaaaaaafaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvbwubBUbpFbpGbwwbwxbwybwzbwAbwBbwCbwBbwDbwBbwEbwFbwGbwHbwIbwJbwKbwLbuvbwMbwNbwObwPbwQbwRbwSbwTbwUbwUbwUbwUbwUbwUbwVbwWbwXbrbbwYbvNbwZbvNbvPbrbbvNbxabrbbvNbxbbrbbvNbxcbrbbxdbxebxfbxgbxhclfclgcnebuWbxkbxlbxmbxnbxobuWbxpbxqbxrbxsbxtbuZbxubxvbvZbxwbxibxxbvgaaaaaaaaaaaaaaabvgbvgbvibvibvibvgbxybxzbxAbxBbxCbxDbxEbxFbxGbvibvgbxHbxHbxIbxIaafaafaafbhgaafaafaafaafbxJbxKbxLbhgbxMbxNbxObxPbxQaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabxRbxSbqEbxTbxUbxVbxWbxXbxYbmTbxZbyabwGbybbycbydbyebyfbuvbygbyhbyibyjbuwbvCbykbylbuxbuxbuxbuxbuxbuxbuxbymbynbrbbyobvNbypbyqbvPbrbbyrbysbrbbyrbytbrbbyrbyubrbbyvbywbyxbxgbxhcnfcoUcJZbuWbyybyzbyAbyBbyCbuWbyDbxqbyEbxqbyFbuZbyGbxvbvZbvZbyHbvZbvZbvgbvgbvgbvgbvgbvgbxibyIbyJbyKbyKbyLbyMbyMbyLbyNbyObyPbyQbyRbySbyTbxHbyUbyVbxIbxIaaaaaabhgaaaaaaaaaaafbyWbyXbyYbyZbzabyZbyWbzbbyWaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabxRbxSbqEbxTbxUbxVbxWbxXbxYbmTbxZbyabwGbybbycbydbyebyfbuvbygbyhbyibyjbuwbvCbykbylbuxbuxbuxbuxbuxbuxbuxbymbynbrbbyobvNbypbyqbvPbrbbyrbysbrbbyrbytbrbbyrbyubrbbyvbywbyxbxgbxhcnfcoUcJZbuWbyybyzbyAbyBbyCbuWbyDbxqbyEbxqbyFbuZbyGbxvbvZbvZbyHbvZbvZbvgbvgbvgbvgbvgbvgcbvbyIbyJbyKbyKbyLbyMbyMbyLbyNbyObyPbyQcjEbySbyTbxHbyUbyVbxIbxIaaaaaabhgaaaaaaaaaaafbyWbyXbyYbyZbzabyZbyWbzbbyWaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJaaaaaaaaaaaaaaaaaaaaaaaaaaabkAbzcbzdbzebkAbkAbzfbzgbzhbzgbzibzjbzkbuvbutbzlbutbuvbuvbuwbuwbzmbuwbuwbuxbznbzobzpbuxbzqbzrbzsbztbuxbymbynbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbzubzvbzwbzxbxhcOBdcSdfrbuWbzAbzBbzCbzDbzEbuWbzFbzGbzHbxqbzIbuZbzJbzKbzLbzMbzNbzNbzNbzNbzNbzNbzObzNbzNbzNbzNbzPbzQbzRbzSbzTbzUbzVbzWbyObyPbzXbyObzYbzZbAabAbbAcbAdbxIaaaaaabhgaaaaaaaaaaaabyWbAebyZbAfbAgbAhbyWbAibyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjaaaaaaaaaaaaaaabAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaafaaaaaaaaaaaaaaaaaabAkbAkbAkbAkbAkbAkbAkbAkbAkbAlbAmbAnbAobApbAqbArbAsbAtbAtbAubAvbAwbAxbAybAzbAAbABbACbvCbADbAEbAFbuxbDJbymbymbymbAGbAHbAIbwUbAJbAKbALbAMbwUbwUbwUbwUbwUbwUbANbAObwUbAPbAQbuxbARbASbATbxhbxhbxhbxhbuWbAVbAWbAXbAYbAZbuWbBabBbbBcbBdbBebuZbBfbxibBgbBhbBibBjbBkbxibxibBlbBlbBlbBlbBlbBlbBlbBmbBnbBobBpbBqbBrbBrbBrbBrbBsbBsbBsbBsbBsbBtbBubBvbBwbBwbBxbBwbBxbBwbBxbBwbBwbBybBzbBAbBBbBCbyWbBDbyWbyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaabBEbBFbBGbBHbAkbBIbBJbBKbBLbBMbBMbBNbAkbBObBPbBQbBRbBSbBTbDpbBVbDpbBWbBXbBYbBZbCabCbbCcbCdbCebCfbvCbCgbzobChbuxbCibCjbymbymbuxbCkbClbymbCmbCnbuxbuxbCobuxbuxbCpbymbymbAQbCqbymbCrbuxbuxbCsbCtbCubvZbvZbCvbyJbuWbCwbCxbuWbuWbuWbuWbuZbuZbCybuZbuZbuZbBfbxibCzbCAbBibwnbCBbCCbCDbBlbCEbCFbCGbCHbCIbBlbCJbCJbCKbCJbCJbBrbCLbCMbCNbBsbCObBsbCPbBsbCQbCRbCSbBwbCTbCUbCVbCVbCWbCXbCYbBwbCZbDabDbbDcbDdbDebDfbDgbyWaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10953,9 +10962,9 @@ aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbA aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaadaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaabBEbECbEDbEEbAkbEFbEGbEGbEHbEGbEIbEJbAkbEKbGmbEMbENbEObEPbEQbERbESbETbEUbEVbEWbEXbEYbEZbFabFbbFcbuxbFdbFebFfbFgbFhbuxbvGbvFbuxbFibDGbFjbFkbFlbDGbFmbFnbChbuxbzpbymbFobuxbvGbymbFpbFqbFrbFsbFtbFubFvbDTbFwbDTbFxbDTbFybDTbDTbDTbDTbFzbFAbFBbFBbFBbFBbFBbFBbFCbFDbDZbFEbFFbFGbEabFHbFIbFJbFKbFLbFVbFMbFNbFObFPbEjbFQbBrbFRbFSbFTbGbbGibFWbFXbFYbBsbFZbGabHybGcbGdbGebGdbGfbGgbGhbKrbGjbGkbGlbGpbGqbGnbGobJpbGrbGsaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaabBEbGtbGubGvbAkbGwbEGbEGbGxbGybGzbGAbGBbGCbGDbGEbGFbEObGGbGHbERbGIbGJbGKbGLbGMbEXbGNbGObGPbGQbGRbuxbGSbGTbGUbGVbFhbuxbAQbAQbuxbGWbDGbGXbFkbGYbDGbuxbuxbuxbuxbGZbGZbGZbuxbuxbuxbuxbuxbHabHbbHcbHdbHabvZbvZbvZbvZbvZbvibvibvibvZbvZbvZbvZbFBbHebHfbHgbHhbFBbHibHjbHkbHlbHmbHnbEabHobHpbEcbHqbHrbHsbEgbHtbHubHvbHwbHxbKtbHzbHAbHBbBsbHCbHDbHEbHFbBsbHGbHHbBwbHIbHJbHKbHJbHKbHJbHLbEtbHMbHNbHObHPbHQbHRbHSbHTbHUbHVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaafaaabHWbHWbHWbHWbHWbHWbHWbHXbHXbBEbHYbHZbDibAkbIabIabIbbIcbIdbIebIfbAkbIgbIhbIibIjbIkbIlccMbCfbInbIobIpbIqbIrbDybIsbItbIubIvbIwbIxbIxbIybIxbIxbIxbIxbuxbuxbuxbIzbDGbIAbIBbICbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbIEbIFbIGbIHbIIbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbIJbIKbILbILbIMbINbBqbDZbIObIPbIQbEabIRbISbITbIUbIVbIWbEgbEjbHubIXbIYbIZbBrbJabJbbJcbBsbJdbJebJfbJgbBsbJhbJibBwbBwbJjbJkbJlbJjbJmbJjbBwbJnbJobKFbJqbJrbJsbJtbJqbJubJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafbHWbHWbJwbJxbJybJzbJAbHWbJBbJCbJDbJEbJFbJGbAkbIabIabJHbJIbJJbJKbJLbAkbJMbJNbJObJPbCfbERbJQbCfbJRbJSbJTbJUbJVbDybGNbJWbJXbJYbJZbIxbKabKbbKcbKdbKebIxbKfbKgbuxbCrbDGbKhbKibDGbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbKjbKkbHcbKlbKmbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbFBbKnbKobKpbFBbKqbvZbEabDZbKzbDZbEabBlbEgbKsbOobKsbKubBlbKvbxIbKwbxIbKxbBrbBrbBrbBrbKybBsbPEbBsbBsbBsbHGbKAbyVbBwbBwbBwbBwbBwbBwbBwbBwbKBbKCbKDbKEbLkbKBbKGbKBbKHbKIbKJbKKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafbHWbHWbJwbJxbJybJzbJAbHWbJBbJCbJDbJEbJFbJGbAkbIabIackbbJIbJJbJKbJLbAkbJMbJNbJObJPbCfbERbJQbCfbJRbJSbJTbJUbJVbDybGNbJWbJXbJYbJZbIxbKabKbbKcbKdbKebIxbKfbKgbuxbCrbDGbKhbKibDGbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbKjbKkbHcbKlbKmbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbFBbKnbKobKpbFBbKqbvZbEabDZbKzbDZbEabBlbEgbKsbOobKsbKubBlbKvbxIbKwbxIbKxbBrbBrbBrbBrbKybBsbPEbBsbBsbBsbHGbKAbyVbBwbBwbBwbBwbBwbBwbBwbBwbKBbKCbKDbKEbLkbKBbKGbKBbKHbKIbKJbKKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaafbKLbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbKTbKUbHWbKVbKWbKXbKYbKZbBEbAkbAkbAkbAkbAkbAkbAkbAkbAkbLabLbbLcbLdbLebLfbLgbLhbLibLjbPTbLlbLmbEXbLnbLobLpbLqbLrbLsbLtbLubLvbLwbLxbIxbLybLzbLAbCrbDGbDGbDGbDGaaaaaaaaaaaaaaaaaabLBbLBbLCbLCbLCbLBbLBbLDbLEbHcbLFbLGbLHbLHbIDbIDbIDbLHbLHaaaaaaaaaaaaaaaaaabFBbFBbFBbFBbFBbLIbBqbLJbLKbLLbLMbLNbLObLPbLQbLRbLSbLTbLUbLVbLWbLXbLYbLZbMabMbbMcbMbbMdbMebMfbMgbMhbMibMjbMkbMlbMmbMmbMnbMobMpbMmbMqbMrbJvbMsbMtbMubMvbMwbMxbMybMzbMAbMAbMBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaabaaaaadaadaadaadaadaadaadaagaadaaaaaaaaaaaabMCbMDbMEbKMbMDbKNbMFbMGbMHbMIbMJbMKbMLbMMbMNbMObMPbMQbBEbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNcbNdbNebNfbNgbNhbNibNjbNkbPTbLlbLmbEXbNlbJWbNmbNnbNobIxbNpbNqbNrbNsbNtbIxbNubNvbuxbCrbymbuxaaaaaaaaaaabaaaaaabLCbLCbLBbNwbNxbNybNzbNAbNBbNCbNDbHcbNEbNFbNGbNHbNIbNJbNKbNLbLHbIDbIDaaaaaaaabaaaaaaaaabvZbNMbDXbNNbBqbCKbNObNPbNQbNRbNSbNTbNUbNVbNWbNXbNYbNXbNZbOabObbNXbOabNXbOcbOdbOebNXbOfbOgbNWbNYbOabOhbNZbNXbOibOjbOkbOhbOlbOmbOnbPGbOpbOqbOrbOsbOtbOubOvbOwbOxbOxdgpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaabaaaaadaadaadaadaadaadaadaagaadaaaaaaaaaaaabMCbMDbMEbKMbMDbKNbMFbMGbMHbMIbMJbMKbMLbMMclTbMObMPbMQbBEbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNcbNdbNebNfbNgbNhbNibNjbNkbPTbLlbLmbEXbNlbJWbNmbNnbNobIxbNpbNqbNrbNsbNtbIxbNubNvbuxbCrbymbuxaaaaaaaaaaabaaaaaabLCbLCbLBbNwbNxbNybNzbNAbNBbNCbNDbHcbNEbNFbNGbNHbNIbNJbNKbNLbLHbIDbIDaaaaaaaabaaaaaaaaabvZbNMbDXbNNbBqbCKbNObNPbNQbNRbNSbNTbNUbNVbNWbNXbNYbNXbNZbOabObbNXbOabNXbOcbOdbOebNXbOfbOgbNWbNYbOabOhbNZbNXbOibOjbOkbOhbOlbOmbOnbPGbOpbOqbOrbOsbOtbOubOvbOwbOxbOxdgpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaadaadaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKLbMDbMDbKMbMDbKNbMFbOybOzbOAbOBbOCbODbHWbOEbKXbOFbOGbOHbOIbOJbOKbOLbOMbONbOObOPbOQbORbOSbOTbOKbOUbOVbLgbNhbOWbNjbOXbOYbOZbPabDybDybDzbPbbDzbDybIxbIxbPcbPdbNsbPebIxbPfbPgbAQbCrbymbuxaaaaaaaaaaaaaaabLCbLCbPhbPibPhbPjbPkbPlbNAbNAbPmbNDbHcbNEbPmbNHbNHbPnbPobPpbPqbPrbPqbIDbIDaaaaaaaaaaaaaaabvZbPsbPtbPubPvbPvbPwbPxbPwbPwbPwbPwbPybPzbCSbPAbPAbPAbPAbPBbPAbPAbPAbPAbPAbPAbPAbPCbPDbSWbPFbPFbPFbPFbPFbPFbPFbTabPHbPIbPJbPKbPLbJvbPMbPNbMubPObPPbPQbMybPRbPSbTCbMBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMCbKMbKMbKMbKMbKNbKObPUbPVbPVbPWbPXbPYbHWbPZbQabQbbQcbDibQdbQebQfbQgbQhbQibQhbQhbQjbQhbQgbQkbQlbQmbQnbQobQpbQkbQqbQrbQsbOZbQtbQubQvbQwbQxbQybQzbQAbQBbQCbQDbNsbQEbIxbQFbPgbAQbCrbQGbuxaaaaaaaaaaaabLCbLCbQHbQIbQJbQKbQLbQMbQNbQJbQObQPbQQbHcbQRbQPbQSbNEbQTbQUbQVbQWbNEbQXbQYbIDbIDaaaaaaaaaaaabvZbQZbvZbvZbPvbRabRbbRcbRdbRebRfbRgbRhbRibEsbRjbRkbRlbRmbRnbRobRpbRqbRrbRsbRtbPAbPCbRubRvbRwbRxbPFbRybRzbRAbPFbRBbRCbPIbPIbRDbREbRFbRGbRHbRIbRJbKBbKKbKBbKBbKBbKBbKGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabHWbRKbRLbRMbRNbRObRPbHWbRQbRRbQbbRSbDibRTbRUbQgbQgbRVbRWbRXbRYbRZbSabSbbQkbScbSdbSebSfbSgbShbSibSjbSkbEVbSlbSmbSnbSobSpbSqbSrbSsbStbStbSubStbStbStbStbuxbuxbCrbSvbuxaaaaaaaaabLCbLCbQHbQIbSwbSwbSxbSybSzbSAbSAbSBbSCbSDbSEbSFbSGbSHbSIbSJbSJbSKbSLbSMbSMbQXbQYbIDbIDaaaaaaaaabvZbSNbSObSPbPvbSQbSRbSSbSTbSUbSVbWObSXbSYbSZcdnbTbbTcbTdbTdbTdbTebTfbTgbThbTibTjbPCbTkbTlbTmbTnbTobTobTobTobPFbTpbTqbTrbPIbTsbTtbKBbTubTvbTwbTxbTybTzbTAbTBbJvaaaaaaaabaaaaaaaaaabcaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10963,15 +10972,15 @@ aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVybVzbVEbVBbVCbVDbVBbXpbVBbVFbVGbVHbVIbBEbVJbVKbVLbVMbVNbVObQgbVPbTMbVQbVRbVSbVTbTRbVUbQkbVVbVWbVXbVYbVZbWabNjbWbbWcbWdbWebWfbWgbWhbWibWjbUhbWkbWlbWmbWnbWobWpbWqbStbWrbymbCrbWsbGZaaaaaabLBbLBbWtbQJbSwbWubWvbWwbWxbWybWxbWxbWzbWAbKjbWBbWCbWDbWDbWEbWFbWGbWDbWDbWHbUHbSMbNEbWIbLHbLHaaaaaabvibUKbxibWJbPvbWKbWLbWMbUPbWNbPvbPvbxHcfqbxHbPCbPCbWPbWQbWRbWSbVabWTbWUbWVbWWbWXbPCbWYbWZbXabXbbVjbXcbTobXdbPFbXebXfbXgbPIbXhbBvbKBbVrbXibXjbXkbXlbXmbXnbVubGsaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabMCbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbVybXoccAbXqbXrbXsbXtbXrbXsbXubXvbXwbXxbBEbXybXzbKZbDibXAbXBbQgbXCbTMbTObXDbXEbTObTRbXFbQkbXGbXHbXIbXJbXKbXLbXMbXNbXObGLbXPbUcbQwbXQbXRbXRbXSbQwbStbXTbXUbXVbXWbXXbStbWrbymbCrbDLbGZaaaaaabLBbXYbXZbYabYbbYcbWwbWwbYdbYebYfbWwbYgbWAbWAbYhbWDbWDbYibYjbYkbYlbYmbWDbWDbYnbYobYpbYqbYrbLHaaaaaabvibUKbYscvCbPvbYtbYubYubYvbYwbUSbYxbYybYzbYAbYBbRjbYCbYDbYDbYDbYEbYFbYFbYGbYHbYFbYIbYJbYKbYLbYMbTobTobTobYNbPFbYObYPbYQbPIbRDbREbKBbYRbKBbKBbKBbKBbKBbKBbKBbKBbYSbYSaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaadbYTbYUbYVbYWbYXbYVbYWbYXbXubYYbYZbZabBEbZbbZcbZbbDibZdbZebQgbZfbZgbZhbZibXEbZhbZjbZkbQkbZlbZmbZnbZobZpbZqbSibOXbEVbEVbSlbZrbZsbQwbQwbQwbQwbZtbStbZubStbZvbStbStbStbuxbymbCrbZwbuxaaaaaabLCbZxbZybZzbZAbZBbZCbZDbZEbZFbZGbWwbZHbZHbZIbZJbWDbZKbZLbZMbZMbZNbZObZPbWDbZQbZRbZSbYqbZTbIDaaaaaabvZbUKbAUbvZbPvbZUbZVbZWbZWbZXbZYbZZcaacabcaccadcaecafcagcagcagcahcaicajcakcalcambYIcancaocapcaqbPFcarcascatbPFcaucavcawbPIbRDbREcaxcaycazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaIcaHcaHcaHcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVycaJbTDcaKbYWbYXbYVbYWbYXbXucaLcaMcaMcaMcaMcaMcaMcaMcaNcaObQgcaPcaQcaRcaScaTcaUcaVcaWbQkbQkcaXbQkcaYcaZbQkcbacbbbEVcbccbdbQucbecbfcbgcbhcbicbjbStcbkbStcblbStcbmcbncbobymbCrbymbuxaaaaaabLCcbpcbqcbrcbscbtcbucbvcbwcbxcbycbzcbAcbBcbCcbDbWDcbEcbFcbGcbHcbIbZOcbJcbKcbLcbMcbNcbOcbPbIDaaaaaabvZbUKcbQcbRbPvbPvcbScbTcbUcbVbUScbWcbXcbYcbZccaccbcccccdcceccfccgcaicchcciccjcckbYIbPFcclbPFbPFbPFbPFbPFbPFbPFbPIbPIbPIbPIccmccncaxccoccpccqccrccscctcaCcaFcaFcaHccuccvccwcaHccxccycaHcaHaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVycaJbTDcaKbYWbYXbYVbYWbYXbXucaLcaMcaMcaMcaMcaMcaMcaMcaNcaObQgcaPcaQcaRcaScaTcaUcaVcaWbQkbQkcaXbQkcaYcaZbQkcbacbbbEVcbccbdbQucbecbfcbgcbhcbicbjbStcbkbStcblbStcbmcbncbobymbCrbymbuxaaaaaabLCcbpcbqcbrcbscbtcbucnNcbwcbxcbycbzcbAcbBcbCcbDbWDcbEcbFcbGcbHcbIbZOcbJcbKcbLcbMcbNcbOcbPbIDaaaaaabvZbUKcbQcbRbPvbPvcbScbTcbUcbVbUScbWcbXcbYcbZccaccbcccccdcceccfccgcaicchcciccjcckbYIbPFcclbPFbPFbPFbPFbPFbPFbPFbPIbPIbPIbPIccmccncaxccoccpccqccrccscctcaCcaFcaFcaHccuccvccwcaHccxccycaHcaHaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDccCbYWccDccEbYWccDbXuccFcaMccGccHccIccJccKcaMbXAccLcaWcaWcaWcaWcaWcaWcaWcaWcaWcCibQkbQkbQkbQkbQkbQkccNccObDxccPccNccQccQccQccQccQccQccQccRccRccRccRbStccSccTbuxccUccVccWbuxaaaaaabLCccXccYccZcdacdbbWwbWwbWwbWwbWwbWwcdccddcddcdebWDbWDbWDbWDbWDcdfbZOcdgbWDcdhcbMcdicbOcdjbIDaaaaaabvZcdkbxibxicdlbPvbPvbPvbPvbPvbPvcdmcipcdocipcdmbPCbPCbPCbPCbPCbPCbYIcdpcdqcdqcdrbYIcdscdscdscdtcducdvcdwcdxcdycdzcdAbxHcdBcdCcdDcdEcdFcdGcdHccrccscdIcaCcdJcaFcdKcdLcdMcdNcaIcdOcdMcdPcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaafaafbTDcehcdScdTcdUcdVcdTcdWcdXcdYcdZceacebceccedceebXAcefcegcfEceicejcekcekcekcekcekcekcekcekcekcelcemcenceocepceqceqcerbuxcescescetbDLceubymbAQbAQbvFbvGbuxcevbuxbuxbymbCrcewbuxaaaaaabLBcexccYbQJceycezceAceBceCceDceEceFceGceHceHceIceHceHceHceJceKceLceMceNbWDbNEceObNEcbObNGbLHaaaaaabvZcePceQceQceQceRceSbxiceTceUbvZceVceWceXceWceYceZcfacfbcfccfdcfebYIbYIcffcfgbYIbYIcfhcficficfjcfkcflcfmcfmcfmcdvcfnbxHcfocfpbOncoHcfrcfscftccrccsccscdIcdIcaFcaHcfucfvcfwcfxcfycfzcfAcfBcfCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaabTDcfDbXrcfFciGcfGcfHbXucfIcaMcaMcaMcaMcfJcfKcfLcfMcfNcfOcfOcfPcfQcfRcfRcfRcfRcfRcfRcfRcencencencfScfTcfUcfVcfWcfXcfYcfZcgacgbcgacgacgacgacgacgccgccgccgccgdcgccgccgccgecgfbuxbLCbLCbLBcggccYcghcgicgjcgkcglcglcgmceEcgnbWAbWAbWAbWAbWAbWAbWAcgnbWEcgocgpcgqbWDcgrcgscgtcgucgvbLHcgwcgwbvZbUKbxibAUbCCbCDcgxbxicgybxicgzcgAcgBcgCcgDcgAcgEcfacgFcgGcgHcgIcgJcgKcgLcgMcgNcgNcgOcdtcdtcdtcdtcdtcdtcdtcfmcdvcgPbxHcgQcgRcgScaxcgTcgUcgVccrccscdIcgWcgXcaFcaHcgYcgZchacaHcaIchbcaIcaHcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabTEbTDchcchcbTDchdchechfbXuchgchhchichjchkchlchmchnchochpchqchrchschtcfRchuchuchuchuchuchvchwchxcenchychzchAchBchCchDchEbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxchFchGchHchIbLBchJchKchLchMchNcgkcgkchOchPceEchQbWAchRchRchRchRchRbWAchSbWDchTchUbWDbWDchVchWchVchXchYchZciacibciccidbvgbvZbvZbvZbvZbvZbvZbvZbvZciecifcigcihcieceZceZceZciiceZceZceZceZcijcikcgNcilcimcinciociociociociocdtcdvcdvcaGbxHcoIbxHbxHcaxciqcaxcaxccrcaFcaGcaHcaHcaHcaHcircgZciscitciucivciwcixcaHcaHaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafciybTDcizciAciBciCciDciEciFcmCciHciIciJciKciLciMciNciOciPciQciRcfOciSciTcfRchuchuchuchuchuciUciVciWciXciYciZcjacjbcjccjdcjecjfcjgdVxcjdcjhcjicjbcjjcjkcjlcjmcjbcjncjociWcjpcjqcjrcjscjtcjucjvbUwbUwcjwcjxcjycjzcgkceEceEceEcdcbWAchRchRchRchRchRbWAcgnbWDbWDbWDbWDciacjAcjBcjCcjDcjDcjEcjFcjGcjHcjIcjJcjKcjLcjMcjNcjOcjPcjQcjRcjNcjOcjScjTcjUcjVcjWcjXcjTcjYcjZckackbcijckcckdckeckfckgciociociociociocdtckhcdvckickjckkcklcaGckmcknckockpcaCckqckrcaHckscktcaHckucgZcdMcdMcdMcgZcdMckvckwcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackxckyckzckAckBckCckDckEckFckGckHckIckJckKckLckMchnbLgckNcfOcfOckOcencfRchuchuchuchuchuckPckQckRckSckTckUckVckWckXckWckYckUckZckUckUclaclbckUckUclccldcledhndhpdhqclhclicljclkcllclmcllcllcllcllcllclncloclpbYhclqclrceHclsbWAchRchRchRchRchRbWAcltbZJcluclvclwclxclyclzclAclAclAclAclAclBclCclDclEclFclGclHclIclHclHclJclKclHclIclLclHclMclHclHclNclHclHclOclPclJclQclRclSclTclUclVciociociociociocdtclWcdvclXclYclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcdMcmucmvaafaafaafaadaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaabTDcmwciAcmxcmycmzcmAcmBcrAcmDcmEcmFcmGcmHcmIcmJcmKcfOcfOcfOcmLcmMcmNcfRchuchuchuchuchucmOcmPciWciXcmQcmRcmScmTcjccmUcmVcmWcmXchCdhscmYcmZcmTcnacnbcnccndcngdhSdiqcnhcnicnjcnkcnlcnmcnncnobUwbUwcnpcnqcnrcnsbWAcntcnucddcddbWAchRchRchRchRchRbWAcnvcnwcnxcnybWAcnzcnAcnBcnCcnDcnDcnEcnFcnGcnHcnIcnJcjKcjLcjPcnKcjPcjPcnLcnMcnNcnOcnPcnQdVycnRcnScnTcnLcnRcnUcnVcnWcnXckcckdcnYcnZcoaciociociociociocdtcobcoccaGcodcoecofcaGcogcohcogcoicojcokcolcaHcomconcaHcoocopcoqcdMcorcgZcdMcoscotcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabTEbTDchcchcbTDcoucovcowbXucoxchhcoycozcoAcoBcoCcoDcoEcoFcoGcmLcrQcrOcfRchuchuchuchuchuchvcoJcoKcencencoLchEcoMchCcoNcoOcoPcoPcoPcoPcoPcoPcoQcoQcoRcoScoQdirdwgdwqditcoTcoVcoWchGcoXcnsbLBcoYchKchLcoZchNbLBbWAcgncpacpbcpcbWAchRchRchRchRchRcpdcpdcpecpdcpdcpdcpdcpfchWchVchXcpgchZcphcpiciccpjcpkcpkcpkcplcpmcpncpncpncpncpncpocpncpncpncpncpncpncppcpqcprcnVcpsciecptcgNcpuciecinciociociociociocdtcpvcdvcaGcpwcpxcpycpzcpzcpzcpAcpzcpBcpzcpzcaHcaHcaHcaHcpCcpDcpEcpFcpGcpHcpIcpJcaHcaHaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafciybTDcizciAciBciCciDciEciFcmCciHciIciJciKciLciMciNciOciPciQciRcfOciSciTcfRchuchuchuchuchuciUciVciWciXciYciZcjacjbcjccjdcjecjfcjgdVxcjdcjhcjicjbcjjcjkcjlcjmcjbcjncjociWcjpcjqcjrcjscjtcjucjvbUwbUwcjwcjxcjycjzcgkceEceEceEcdcbWAchRchRchRchRchRbWAcgnbWDbWDbWDbWDciacjAcjBcjCcjDcjDcpDcjFcjGcjHcjIcjJcjKcjLcjMcjNcjOcjPcjQcjRcjNcjOcjScjTcjUcjVcjWcjXcjTcjYcjZckacpEcijckcckdckeckfckgciociociociociocdtckhcdvckickjckkcklcaGckmcknckockpcaCckqckrcaHckscktcaHckucpGcpFcpFcpFcopcdMckvckwcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackxckyckzckAckBckCckDckEckFckGckHckIckJckKckLckMchnbLgckNcfOcfOckOcencfRchuchuchuchuchuckPckQckRckSckTckUckVckWckXckWckYckUckZckUckUclaclbckUckUclccldcledhndhpdhqclhclicljclkcllclmcllcllcllcllcllclncloclpbYhclqclrceHclsbWAchRchRchRchRchRbWAcltbZJcluclvclwclxclyclzclAclAclAclAclAclBclCclDclEclFclGclHclIclHclHclJclKclHclIclLclHclMclHclHclNclHclHclOclPclJclQclRclScpHclUclVciociociociociocdtclWcdvclXclYclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcdMcmucmvaafaafaafaadaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaabTDcmwciAcmxcmycmzcmAcmBcrAcmDcmEcmFcmGcmHcmIcmJcmKcfOcfOcfOcmLcmMcmNcfRchuchuchuchuchucmOcmPciWciXcmQcmRcmScmTcjccmUcmVcmWcmXchCdhscmYcmZcmTcnacnbcnccndcngdhSdiqcnhcnicnjcnkcnlcnmcnncnobUwbUwcnpcnqcnrcnsbWAcntcnucddcddbWAchRchRchRchRchRbWAcnvcnwcnxcnybWAcnzcnAcnBcnCcnDcnDcnEcnFcnGcnHcnIcnJcjKcjLcjPcnKcjPcjPcnLcnMcCgcnOcnPcnQdVycnRcnScnTcnLcnRcnUcnVcnWcnXckcckdcnYcnZcoaciociociociociocdtcobcoccaGcodcoecofcaGcogcohcogcoicojcokcolcaHcomconcaHcoocopcoqcdMcorcgZcdMcoscotcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabTEbTDchcchcbTDcoucovcowbXucoxchhcoycozcoAcoBcoCcoDcoEcoFcoGcmLcrQcrOcfRchuchuchuchuchuchvcoJcoKcencencoLchEcoMchCcoNcoOcoPcoPcoPcoPcoPcoPcoQcoQcoRcoScoQdirdwgdwqditcoTcoVcoWchGcoXcnsbLBcoYchKchLcoZchNbLBbWAcgncpacpbcpcbWAchRchRchRchRchRcpdcpdcpecpdcpdcpdcpdcpfchWchVchXcpgchZcphcpiciccpjcpkcpkcpkcplcpmcpncpncpncpncpncpocpncpncpncpncpncpncppcpqcprcnVcpsciecptcgNcpuciecinciociociociociocdtcpvcdvcaGcpwcpxcpycpzcpzcpzcpAcpzcpBcpzcpzcaHcaHcaHcaHcpCcOQcItcJxcPZcSccpIcpJcaHcaHaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaabTDcpKcpLcpMcpNchecmDbXucpOcpPcpPcpQcpPcpRcpScpPcoEcmLcmLcmLcpUcpTcfRcfRcfRcfRcfRcfRcfRcencencencpVcpWcpXcpYcpZcqacpXcqbcqccqdcqecqfcqgcqhcqicqjcqkcqlcoQdwTdwWdwTdwUcqncqocoVbLCbLCcqpcqqcqrcqscqtcqubWzcqvcqwcqxcqxcqxcqycqycqzcqAcqBcqpcpdcqCcqDcqEcqFcqGcpdcqHcqIcjCcqJcqKchZcgwcgwcpkcqLcqMcqNcqOcqPcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqZcracracrbcrccrdcrecrfcrgcrhcrhcrhcricdtcdtcdtcdtcdtcdtcdtcfmcdvcrjcpwcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrvcaHcrwcgZcrxcaHcaIcrycaIcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaafaafbTDcrzbXrctqcrBcrCcrDcrEcrFcrGcrHcrIcrJcrKcrLcpPcuXcrMcrNcrNcrPcuZcrRcrRcrRcrScrTcrUcrVcpVcpVcrWcpVcencrXcrXcrXcrXcrXcoPcrYcrZcsacsbcsccoQcsdcsecsfcsgcoQdyidypdybdwUcshcqocoVaaaaaacqpcsicqrcsjcskcslbWzcsmcsncqxcsocspcsqcsrcsjcsjcsjcsscstcsucsvcswcsxcsycpdcszcsAcjDcsBcsCchZaaaaaacpkcsDcsEcsFcpkcsGcsHcpncsIcsJcsKcsLcsMcsNcsOcsPcsQcsRcsScpncsTcsUcsVcsVcsWcrhcdvcdvcsXcfmcfmcfmcfmcfmcfmcfmcfmcdvcsYcpwcsZctacrmctbctcctdctectfctgcthcticrvcrvctjctkctlctmcaIctnctoctpcaHaaaaaaaaaaaaaadabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVybVzbTDcttctrctscwRctrctuctvctwcpPctxctyctzctActBcpPcuXctCctDctDctFctEctDctGctGctHctHctIctJctIctKctIctIctLctLctMctNctMctLctLctOctOctOctPctOctOctQctRctScoQcoQdUPdUQdBMdwUctTcqocoVaaaaaactUctVctWctXcskctYbWzctZcuacubcuccudcuecufcugcuhcsjcuicujcukculcumcuncuocpdcupcsAcuqcurcuscgwaaaaaacpkcutcuucuucuucuvcuwcuucuucuxcuxcuxcuycuzcuAcuzcuzcuzcuzcuBcuCcuDcuEcuFcuCcuGcuGcuGcuGcuGcuGcuGcuHcuHcuHcuHcuIcuIcuIcuIcuJcuKcuLctbcuMcrqcrqcrqcrqcrqcrvcrvcrvcaHcuNcorcuOcaIcdOcdMcdPcaHaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10980,21 +10989,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaaaaaaaaabKLbKMbKMbKMbKMbKMbKMbKMcyDbKMbKMbKMbVybXocyEcyFcyGcyHcyIcyJcyHcyKcyLcyLcyMbTDcfRcyNcmLcyOcyOcyPcyOctDcyRcyQctDctDcyTcyUcyVctIcyWcyXcyYcyZczaczbcxlcxlczcczdczeczfctOczgczhcziczjctOcoQcoQczkcoQcoQcqmcqmcqmcqmcoVcqoczlaaaaaacqpcsicqrczmcznczobWAbWAczpcqxcxEczqczrcsrcsjcvAcsjczscpdcztczuczvczwcpdcpdczxczyczzczAczBchZaaaaaaczCcsDcuuczDczEcxWczFczGcxZczHczIczJcuzczKcyeczLczMczNczOczPczQczRczSczTczUczVczWczXczYczXczZcAacAbcAccAdcwAcAecAfcAgcwEcAhcAicAjcAkcAlcAmcAncAocApcAqcArcAsbYScAtcAuaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDbTDcAvcAwcAxbXpcAxcAycyLcyLcAzbTDcfRcyNcmLcyOcAAcABcACctDcAEcyScAFctDcAGcAHcAIctIcAJcAKcALcAMcANcAOcAPcAQcAQcARczecAScATcAUcAVcAWcAXctOcAYcAZcBacBbcBccqmcBdcqmcBecoVcqoczlaaaaaacqpcqpcBfcsjcuhcBgcBhbWAcBicqxcqxcqxcqxcBjcBkcBlcBkcBmcpdcpdcBncBocpdcpdcBpcBqcBrcjDcBschZchZaaaaaaczCcsDcuucuucBtcBucBvcBwcxZcBxcBycBzcuzcBAcBBcBCcBCcBDcBEcBFcBGcBHcBIcwocBJcypcBKcBLcBMcBNcBOcuGcBPcBQcBRcwAcBScBTcBUcwEcBVcBWcBXcBYcBYcAmcBZcCacCbcAmcAmcAsaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaafaafaafbTEbTDbTDbTDbTDbTDbTDbTDbTDbTDbTDcfRcCccencyOcCdcABcCectDcCfcADcNpcCjcCkcClcCmctIcCncCocCpcCqctIcCrcCscCtcCtcCucCvcCwcxpcCxcCycxrcCzctOcAYcCAcCBcCCcBbcBbcqmcBdcqmcoVcqoczlaaaaaaaaactUcCDcCEcuhcCFcCGcCHcCIcCJdVzcCKcCLcCMcCNcskcCOcCMcCPcnDcCQcCRcCScCTcCUcCVcBrcCWcCXcgwaaaaaaaaaczCcsDcCYcuucCZcDacDbcDccxZcDdcDecDdcuzcDfcyecDgcDhcDicDjcDkcDlcwmcDmcwocDncypcDoczXcDpczXcDqcuGcDrcDscDtcwAcDucDvcDwcwEcDxcDycDzcDAcDBcDCcDDcDEcApcDFcDGcAsaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacDHcDIcDJcDKcDLcDLcDMcDNcXVcChcCgcPXcyOcDRcDScDTctDctDctDctDcDUcDVcDWcDUctIcDXctIcDYcDZctIcEacEbcEccEccEdcEecEactOcEfcEgcEhcEictOcEjcEjcEjcEkcEjcBbcBbcBbcqmcoVcqocoVaaaaaaaaactUctUcElcCEcuhcuhcEmcEncEocEocEpcEqcErcEscEtcEucErcEvcEwcExcExcEycEzcBrcBrcCWcEAcgwcgwaaaaaaaaacpkcsDcEBcuucuucECcEDcEEcxZcEFcEGcEHcuzcEIcEJcEKcELcEMcENcEOcEPcEQcERcEScETcuGcEUcEVcEWcEXcEYcuGcDOcFacFbcwAcFccFdcFecwEcFfcFgcFhcFicFjcAmcFkcFlcFmcAscAscAsaafaafaafabcaafaaaaaaaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacDHcDIcDJcDKcDLcDLcDMcDNcXVcChcTFcPXcyOcDRcDScDTctDctDctDctDcDUcDVcDWcDUctIcDXctIcDYcDZctIcEacEbcEccEccEdcEecEactOcEfcEgcEhcEictOcEjcEjcEjcEkcEjcBbcBbcBbcqmcoVcqocoVaaaaaaaaactUctUcElcCEcuhcuhcEmcEncEocEocEpcEqcErcEscEtcEucErcEvcEwcExcExcEycEzcBrcBrcCWcEAcgwcgwaaaaaaaaacpkcsDcEBcuucuucECcEDcEEcxZcEFcEGcEHcuzcEIcEJcEKcELcEMcENcEOcEPcEQcERcEScETcuGcEUcEVcEWcEXcEYcuGcDOcFacFbcwAcFccFdcFecwEcFfcFgcFhcFicFjcAmcFkcFlcFmcAscAscAsaafaafaafabcaafaaaaaaaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacDHcFncFocFpcFqcDHcDHcDHcMXcEZcDPcFtcyOcyOcyOcyOcGTcFvcFwcFxcDUcFycFzcFAcFBcFCcFDcFEcFFctIcOlcFHcFIcFJcFKcFLcFMctOcxpcFNcxpcFOctOcFPcFQcFRcFScEjcoVcoVcFTcoVcoVcFUcoVaaaaaaaaaaaactUctUcElcCEcsjcFVcFWcFXcFYcsjcFZcGacGbcskcGccGacGdcjDcGecGfcGgcGhcjDcCWcEAcgwcgwaaaaaaaaaaaacpkcsDcGicGjcGkcGlcGmcGncGocGpcGqcGrcuzcGscuzcuzcGtcGucGtcuycuEcGvcuEcGwcuEcuGcwwcGxcGycwwcuGcuGcGzcGAcFrcwAcwEcGCcwEcwEcFfcFgcFhcGDcGEcAmcGFcGGcGHcAsaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacFpcGIcFpcGJcGKcGLcDHcGMcGBcLFcFscGPcGQcGRcGScGTcFucGUcGVcFxcDUcGWcGXcGYcGZcHacDUcHbcHccHdcHecHfcHgcHgcHhcHicHjcHkcHlcHmcHncHocEjcHpcHqcHrcHscEjcHtcHucBbcHvcHwcHxcoVaaaaaaaaaaaaaaactUctUcHycHzcHycHAcHBcHCcHDcHDcHEcslcskcslcHEcHFcHFcHGcHHcHIcHJcHKcHJcgwcgwaaaaaaaaaaaaaaacpkcHLcHMcGjcHNcHOcHPcHQcHRcHScHTcHUcHVcHWcHXcHYcHZcIacHUcIbcIccIdcIecIfcIgcIhcIicIjcIkcIlcImcIncIocIpcIqcIrcIscItcIucIvcIwcIxcIycIzcIAcAmcAmcIBcAmcAsaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaafaafaafaagaadaadaadaadaadaadaagaaaaaaaaacFpcICcIDcIEcGKcIFcIGcIHcGNcKtcIJcIKcGQcGRcGScGTcGTcILcIMcFxcDUcINcIOcIPcIQcIRcIScITcIUcIVcIWcIXcIVcIVcIYcIZcJacJbcJccITcJdcJecJfcJgcJhcJicJjcJkcHtcHucBbcFUcBbcJlcoVaaaaaaaaaaabaaaaaactUctUcqpcJmcJncJocJpcHDcsicJqcslcskcslcJrczBcHFcJscJtcJucJvchZcgwcgwaaaaaaaabaaaaaaaaacpkcJwcJxcGjcGkcJycJzcJAcJBcJCcJDcJEcJFcJGcJHcJIcJJcJIcJEcJKcJLcJMcJNcJOcJPcJQcJRcJScJTcJUcJVcJWcJXcJYdUUcKacJXcKbcJXcKccJXcKdcKecKfcKgcKhcKicKjcKkcKlaaaaaaaabaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacFpcGIcFpcGJcGKcGLcDHcGMcGBcLFcFscGPcGQcGRcGScGTcFucGUcGVcFxcDUcGWcGXcGYcGZcHacDUcHbcHccHdcHecHfcHgcHgcHhcHicHjcHkcHlcHmcHncHocEjcHpcHqcHrcHscEjcHtcHucBbcHvcHwcHxcoVaaaaaaaaaaaaaaactUctUcHycHzcHycHAcHBcHCcHDcHDcHEcslcskcslcHEcHFcHFcHGcHHcHIcHJcHKcHJcgwcgwaaaaaaaaaaaaaaacpkcHLcHMcGjcHNcHOcHPcHQcHRcHScHTcHUcHVcHWcHXcHYcHZcIacHUcIbcIccIdcIecIfcIgcIhcIicIjcIkcIlcImcIncIocIpcIqcIrcIscXDcIucIvcIwcIxcIycIzcIAcAmcAmcIBcAmcAsaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaafaafaafaagaadaadaadaadaadaadaagaaaaaaaaacFpcICcIDcIEcGKcIFcIGcIHcGNcKtcIJcIKcGQcGRcGScGTcGTcILcIMcFxcDUcINcIOcIPcIQcIRcIScITcIUcIVcIWcIXcIVcIVcIYcIZcJacJbcJccITcJdcJecJfcJgcJhcJicJjcJkcHtcHucBbcFUcBbcJlcoVaaaaaaaaaaabaaaaaactUctUcqpcJmcJncJocJpcHDcsicJqcslcskcslcJrczBcHFcJscJtcJucJvchZcgwcgwaaaaaaaabaaaaaaaaacpkcJwdfZcGjcGkcJycJzcJAcJBcJCcJDcJEcJFcJGcJHcJIcJJcJIcJEcJKcJLcJMcJNcJOcJPcJQcJRcJScJTcJUcJVcJWcJXcJYdUUcKacJXcKbcJXcKccJXcKdcKecKfcKgcKhcKicKjcKkcKlaaaaaaaabaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacDHcKmcKncKocGKcKpcDHcKqcKrcGOcKscKtcKucKtcKucKvcKwcKxcIMcIMcDUcKycKzcKzcKAcKBcKCcHgcKDcHgcKEcHgcHgcHgcKDcKFcKGcKGcKGcKGcKGcKGcKHcKIcKJcKKcKLcEjcHtcHucBbcKMcKNcKNcKNcKNcKNaaaaaaaaaaaaaaaaaacqpcqpctUctUctUcqpcqpcqpcKOcKPcKQcqpchZchZcgwcgwcgwchZchZaaaaaaaaaaaaaaaaaacKRcKRcKRcKRcKScKTcKTcIIcKVcKTcKWcKXcKYcKXcKZcLacLbcLccLdcLccLbcLbcLbcLecLfcLgcLbcLhcLicLjcLkcLjcLhcLhcLlcLmcLncLmcLlcAjcLocLpcLqcLrcAjcLscLtcLucLvcLwcLxcLyaaaaaaaaaaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafcLzcLAcDHcLBcLCcLDcDHcKqcLEcLFcLGcLHcLIcLJcLKcLLcGTcLMcIMcIMcDUcLNcLOcKzcLPcLQcDUcLRcLScHgcLTcLUcLUcLUcLScLVcKGcLWcLWcLWcLWcLWcLXcLYcLYcLZcLYcoVcoVcoVcBbcFUcKNcMacMbcMccKNcKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactUcMdcMecMfcMgcMhctUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKRcKRcMicMjcKRcMkcKVcMlcMmcMncKTcMocMpcMqcMrcMscKZcMtcMucMvcMwcMxcLbcMycMzcMAcMBcMCcLhcMDcMEcMFcMGcMHcMIcMJcMKcMLcMMcMNcMOcMOcMOcMOcMOcMOcMPcMQcMRcMScMTcMUcMVaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaacMWcDHcFpcFpcDHcDHcMXcMYcMYcMXcMZcNacMXcMXcLLcGTcIMcIMcIMcDUcNbcNccNdcNecNfcDUcNgcHgcHgcNhcNicHgcHgcHgcNjcNkcLWcLWcLWcLWcLWcLXcNlcNmcNncLYcNocQkcoVcBbcNqcNrcNscNscNtcNucKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactUcNvcNwcNxcNycNzctUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKRcNAcNBcNCcKRcNDcKVcNEcNFcNGcKTcNHcNIcNJcNKcNLcNMcNNcNOcNPcNQcNRcLccNScNTcNUcNVcNWcNXcNYcNZcOacObcOccLhcOdcOecOfcOgcOhcMOcOicOjcOkcPucMOcOmcOncLucOocOpcOqcLyaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcOrcOscOtcMXcLLcGTcIMcIMcIMcDUcDUcDUcDUcDUcDUcDUcOucOvcHgcHgcOwcOwcOwcHgcOxcOycLWcLWcLWcLWcLWcLXcOzcOAdUVcLYcOCcBbcODcOEcOFcKNcOGcOHcOIcOJcKNcoVcoVcoVcoVczlczlczlcoVcoVcoVcoVcoVcOKcOLcMfcOMcOKcpkcpkcpkcpkcpkczCczCczCcpkcpkcpkcpkcKRcONcOOcOPcKRcOQcKVcORcOScOTcKTcOUcOVcOWcOXcOYcKZcOZcPacPbcPccPdcLfcNScNTcPecPfcPgcPhcPicPjcPkcPlcPmcLhcPncPocPpcPqcPrcMOcPscPtcPtcSLcMOcPvcPwcPxcPycPzcPAcKlaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcPBcPCcPDcMXcLLcGTcGTcPEcIMcFucFucIMcIMcIMcPFcGTcEacPGcEacEacPHcPIcPJcPKcPLcPMcLWcLWcLWcLWcLWcLXcPNcPOcPPcLYcPQcPRcoVcPScPTcKNcKNcKNcKNcKNcKNcPUcPVcPWcQZcPYcPZcQacQacQacQacQacQacQbcQccQdcQecQfcQgcQgcQgcQgcQgcQgcQhcQicpkcQjcSpcQlcKRcQmcOOcQncKRcQocKVcKVcQpcKVcKTcQqcQrcQscQtcQucKXcQvcQwcQxcQycPdcLccNScQzcQAcQBcQCcQDcQEcQFcQGcQHcQIcLhcLlcLlcLlcLlcLlcMOcPscQJcQKcSLcMOcQLcQMcKlcKlcKlcKlcKlaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcOrcOscOtcMXcLLcGTcIMcIMcIMcDUcDUcDUcDUcDUcDUcDUcOucOvcHgcHgcOwcOwcOwcHgcOxcOycLWcLWcLWcLWcLWcLXcOzcOAdUVcLYcOCcBbcODcOEcOFcKNcOGcOHcOIcOJcKNcoVcoVcoVcoVczlczlczlcoVcoVcoVcoVcoVcOKcOLcMfcOMcOKcpkcpkcpkcpkcpkczCczCczCcpkcpkcpkcpkcKRcONcOOcOPcKRdjycKVcORcOScOTcKTcOUcOVcOWcOXcOYcKZcOZcPacPbcPccPdcLfcNScNTcPecPfcPgcPhcPicPjcPkcPlcPmcLhcPncPocPpcPqcPrcMOcPscPtcPtcSLcMOcPvcPwcPxcPycPzcPAcKlaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcPBcPCcPDcMXcLLcGTcGTcPEcIMcFucFucIMcIMcIMcPFcGTcEacPGcEacEacPHcPIcPJcPKcPLcPMcLWcLWcLWcLWcLWcLXcPNcPOcPPcLYcPQcPRcoVcPScPTcKNcKNcKNcKNcKNcKNcPUcPVcPWcQZcPYdkocQacQacQacQacQacQacQbcQccQdcQecQfcQgcQgcQgcQgcQgcQgcQhcQicpkcQjcSpcQlcKRcQmcOOcQncKRcQocKVcKVcQpcKVcKTcQqcQrcQscQtcQucKXcQvcQwcQxcQycPdcLccNScQzcQAcQBcQCcQDcQEcQFcQGcQHcQIcLhcLlcLlcLlcLlcLlcMOcPscQJcQKcSLcMOcQLcQMcKlcKlcKlcKlcKlaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaafaaaaaaaaaaaacMXcQNcQNcMXcMXcLLcIMcGTcGTcFucFucGTcGTcGTcGTcGTcGTcQOcQOcQOcEacEacEacEacQPcQQcKGcLWcLWcLWcLWcLWcLXcLYcKUcLYcLYcoVcoVcoVcQScQTcQUcHwcQVcQWcQXcHwcQacQYdFLcRacRbcRccPUcAYcPUcPUcRdcRecoVcRfcRgcRhcpkcRicRjcRicRkcRlcRmcRncQocRmcsFcsFcRocKRcKRcRpcKRcKRcQocpkcGjcRqcRrcLacRscRtcRucRvcRwcKZcRxcRycRzcRAcRBcLbcRCcRDcREcRFcRGcRHcRIcRJcRKcRLcRMcRNcROcRPcRQcRRcRScMOcRTcRUcPtcRVcMOcRWcRXcpwaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaadaadaaaaaaaaacMXcRYcRZcSacMXcSbcKvcSccSdcSecSfcSgcShcIMcSicIMcSjcSkcSkcSkcSlcSmcSmcEacEacEacKGcKGcKGcKGcKGcKGcKGcQOcSncQOcGTcSocGTdTdcBbcFUcBbcSqcSrcPScSscBbcPUcPUcRdcPUcPUcStcAYcSucSvcSwcSucSucSucSxcSycSzcSAcSAcSAcSAcSAcSAcSAcSBcSCcSDcSDcSDcSEcSFcSGcSHcSDcSDcSIcSJcSKcVacSMcLacLacLacLacLacLacLacSNcLbcLbcLbcSOcLbcSPcSQcSRcSScSPcLhcSTcLhcLhcLhcMIcSUcSVcSWcSXcSYcSZcTacPtcTbcTccTdcTecTfcTgcpwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfGaafaafaafaafaaaaaaaaacMXcMXcSbcKucKucKucThcTicTicTicTjcTicTicTicTkcKucKucKucKucThcKucKucKucKucKucKucKucKucTlcTmcTncTocTpcKucTqcTrcTscTtcTucTucTucTucTucTucTucSucSucSucSucSucSucSucTvcTwcTxcTycSucTzcTAcTBcSAcTCcTDcTEcTFcTGcSAcTHcsFcsEcsFcsFcTIcTJcTJcTJcTJcTJcTJcTKcTLcsFcTMcTNcTOcTPcTQcTQcTRcTScTTcTUcTVcTWcTXcSRcTYcTZcUacUbcUccSRcUdcTWcTVcTUcUecSUcUfcUgcUhcUicUjcMOcUkcUlcUmcUncUocUpcUqcpwaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaacMXcMXcMYcMYcMYcMXcMXcMXcMYcMYcMYcMXcMXcMXcMXcMXcMXcMXcMXcIMcIMcIMcIMcIMcIMcIMcIMcIMcIMcIMcMXcMXcMXcMXcUrcUscUtcTucUucUvcUwcUxcUycTucUzcUAcUBcUCcUDcUEcUFcUGcUGcUHcUIcSucUJcUKcULcUMcUNcUOcUPcUQcURcSAcUScUTcpkcUUcUVcRmcTJcUWcUXcUYcUZcVYcsFcTLcVbcVccVdcVecVfcVgcVhcGjcTScVicUacVjcVkcVlcSRcVmcVncVocVpcVqcSRcVrcVkcVjcUacVscSUcSUcSUcSUcVtcSUcMOcMOcMOcMOcMOcMOcVucVvcVwaafaafaafabcaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaadaadaaaaaaaaacMXcRYcRZcSacMXcSbcKvdGccSdcSecSfcSgcShcIMcSicIMcSjcSkcSkcSkcSlcSmcSmcEacEacEacKGcKGcKGcKGcKGcKGcKGcQOcSncQOcGTcSocGTdTdcBbcFUcBbcSqcSrcPScSscBbcPUcPUcRdcPUcPUcStcAYcSucSvcSwcSucSucSucSxcSycSzcSAcSAcSAcSAcSAcSAcSAcSBcSCcSDcSDcSDcSEcSFcSGcSHcSDcSDcSIcSJcSKcVacSMcLacLacLacLacLacLacLacSNcLbcLbcLbcSOcLbcSPcSQcSRcSScSPcLhcSTcLhcLhcLhcMIcSUcSVcSWcSXcSYcSZcTacPtcTbcTccTdcTecTfcTgcpwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfGaafaafaafaafaaaaaaaaacMXcMXcSbcKucKucKucThcTicTicTicTjcTicTicTicTkcKucKucKucKucThcKucKucKucKucKucKucKucKucTlcTmcTncTocTpcKucTqcTrcTscTtcTucTucTucTucTucTucTucSucSucSucSucSucSucSucTvcTwcTxcTycSucTzcTAcTBcSAcTCcTDcTEdGycTGcSAcTHcsFcsEcsFcsFcTIcTJcTJcTJcTJcTJcTJcTKcTLcsFcTMcTNcTOcTPcTQcTQcTRcTScTTcTUcTVcTWcTXcSRcTYcTZcUacUbcUccSRcUdcTWcTVcTUcUecSUcUfcUgcUhcUicUjcMOcUkcUlcUmcUncUocUpcUqcpwaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaacMXcMXcMYcMYcMYcMXcMXcMXcMYcMYcMYcMXcMXcMXcMXcMXcMXcMXcMXcIMcIMcIMdOZcIMcIMcIMcIMcIMcIMcIMcMXcMXcMXcMXcUrcUscUtcTucUucUvcUwcUxcUycTucUzcUAcUBcUCcUDcUEcUFcUGcUGcUHcUIcSucUJcUKcULcUMcUNcUOcUPcUQcURcSAcUScUTcpkcUUcUVcRmcTJcUWcUXcUYcUZcVYcsFcTLcVbcVccVdcVecVfcVgcVhcGjcTScVicUacVjcVkcVlcSRcVmcVncVocVpcVqcSRcVrcVkcVjcUacVscSUcSUcSUcSUcVtcSUcMOcMOcMOcMOcMOcMOcVucVvcVwaafaafaafabcaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacMXcMXcVxcVycVzcVAcVBcVCcVDcVEcVFcMXcMXaaaaaaaaaczlcVGcVHcTucTucTucVIcVJcVKcTucVLcVMcVNcVOcVPcVQcSucVRcVScVTcVUcSucVVcVWcVXcSAcXjcVZcWacWbcWccSAcWdcWecTJcTJcTJcTJcTJcWfcWgcWhcWicWjcqMcWkcWlcWmcWmcWlcWncWocWpcWqcWrcWscWtcWucWvcWwcWxcWycWzcWAcWycWycWxcWAcWBcWCcWycWDcWEcQRcWGcWHcWIcWJcWKcWLcWMcWNcWOcWPcWQcWRcWSaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaadaadaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaacMXcMXcMXcMYcMYcMYcMYcMYcMXcMXcMXaaaaaaaaaaaaczlcWTcWUcTucWVcWWcWXcWYcWZcTucXacXbcXccXdcXecXfcSucSucXgcSucSucSucXhcUKcXicSAcSAdbNcXkcXlcXmcSAcXncXocXpcXqcXrcXscTJcXtcXucXvcXwcTJcXxcQocXycXzcXAcXBcXCcXCcXDcGjcTScXEcXFcXGcXHcXIcXJcXKcXLcXMcXNcXKcXOcXPcXQcXRcXScXTcXUcWFcXWcXXcXYcXZcYacYbcYccYdcYecYfcYgcYhcYiaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaadaadaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaacMXcMXcMXcMYcMYcMYcMYcMYcMXcMXcMXaaaaaaaaaaaaczlcWTcWUcTucWVcWWcWXcWYcWZcTucXacXbcXccXdcXecXfcSucSucXgcSucSucSucXhcUKcXicSAcSAdbNcXkcXlcXmcSAcXncXocXpcXqcXrcXscTJcXtcXucXvcXwcTJcXxcQocXycXzcXAcXBcXCcXCdVCcGjcTScXEcXFcXGcXHcXIcXJcXKcXLcXMcXNcXKcXOcXPcXQcXRcXScXTcXUcWFcXWcXXcXYcXZcYacYbcYccYdcYecYfcYgcYhcYiaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaabaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcVGcVHcTucTucTucTucYjcTucYkcYlcYlcYmcYlcYlcYncYocYpcYqcYrcYscYtcYucUKcYvcYwcYxcYycYzcYAcYBcYCcYDcYEcYFcYGcYHcYIcTJcTJcTJcYJcTJcTJcpkcYKcYLcYMcYNcYOcTRczCczCcTRcTScTScYPcYQcYRcYScYRcSPcYTcYUcYVcSPcYWcYXcYYcYZcYYcZacZbcZbcZbcZccZdcZccZecZfcZgcZfcZhcZicZjcZicWSaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaagaadaadabcaagaagaadaadaadaadaafaaeaaaaafaagaadaadaadaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcUscZkcZlcZmcZncSucZocTwcZpcZqcZqcZrcZqcZqcZscTwcZtcZucZvcZwcYtcZxcZycZzcZAcZBcZCcXocZDcZEcXocZFcZGcZHcZIcZJcZKcZLcZMcZNcZOcZPcTJcZQcZRcZScZTcZTcTRaaaaaaaafaaaaaaaaacYPcZUcZVcZWcZXcZYcZYcZZcZYcZYdaadabdacdaddaedafdagdahcZbdaidajdakcZedaldamdancZhcWScYicWScVwaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacUrcUrdaodapdaqdaqdaqdardasdatdatdaudatdavdatdawdaxdaydazdaAdazdaBdaCdaDdaEdaFdaGdaHdaIdaJdaKdaJdaJdaLdaMdaNdaOdaPdaQdaRdaQdaQdaSdaTcTJdaUcZRdaVdaWdaXdaYaaaaaaaafaaaaaaaaacYPdaZdbadbbdbcdbddbedbfdbgdbhdbidbjdbkdblcYYdbmdbndbocZbdbpdbqdbrcZedbsdbtdbucZhaaaaaaaaaaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11005,17 +11014,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczlddXdekddZddZddZddZddZddZddZddZddZddZddYdeldemddrdendeodepdeqdercSudescVWdetcYwdeudevdewdexdeydezdeAdeBdeCdeDdeEdeFdeGdeHdeIcZKdeJcTJdeKdeLcZSaaaaaaaaaaagaadaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaczlddXdeMddZddZddZddZddZddZddZddZddZddZddYdeNdeOddrcSucSudePcSucSucSudeQcUKdeRdeSdeTdeTdeUdeUdeUdeVdeWdeXdeTdeYdeZdeTdeUdeUdeUdeUdeTdeTdfadcZcZSaafaafaafaadaaaaabaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaafaafaadaadaadaafaaeaagaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafcUrddXddYddZddZddZddZddZddZddZddZddZddZdfbdfcdfddfeddrdffdfgdfgdfhdfidfjcUKdfkdfkdeUdfldfmdfndfodfpdfqdUXdfsdftdfudfvdfwdfxdfydfzdfAdhXdaUdcZcZSaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaafaaaaaaaaaaafaaaaadaadaafaadaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlddXddYddZddZddZddZddZddZddZddZddZddZdfCdfDdfEdfFdfGdfHdfIdfJdfKdfLdfMcZydfNcULdfOdfPdfQdfRdfSdfQdfTdfUdfUdfUdfVdfWdfUdfUdfXdfUdfYdeTdfZdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaagaaaaadaadaadaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlddXddYddZddZddZddZddZddZddZddZddZddZdfCdfDdfEdfFdfGdfHdfIdfJdfKdfLdfMcZydfNcULdfOdfPdfQdfRdfSdfQdfTdfUdfUdfUdfVdfWdfUdfUdfXdfUdfYdeTdVDdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaagaaaaadaadaadaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlddXdgaddZddZddZddZddZddZddZddZddZddZddYdgbdgcdgddgedgfdggdghcULcSzdgidgjdgkdgldgmdgndgodUYdgqdgqdgrdgqdgsdgqdgtdgudgvdgwdgxdgvdgydgzdgAdgBdaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafcUrddXddYddZddZddZddZddZddZddZddZddZddZdfbdfcdgCdgDddrdgEdgFdgGdgHdfidgIcTAdgJdfkdeUdgKdgLdgMdgNdgOdgPdgQdgRdgSdgTdgNdgOdgUdgVdgVdgWdeTdgXdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaczlddXdeMddZddZddZddZddZddZddZddZddZddZddYdgYdgZddrdhadhbdhadhadhadfidhcdhddhedeTdeTdhfdeTdeTdeTdeTdhgdeTdeTdeTdeTdeTdeTdeTdeTdeTdeTdeTdhhdhicZSaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczldhkdekddZddZddZddZddZddZddZddZddZddZddYdeldhldhmdVadhodUZdVcdhrdVbcTBcTAdhtdhudhvdhwdhxdhydhzdhxdhAdhvdhBdhCdhDdhEdhFdhGdhBdhHdhIdhJdhKdhLcZSaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczldVEdekddZddZddZddZddZddZddZddZddZddZddYdeldhldhmdVadhodUZdVcdhrdVbcTBcTAdhtdhudhvdhwdhxdhydhzdhxdhAdhvdhBdhCdhDdhEdhFdhGdhBdhHdhIdhJdhKdhLcZSaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczldhkddYddZddZddZddZddZddZddZddZddZddZddYdhMdhNdhmdhOdhPdhQdhRdVddhTdhUdhVdhWdhudhxdhYdibdhZdiadicdizdhxdhBdiddiedifdigdihdhBdiidijdikdildimcZSaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaafaafaafcUrdhkddrddrdindiodipddrddrddrddrddrddrddrddrddrddrdVfdVedisdVgdhrdiudivcVWdiwdixdiydiBdiAdhydhydjRdiCdhxdiDdiEdiFdiGdiHdiIdhBdiJdiKdikdiLdimcZSaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkcvwdiMdiNdiMdiOdiMdiPdiQdiRdiQdiSdiTdiUdiVdiMdiWdhadhadhadhadiXdfkcUKdiYdixdiZdjadiZdhydjbdiZdjcdjddjedjfdjfdjgdjfdjhdhBdjidjjdjkdjldjmcZSaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkctTdiMdjndjodjpdjqdiPdjrdiRdjsdiSdjtdjsdjsdjudjsdjsdiQdjsdjvdbKdfkcUKdjwdhudhxdhYdibdhydhydicdizdjxdhBdiDdiDdjydiDdiDdhBdixdixdixdhhdjzdjAdjAdjAaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkctTdiMdjndjodjpdjqdiPdjrdiRdjsdiSdjtdjsdjsdjudjsdjsdiQdjsdjvdbKdfkcUKdjwdhudhxdhYdibdhydhydicdizdjxdhBdiDdiDdVFdiDdiDdhBdixdixdixdhhdjzdjAdjAdjAaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdjBdjCdiMdjDdjEdjFdjsdjGdjHdjIdjJdjIdjKdjLdjMdjNdjLdjOdjLdjLdjPdhTdhUdhVdjQdhudiZdjUdjSdjTdjTdnhdjVdjWdjXdjYdjYdjZdkadkbdkcdkddkbdkbdkedkfdkgdkhdkiaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkjdkkdkldkmdkndkodkpdkqdkrdksdktdkudkvdjsdjsdjsdkwdiMdkxdiMdiMdiMdkycZydkzdixdkAdkBdkCdkDdkEdkFdkGdkHdkIdkJdkHdkKdkLdkMdkNdkOdkNdkNdkPdkQdkRdkSdkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkjdkkdkldkmdkndVGdkpdkqdkrdksdktdkudkvdjsdjsdjsdkwdiMdkxdiMdiMdiMdkycZydkzdixdkAdkBdkCdkDdkEdkFdkGdkHdkIdkJdkHdkKdkLdkMdkNdkOdkNdkNdkPdkQdkRdkSdkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkTdkUdiMdkVdkWdkXdjsdkYdjsdjsdkZdjsdkvdladlbdlcdlddkxdledlfdlgdiMdlhcUKdlidixdhudhudixdljdlkdixdlldhudixdixdlmdixdlndixdlodlpdlqdhxdlrdlsdixdjAdjAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcAYdltdiMdludjsdlvdjsdkYdlwdlxdlydlzdlAdlBdlCdlDdlDdlEdlFdlGdlHdiMdfkdlIdlJdlKdlLdlMdlNdlOdlPdlQdlRddzdlSdixdlTdlUdlVdixdlWdlWdlXdlYdlZdmadmbdmcdmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcUrcUrcUrcUrcUrcUrdmediMdiMdmfdmgdmhdkYdmidlxdmjdlzdmkdmldmjdmmdmndkxdmodmpdmqdiMdmrdmsdmtdmudmvdmwdmxdmydmzdmAdmBdmCdmDdixdixdixdixdixdixdixdixdixdmEdmFdmFdmFdmGdmGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11024,7 +11033,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdnPdnQdnRdnRdnSdmIdnTdnUdnVdnWdnXdnYdnZdoadobdocdoddoedofdogdohdoidojdokdoldomdomdomdondoodopdmUdmUdmUdoqdordosdotdoudovdowdmUdoxdoydozdoAdoBdoCdoDdmXdnbdnMdmFdoEdoFdnfaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdoGdoHdoHdoIdoJdoKdoLdoMdoNdoOdoPdoQdoRdoPdoPdoOdoSdoTdoUdoVdoWdoXdoYdoZdpadpbdoYdfkdpcdpddmUdpedpfdpgdphdpidpjdmUdpkdnKdmUdpldpmdpndpodppdpqdprdmXdnbdpsdmFdmFdmGdmGaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdptdoHdoHdoIdoJdoKdoLdpudpvdoOdpwdpxdpydpzdpAdoOdpBdpBdpCdpBdpDdpEdpFdpGdpFdpHdpIdpJdpcdpKdmUdmUdmUdmUdpLdmUdmUdmUdmUdmUdmUdpMdpmdpndpNdpOdpmdpPdmXdpQdnMdVtdpRdmGaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdpSdpTdpUdpUdnSdmIdmKdpVdpudpWdoPdpXdpYdpZdpXdpXdqadqbdqcdqddqcdqedpEdqfdqgdqhdpFdqidfkdpcdqjdqkdqldqmdqndqodqpdqqdqrdqsdqtdqudqvdqvdqvdqwdqxdqxdqydqzdqAdqBdnMdqCdnfaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdpSdpTdpUdpUdnSdmIdmKdpVdpudpWdoPdpXdpYdpZdpXdpXdqadqbdqcdqddqcdqedpEdqfdqgdqhdpFdqidfkdpcdqjdqkdqldqmdqndqodqpdqqdqrdqsdqtdqudqvdqvdqvdqwdqxdqxdqydqzdqAdqBdVHdqCdnfaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdqDdqDdqDdnidnidmKdqEdpudqFdoPdqGdqHdqIdqJdqKdoOdqLdqMdqNdqcdqOdpEdqPdqQdqRdpFdqidfkdqSdqjdqkdqldqTdqUdqUdqVdqWdqUdqXdqUdqYdqZdradrbdqYdqUdrcdqUdmXdrddrednMdrfdnfaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdxodmKdrhdridrjdoOdrkdrldrmdrndrodoOdrpdrqdrrdqcdrsdpEdrtdrudrvdrwdrxdfkdrydrzdrAdrBdrCdrDdrEdqUdqWdrFdrGdrGdrHdrGdrIdrIdrJdrIdrIdmXdmXdrKdrLdnMdrMdnfaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmKdmKdmKdmKdmKdmKdmKdrNdrOdpWdoPdrPdrQdrRdrSdrTdoOdrUdqcdrVdrWdrXdpEdrYdrZdsadpFdqidfkcUKdsbdscdsddqTdsedsfdqUdqWdsgdrGdshdsidsjdrIdskdsldsmdrIdsndmXdsodspdmGdmGdmGaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11220,7 +11229,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdFmdFndFoaaaaaaaaadAVdAVdAVdAVdAVdCLdAVdAVdFpdFpdFqdFpdFpdErdFrdErdFsdFsdFtdFsdFsdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaadFudFvdFwdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdFxdFydFoaaaaaadAVdAVdAVdAVdAVdAVdCLdAVdFpdFpdFzdFAdFBdFpdFCdFDdFEdFsdFFdFGdFHdFsdFsdAVdAVdAVdAVdAVdAVdAVdAVaaaaaadFudFIdFJdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdFKdVudFoaaaaaadAVdAVdAVdAVdAVdAVdCLdAVdFpdFMdFNdFOdFPdFQdFRdFSdFTdFUdFVdFWdFXdFYdFsdAVdAVdAVdAVdAVdAVdAVdAVaaaaaadFudFZdGadCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGbdGcdCcaaaaaadGddGedGfdGedGgdGgdGhdGgdGgdGidGjdGkdGldFpdGmdGndGmdFsdGodGpdGqdGrdGsdGtdGudGtdGsdGvdGwdGvdGxaaaaaadCfdGydGzdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGbdVIdCcaaaaaadGddGedGfdGedGgdGgdGhdGgdGgdGidGjdGkdGldFpdGmdGndGmdFsdGodGpdGqdGrdGsdGtdGudGtdGsdGvdGwdGvdGxaaaaaadCfdVJdGzdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGAdCldCcaaaaaadGddGBdGCdGDdGEdGFdGGdGHdGgdFpdFpdFpdGIdGJdGKdGLdGMdGNdGOdFsdFsdFsdGsdGPdGQdGRdGSdGTdGUdGVdGxaaaaaadCfdCUdGWdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGXdGYdCcaaaaaadGddGZdHadHbdGEdHcdHddHedGgdHfdHgdHgdHhdHgdHgdHidHgdHgdHjdHgdHgdHkdGsdHldHmdHndGSdHodHpdHqdGxaaaaaadCfdHrdHsdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdCcdHtdEqdCcaaaaaadGddHudHvdHwdGEdHxdHydHzdGgdHAdHBdHCdHDdHEdHFdHGdHEdHEdHHdHIdHBdHAdGsdHJdHKdHLdGSdHMdHNdHOdGxaaaaaadCfdEvdHPdCfdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11236,7 +11245,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNrdNsdMxaaaaaadNtdNudNvdNwdNxdNydNzdNAdNtdNBdNCdNDdNEdNFdNGdNHdNGdNEdNEdNDdNIdNJdNKdNLdNMdNNdNOdNKdNPdNQdNKaaaaaadMYdNRdNSdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaadaXGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdNTdMxaaaaaadNtdNUdNVdNWdNXdNYdNZdOadNtdObdOcdIedOddOedHBdHAdHBdOfdOgdIedOhdOidNKdOjdOkdOldOmdOndOodOpdNKaaaaaadMYdOqdOrdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdOsdOtaaaaaadOudNydOvdOwdOxdOydOzdOAdOBdOCdODdOEdOddOFdOGdOHdOIdHBdOJdOKdOLdOMdONdOOdOPdOQdORdNKdOSdOTdNKaaaaaadOUdOVdOWdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdOXdOYdOtaaaaaadOZdPadPbdPcdPddPcdPedPfdNtdPgdPhdIedPidPjdPkdPldPmdPndPodIedPpdPqdNKdNKdNKdPrdNKdNKdNKdNKdNKaaaaaadOUdPsdPtdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdOXdOYdOtaaaaaadVKdPadPbdPcdPddPcdPedPfdNtdPgdPhdIedPidPjdPkdPldPmdPndPodIedPpdPqdNKdNKdNKdPrdNKdNKdNKdNKdNKaaaaaadOUdPsdPtdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaafaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdPudPvdOtaaaaaadPwdPxdNydNydPydNydNydPzdNtdObdOcdPAdPAdPAdPBdPCdPDdPAdPAdPAdOhdOidNKdPEdPFdPGdPHdPIdPJdPKdNKaaaaaadOUdPLdPMdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdPudPQdMxaaaaaadPRdPSdPTdNydPUdPVdPWdPXdPYdPZdQadQbdQcdQddQedQfdQgdQhdQidQjdQkdQldQmdQndQodQpdQqdQrdQsdQtdNKaaaaaadMYdQudPMdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafabcaafaaaaaaaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdPNdQydPPdAVdPNdQydPPdAVdPNdQydPPdAVdPNdQydPPdAVdPNdQydPPdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdPudQzdMxdMxdNtdNtdNtdQAdQBdQCdQBdQAdNtdNtdQDdQEdQFdQGdQHdQGdQIdQGdQHdQGdQGdQJdQKdNKdNKdQLdQMdQNdQOdQPdQQdNKdNKdMYdMYdQRdPMdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdQvdQSdQxdAVdQvdQSdQxdAVdQvdQSdQxdAVdQvdQSdQxdAVdQvdQSdQxdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11356,3 +11365,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index e13b3ef128..38b01c00cc 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -211,8 +211,8 @@ "ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/clothing/mask/breath,/obj/machinery/door/window/westleft{req_access = list(48)},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/effect/floor_decal/corner/brown{dir = 6},/obj/random/multiple/voidsuit/mining,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main) "ed" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/surface/outpost/mining_main/refinery) "ee" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/refinery) -"ef" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/effect/overlay/snow/floor,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/gen_room) -"eg" = (/obj/machinery/conveyor_switch{id = "mining_external"},/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/gen_room) +"ef" = (/obj/machinery/conveyor_switch{id = "mining_external"},/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/gen_room) +"eg" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/effect/overlay/snow/floor,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/gen_room) "eh" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 5; icon_state = "warning_dust"},/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outside/path/plains) "ei" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "ej" = (/obj/structure/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/security) @@ -479,7 +479,7 @@ "jk" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "jl" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/gen_room) "jm" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table/steel,/obj/machinery/cell_charger,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) -"jn" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) +"jn" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jo" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jp" = (/turf/simulated/wall,/area/surface/outpost/main/gen_room) "jq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/highsecurity{name = "Teleport Access"; req_access = list(17)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/teleporter) @@ -514,7 +514,7 @@ "jT" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/sif/planetuse,/area/surface/outside/plains/outpost) "jU" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) -"jW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) +"jW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jY" = (/obj/machinery/door/airlock/engineering{name = "Generator Room"; req_one_access = list(12,47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "jZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/main) @@ -614,7 +614,7 @@ "lP" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Gym"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/gym) "lQ" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/main) "lR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/main) -"lS" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main) +"lS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room) "lT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/surface/outpost/main) "lU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main) "lV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/surface/outpost/main) @@ -812,9 +812,9 @@ "pF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "pG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "pH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) -"pI" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) +"pI" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main) "pJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) -"pK" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase{desc = "It looks almost lifelike."; icon = 'icons/obj/statue.dmi'; icon_state = "hos"; name = "Statue"; pixel_y = 2},/obj/item/device/gps/internal/base,/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/corridor) +"pK" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "pL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "pM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "pN" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor) @@ -850,7 +850,7 @@ "qr" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qs" = (/obj/machinery/camera/network/main_outpost{c_tag = "MO - Corridor West"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qt" = (/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) -"qu" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) +"qu" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase{desc = "It looks almost lifelike."; icon = 'icons/obj/statue.dmi'; icon_state = "hos"; name = "Statue"; pixel_y = 2},/obj/item/device/gps/internal/base,/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/corridor) "qv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qw" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) @@ -872,7 +872,7 @@ "qN" = (/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qO" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom) "qP" = (/turf/simulated/wall,/area/surface/outpost/main/dorms) -"qQ" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/light,/obj/structure/closet/emcloset,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) +"qQ" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qR" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "main3_airlock_control"; name = "Main Access Console"; pixel_x = 0; pixel_y = -26; tag_exterior_door = "main3_airlock_exterior"; tag_interior_door = "main3_airlock_interior"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qS" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "qT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) @@ -908,7 +908,7 @@ "rx" = (/obj/machinery/firealarm{pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) "ry" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) "rz" = (/obj/item/weapon/bedsheet/bluedouble,/obj/structure/bed/double/padded,/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) -"rA" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/surface/outpost/main/corridor) +"rA" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/light,/obj/structure/closet/emcloset,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor) "rB" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main3_airlock_interior"; locked = 1; name = "Main Outpost Interior"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "main3_airlock_control"; name = "Main Access Button"; pixel_x = -32; pixel_y = -6; req_access = null},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor) "rC" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/pool) "rD" = (/turf/simulated/wall,/area/surface/outpost/main/pool) @@ -929,7 +929,7 @@ "rS" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/button/remote/airlock{id = "modorm6"; name = "Door Bolt Control"; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) "rT" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light,/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) "rU" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/item/device/gps{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) -"rV" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/surface/outpost/main/corridor) +"rV" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/surface/outpost/main/corridor) "rW" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/corridor) "rX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) "rY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/newscaster{pixel_y = 30},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) @@ -992,7 +992,7 @@ "td" = (/obj/item/weapon/stool,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/button/remote/airlock{id = "modorm7"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/carpet,/area/surface/outpost/main/dorms) "te" = (/obj/item/weapon/stool/padded,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/button/remote/airlock{id = "modorm8"; name = "Door Bolt Control"; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) "tf" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light,/turf/simulated/floor/carpet/blucarpet,/area/surface/outpost/main/dorms) -"tg" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) +"tg" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/corridor) "th" = (/obj/effect/overlay/snow/floor,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main/corridor) "ti" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/water/pool,/area/surface/outpost/main/pool) "tj" = (/turf/simulated/floor/water/pool,/area/surface/outpost/main/pool) @@ -1006,7 +1006,7 @@ "tr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) "ts" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32; pixel_y = 0},/obj/item/weapon/stool/padded,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Pool East"; dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) "tt" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outside/path/plains) -"tu" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/obj/effect/zone_divider,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) +"tu" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) "tv" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/effect/zone_divider,/turf/simulated/floor/plating,/area/surface/outpost/main/pool) "tw" = (/obj/structure/table/glass,/obj/item/weapon/book/codex/lore/vir,/obj/effect/zone_divider,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) "tx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/obj/effect/zone_divider,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) @@ -1022,7 +1022,7 @@ "tH" = (/obj/structure/table/glass,/obj/effect/zone_divider,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/pool) "tI" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/rocks/sif/planetuse,/area/surface/outside/plains/mountains) "tJ" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline/corner,/area/surface/outside/ocean) -"tK" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 6},/area/surface/outside/ocean) +"tK" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/obj/effect/zone_divider,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) "tL" = (/obj/effect/zone_divider,/turf/simulated/floor/water,/area/surface/outside/ocean) "tM" = (/obj/effect/zone_divider,/turf/simulated/floor/water/deep,/area/surface/outside/ocean) "tN" = (/turf/simulated/floor/outdoors/snow/sif/planetuse,/area/surface/outside/plains/normal) @@ -1056,12 +1056,12 @@ "up" = (/turf/simulated/floor/plating/sif/planetuse,/area/shuttle/shuttle1/planet) "uq" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/overlay/snow/floor,/turf/simulated/floor/plating/sif/planetuse,/area/surface/outside/plains/outpost) "ur" = (/turf/simulated/floor/plating/sif/planetuse,/area/shuttle/shuttle2/planet) -"us" = (/turf/simulated/floor/water/shoreline/corner{icon_state = "shorelinecorner"; dir = 8},/area/surface/outside/ocean) -"ut" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 5},/area/surface/outside/ocean) -"uu" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) -"uv" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) -"uw" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) -"ux" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/effect/overlay/snow/floor,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) +"us" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 6},/area/surface/outside/ocean) +"ut" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) +"uu" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 5},/area/surface/outside/ocean) +"uv" = (/turf/simulated/floor/water/shoreline/corner{icon_state = "shorelinecorner"; dir = 8},/area/surface/outside/ocean) +"uw" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) +"ux" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) "uy" = (/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/plains/outpost) "uz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) "uA" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/plating/sif/planetuse,/area/surface/outpost/research/xenoresearch) @@ -1274,9 +1274,9 @@ "yz" = (/obj/machinery/sleep_console,/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology) "yA" = (/obj/structure/table/rack,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/item/bodybag/cryobag,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "yB" = (/turf/simulated/wall,/area/surface/outpost/research/xenoresearch/xenoflora) -"yC" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/structure/extinguisher_cabinet{pixel_x = -25},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) +"yC" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/heavyduty{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) "yD" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) -"yE" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) +"yE" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/effect/overlay/snow/floor,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost) "yF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "yG" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "yH" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) @@ -1411,7 +1411,7 @@ "Bg" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology) "Bh" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/brigdoor/eastright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) "Bi" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Port to Isolation"},/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) -"Bj" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) +"Bj" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/structure/extinguisher_cabinet{pixel_x = -25},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) "Bk" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Isolation to Waste"},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenoflora) "Bl" = (/obj/effect/floor_decal/corner/green{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 9; icon_state = "intact"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "Bm" = (/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) @@ -1429,7 +1429,7 @@ "By" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology) "Bz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/wingrille_spawn/reinforced,/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenobiology) "BA" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) -"BB" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/meter,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) +"BB" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora) "BC" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/item/weapon/tool/wrench,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "BD" = (/obj/effect/floor_decal/corner/green{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) "BE" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) @@ -1523,12 +1523,12 @@ "Do" = (/obj/effect/step_trigger/teleporter/bridge/north_to_south,/obj/structure/railing,/turf/simulated/floor/water,/area/surface/outside/river/indalsalven) "Dp" = (/obj/effect/step_trigger/teleporter/bridge/north_to_south,/obj/structure/railing,/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven) "Dq" = (/obj/effect/step_trigger/teleporter/bridge/north_to_south,/obj/structure/railing,/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/plains/normal) -"Dr" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/plains/normal) -"Ds" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/water,/area/surface/outside/river/indalsalven) -"Dt" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven) -"Du" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 9},/area/surface/outside/ocean) -"Dv" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 1},/area/surface/outside/ocean) -"Dw" = (/turf/simulated/floor/water/shoreline/corner{icon_state = "shorelinecorner"; dir = 4},/area/surface/outside/ocean) +"Dr" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) +"Ds" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/meter,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora) +"Dt" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/plains/normal) +"Du" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/water,/area/surface/outside/river/indalsalven) +"Dv" = (/obj/effect/step_trigger/teleporter/bridge/south_to_north,/obj/structure/railing{icon_state = "railing0"; dir = 1},/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven) +"Dw" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 1},/area/surface/outside/ocean) "Dx" = (/turf/simulated/floor/water,/area/surface/outside/river/faxalven) "Dy" = (/obj/effect/zone_divider,/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven) "Dz" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/syndicate_station/planet) @@ -1540,7 +1540,7 @@ "DF" = (/obj/effect/zone_divider,/turf/simulated/floor/water,/area/surface/outside/river/faxalven) "DG" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outside/plains/normal) "DH" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/rocks/sif/planetuse,/area/surface/outside/plains/normal) -"DI" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 8},/area/surface/outside/ocean) +"DI" = (/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 9},/area/surface/outside/ocean) "DJ" = (/turf/simulated/floor/water,/area/surface/outside/lake/romsele) "DK" = (/turf/simulated/floor/water/deep,/area/surface/outside/lake/romsele) "DL" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/skipjack_station/planet) @@ -1558,7 +1558,9 @@ "DX" = (/turf/unsimulated/wall/planetary/sif{icon_state = "rock-dark"},/area/surface/outpost/wall) "DY" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall) "DZ" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outside/lake/romsele) - +"Ea" = (/turf/simulated/floor/water/shoreline/corner{icon_state = "shorelinecorner"; dir = 4},/area/surface/outside/ocean) +"Eb" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 8},/area/surface/outside/ocean) + (1,1,1) = {" aaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacadadadabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaeaeaeababababababababab aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaiajajajahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa @@ -1588,7 +1590,7 @@ aaafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalal aaafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalctalalalctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaNcucucvcvcvcvaNcwcxcyaQczcAcBcCcDcDcDcDcEcEcEcFajajajalalalalalalalalalalbHbHcGcGcHcIcJcKcLcMcNcOcPcKcQcRcRcScTbPbPalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaAaCaJaDaDaDaDaDaDaDaDaDaDaDaDcUcUaM aaafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalctalalalctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaNcvcvcvcVcWcXcYcZbZdacDcDcDcDcDcDdbdcdddedfdfdgajajajalalalalalalalalalalbIdhdidjdkcIdlcKdmdndodpdqcKdrcRcRdsdtdubQalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaCaJaDaDaDaDaDaDaDaDaDaDaDcUcUcUcUaM aaafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctalalalctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaNdvdwcvdxdydzcYdAbZdBcDdCdDdEdFdGdHdIdJdKdKdKdLajajajalalalalalalalalalalbJdMcIdNcIdOdPbIdQdRdRdRdSbQdTdUcRdVdWdXbRalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUaM -aaafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaNaNaNaNdYdZcYcYeaebeccDedeeeecDeedbcDcDefegcEehajajajalalalalalalalalalalbIeiejekelemeneoepeqereqeseteuevewexeyezbQalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUaM +aaafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaNaNaNaNdYdZcYcYeaebeccDedeeeecDeedbcDcDegefcEehajajajalalalalalalalalalalbIeiejekelemeneoepeqereqeseteuevewexeyezbQalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUaM aaafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctctctctctalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbmbmbmaQeAeBaQeCeDeEeFbheGbieHeIeIeJeKeeeLcDeMeMeMeMeNajajajalalalalalalalalalalbHeOePeQeReSeTbIeUeVeWeXeYbQeZfafbfcfdfebPalalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUaM aaafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctctctctctctctalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbmbmfffgfhfifjfkflfmfnfmfofpfqfrfsftfufvfwcDeMeMeMeMeNajajajajalalalalalalalbHbHbHfxfxfxfyfzfAfxcKbofBbocKfCfDfEfFfCfCfCbPbPalalalalalalalalalalalahahahahahahahafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUaM aaafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctctctctctctctalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbmbmfGaPfHfIaPfJfKfLbYbieGbieHeIfMfNfOeefPcDeMeMeMeMeNajajajajajajajajajajfQbIfRfSbIfTfUfVcIfWfXbIfYfZgabQgbgcgcgdgegfgcggbQalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM @@ -1599,63 +1601,63 @@ aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctct aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIikhIhyiliminioipiqirisisitiuivgIalalalalalamajajajalalalalalalalalalhBiwixiyhBiziAiAiBhCiCiDiEhFiFiGiGiGiHiHiGiIhFalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIiJiKiLhJhyiMiNiOiPiQiRiSiTiUiVgIalalalalalamajajajalalalalalalalalalhBhBiWhBhBiXiYiZjahChDhijbhFiHiHjciiiiiHiHiGhGalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIgIjdjejfjggIgIjhgIgIjijjjkjkgIgIalalalalalamajajajalalalalalalalalaljljmjnjojphChCjqhChCjrhijshGjtiHjujvjwiGiHiHhGalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIgIgIgIjxgIjyjzjygIgIgIgIgIgIalalalalalalamajajajalalalalalalalalaljljAjBjCjDjEjFjGjHjIfYhijJhGjKiHjLiHiGiGiHiHhGaljMjMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalajajajjNjOjOjOjPjOjOjQjRjRjRjRjRjRjRjRjRjRjRjRjRjSjRjRjRjTjTjTjTjTjTjTjTjTjUjVjWjXjYjZkakbkakckakdkekfkgkhkikhkhkjiHiHhGalaljMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIgIgIgIjxgIjyjzjygIgIgIgIgIgIalalalalalalamajajajalalalalalalalalaljljAjWjCjDjEjFjGjHjIfYhijJhGjKiHjLiHiGiGiHiHhGaljMjMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalajajajjNjOjOjOjPjOjOjQjRjRjRjRjRjRjRjRjRjRjRjRjRjSjRjRjRjTjTjTjTjTjTjTjTjTjUjVlSjXjYjZkakbkakckakdkekfkgkhkikhkhkjiHiHhGalaljMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajajajajajajamajajajajajajajajajajajajajajajajajajajajamajajajalalalalalalalalaljlkkjBkljpkmknkokpkqkrkskthGkuiGjuiHiHiHiHiHhFalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalaljMalalalalajajajajajajajajajajajamajajajajajajajajajajajajajajajajajajajajamajajajalalalalalalalalaljlkvkwkxjpkykzkAkBkBjIkCkDhFhFkEkFkGkHkIkJkKhFalaIalaljMalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalalalalalalkLalalalalalalalalalalalalalalalalalalalalamajajajalalalalalalalalalkMkNkNkNkNkNkNkNkMkOkPkQkRkShFhGkThGhGhFhFhFhFalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalkUkUkUkUkVkVkWkXkWkYkYkYkYkZkZkYkYkYkYalalalalalalalalalamajajajalalalalalalalalalkMlalblclbldlelflglhliljlkfYjIlllmlnlolplqlrlsltjMalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalkUkUlulvlwlxlylzlAlBlClDlElFlElGlHlElIkYkYalalalalalalalalamlJlJlKalalalalalalalalalkMlLlMlMlMlMlNlOlPlQlRlSlTlUlVlWlXlYlZmambmcmdmejMjMjMalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalkUkUlulvlwlxlylzlAlBlClDlElFlElGlHlElIkYkYalalalalalalalalamlJlJlKalalalalalalalalalkMlLlMlMlMlMlNlOlPlQlRpIlTlUlVlWlXlYlZmambmcmdmejMjMjMalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalkUmflxlxlxmgmhlzmimjlCmkmlmmmnmomnmnmpmqkYalalalalalalalalmrmsmtmumualalalalalalalalmvmwmxmxmxmxmymzmvhhmAmBmCfYjImDmEmFmGkBmHmIkBmJaljMjMalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalkUlulxmKlxmLlxlzmMmNlCmOlEmPlEmQlElElEmRkYalalalalalalalalmSmTmUmVmsalalalalalalalalmvmWmXmWmXmWmWmYkMmZfYnakRnbncndnendndkBkBkBkBalalaljMjMalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalkUnflxngnhninjlznknllClEnmnnnonpnononqnrkYalalalalalalalalmSnsntnumsalalalalalalalalkMnvnwnxnynzmWnAkMkBjInBkDncncnCnDnEnFnGncalalalaIalaljMalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajaIalkUnHnIlxlxnJnKnLnMnNlClElElElEnOlElElEnPkYalalalalalalalmumrmsnQmumumualalalalalalalkMnRnSnTnUnVmWnWkNnXfYiDnYnZoanEobocndndncalalalalalaljMalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalodkUkUkUkVkVoeofnLogohlCkZkZkZlCoilCkZkZojkYmumumsmsmumsmsmuokolomonoomumsmsmumsmsmumukMkNmvopmvkNmvmvkNoqfYnakRndornEosnEotouncalalalalalaljMalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajovowoxoyozoAoBoCoDoEoFoGoHoIoJoJoKoLoMoJoNoOoJoPoQoRoRoSoRoToRoUoVoWoXoYoZoRoRpaoToRoRoPpbpclhpdpepcpfpcpgphphpipjndpknEosplndndncncncalalalaljMalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajpmpnpopppqprpsptpupvpwpxpypvpvpzpvpApvpvpBpvpCpDpEpFpGpGpGpHpGpIpJpKpLpGpGpGpFpGpHpGpMpNgylUlUpOpPpPpQpPpPpPkapRpSndpTnEosplndpUpVpWncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajpXodpYpZodqaqbqcpsqdqeqfqgqhqiqjpsqcqkqlqmqnqoqpqqqrqqqsqqqqqtquqvqwqxqyqqqqqrqzqqqqqqqpqAqBqBqCqBqBqBqBqDfYqEqFqGndqHqIqJqKqLqMqNqOncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalododododqPqPqcpsqPqPqPqPqPqPqPpsqcqPqPodododmumumsmsmumsmsmuqQqRntqSqTmumsmsmumsmsmumukBqUqVqWqXqYqZrarbfYrcrdrerfrgnErhrindpUrjpWncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajaIalodrkrlrmrnrorprqrrrsqPrtrurvrprorwrxryrzodalalalalalalalmurAmurBmsmumualalalalalalalkBrCrDrDrDrDrDrDrDrDrErFrGndndndrHndndndrIncncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalowrJrKrLqPqcrMqPrNrOqPrPrQqPrRqcqPrSrTrUowalalalalalalalalrVrWmUmVmsalalalalalalalalalrCrXrYrZrZsasbscsdsesfsgshsisjskslsmsnsorCalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalodqPqPqPqPqcpsqPqPqPqPqPqPqPpsqcqPqPqPqPodalalalalalalaIalrVspsqsrmsalaIalalalalalalalssstsusvswswswswswswsxswswswswswswsyszstssalalalaljMalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalodsArlrmsBsCsDsEsFsGqPsHsIsJsKsCsLrxrysModalalalalalalalalrAmusNmsmualalalalalalalalalsOsPstsQsRsSsTsTsTsTsTsTsUsUsUsVsRsWstsXsOalalalaljMalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalododsYsZqPowowqPtatbqPtctdqPowowqPtetfododalalalalalalalaltgthlJlJalalalalalalalalalalssstsRsQsRtitjtjtjtjtjtjtktktktlsRsWsRstssalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalodowododalalododowodowododalalododowodalalalalalalalalaltgajajajalalalalalalalalalalrCrCtmtnsRtitjtjtjtotptqtktktktlsRtrtsrCrCalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaagagaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFttttttaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFtuttttttaFaFaFaFaFaFaFaFaFaFaFtvtwtxtytztAtAtAtBtCtDtEtEtEtFtytGtHtvaFaFaFaFaFaFaFaFaFaFaFaFagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagtItItItItJtKtLtLtLtLtLtLtLtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMaM -aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalaltgajajajajalalalalalalalalalalsOsttOsRtitjtjtjtktktktktktktlsRtPstsOalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalalalalalalalalalalalalalalalalalalalalalalaltgajajajajalalalalalalalalalalsssRsRsRtQtRtRtRtStStStStStStTsRsRsRssalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalalalalalalalalalalalalalalalalalalalalaltgajajajajalalalalalalalalalalrCtUtVsRsRsRsRsRsRsRsRsRsRsRsRsRsRtWrCalalaljMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalalalalalalalalalalalalalalalalalalalaltgajajajajalalalalalalalalalalalrCrCsttXtYtZsRsRsRsRsRuatYubstrCrCalalalaljMalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafucucaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalmuudajajalalalalalalaluemuuealalalalalalalalalufmualtgalajajajalalalalalalalalalalalalrCsssOssrCtXuguhuitXrCsssOssrCalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalujukulululululululululumujukulululululululululumujaltgalajajajalalalalalalalalalalalalalalalalrCrCsssOssrCrCalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuououpupupupupuououqueunururuouououououruruqalaltgajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalaljMalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafucaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururuououourururuqalajazajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalaljMjMalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajajazajajajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafucucucaAaAaAaAaCaJaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajajazalajajajalajajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafucucucucaAaAaAaAusutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajaluuuvuwuwuwuvuvuvuvuvuvuvuvuvuxajajajajajajajajalalalalaljMjMjMalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAusutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqalalalajajajajalalalalalalalalaltgalalalalajajajajajajalaljMjMalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAaAusutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqalalalajajajalalalalalalalalalaltgalalalalalalajajajajajalalalalalalalalalalalalalalalalalalalalalalalalaluyuyafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaltgalalalalalalalalajajajalalalalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyafafafafafafafafafafafafafafagafafafafafafafafafafafafafafucucucucucaAaAaAaAaAaAaAaAaAusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaluzalalalalalaIalaluAuBuBalalaIalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyuyuyafafafafafafafafafafafafagafafafafafafafafafafafafafucucucucucucaAaAaAaAaAaAaAaAaAaAusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaluzalalalalalalaluCuDuEuFuCalalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyafafafafafafafagafafafafafafafafafafafafucucucucucucaAaAaAaAaAaAaAaAaAaAaAaAusutaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajpmpnpopppqprpsptpupvpwpxpypvpvpzpvpApvpvpBpvpCpDpEpFpGpGpGpHpGpKpJqupLpGpGpGpFpGpHpGpMpNgylUlUpOpPpPpQpPpPpPkapRpSndpTnEosplndpUpVpWncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajpXodpYpZodqaqbqcpsqdqeqfqgqhqiqjpsqcqkqlqmqnqoqpqqqrqqqsqqqqqtqQqvqwqxqyqqqqqrqzqqqqqqqpqAqBqBqCqBqBqBqBqDfYqEqFqGndqHqIqJqKqLqMqNqOncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalododododqPqPqcpsqPqPqPqPqPqPqPpsqcqPqPodododmumumsmsmumsmsmurAqRntqSqTmumsmsmumsmsmumukBqUqVqWqXqYqZrarbfYrcrdrerfrgnErhrindpUrjpWncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajaIalodrkrlrmrnrorprqrrrsqPrtrurvrprorwrxryrzodalalalalalalalmurVmurBmsmumualalalalalalalkBrCrDrDrDrDrDrDrDrDrErFrGndndndrHndndndrIncncalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalowrJrKrLqPqcrMqPrNrOqPrPrQqPrRqcqPrSrTrUowalalalalalalalaltgrWmUmVmsalalalalalalalalalrCrXrYrZrZsasbscsdsesfsgshsisjskslsmsnsorCalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalodqPqPqPqPqcpsqPqPqPqPqPqPqPpsqcqPqPqPqPodalalalalalalaIaltgspsqsrmsalaIalalalalalalalssstsusvswswswswswswsxswswswswswswsyszstssalalalaljMalalalalafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalodsArlrmsBsCsDsEsFsGqPsHsIsJsKsCsLrxrysModalalalalalalalalrVmusNmsmualalalalalalalalalsOsPstsQsRsSsTsTsTsTsTsTsUsUsUsVsRsWstsXsOalalalaljMalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalododsYsZqPowowqPtatbqPtctdqPowowqPtetfododalalalalalalalaltuthlJlJalalalalalalalalalalssstsRsQsRtitjtjtjtjtjtjtktktktlsRsWsRstssalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalajajalalodowododalalododowodowododalalododowodalalalalalalalalaltuajajajalalalalalalalalalalrCrCtmtnsRtitjtjtjtotptqtktktktlsRtrtsrCrCalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaagagaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFttttttaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFtKttttttaFaFaFaFaFaFaFaFaFaFaFtvtwtxtytztAtAtAtBtCtDtEtEtEtFtytGtHtvaFaFaFaFaFaFaFaFaFaFaFaFagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagtItItItItJustLtLtLtLtLtLtLtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMaM +aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalaltuajajajajalalalalalalalalalalsOsttOsRtitjtjtjtktktktktktktlsRtPstsOalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalalalalalalalalalalalalalalalalalalalalalalaltuajajajajalalalalalalalalalalsssRsRsRtQtRtRtRtStStStStStStTsRsRsRssalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalalalalalalalalalalalalalalalalalalalalaltuajajajajalalalalalalalalalalrCtUtVsRsRsRsRsRsRsRsRsRsRsRsRsRsRtWrCalalaljMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalalalalalalalalalalalalalalalalalalalaltuajajajajalalalalalalalalalalalrCrCsttXtYtZsRsRsRsRsRuatYubstrCrCalalalaljMalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafucucaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalmuudajajalalalalalalaluemuuealalalalalalalalalufmualtualajajajalalalalalalalalalalalalrCsssOssrCtXuguhuitXrCsssOssrCalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalujukulululululululululumujukulululululululululumujaltualajajajalalalalalalalalalalalalalalalalrCrCsssOssrCrCalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuououpupupupupuououqueunururuouououououruruqalaltuajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalaljMalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafucaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururuououourururuqalajutajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalaljMjMalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafucucaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajajutajajajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafucucucaAaAaAaAaCaJaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajajutalajajajalajajajajajajajajajajajajajajajalalalalalalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafucucucucaAaAaAaAuvuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqajaluwyCuxuxuxyCyCyCyCyCyCyCyCyCyEajajajajajajajajalalalalaljMjMjMalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAuvuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqalalalajajajajalalalalalalalalaltualalalalajajajajajajalaljMjMalalalalalalalalalalalalalalalalalalalalalalalafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAaAuvuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunuoupupupupupupupuouqueunurururururururururuqalalalajajajalalalalalalalalalaltualalalalalalajajajajajalalalalalalalalalalalalalalalalalalalalalalalalaluyuyafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafucucucucaAaAaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaltualalalalalalalalajajajalalalalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyafafafafafafafafafafafafafafagafafafafafafafafafafafafafafucucucucucaAaAaAaAaAaAaAaAaAuvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaluzalalalalalaIalaluAuBuBalalaIalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyuyuyafafafafafafafafafafafafagafafafafafafafafafafafafafucucucucucucaAaAaAaAaAaAaAaAaAaAuvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalalalalalalaluzalalalalalalaluCuDuEuFuCalalalalalalalalalalalalalalalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyafafafafafafafagafafafafafafafafafafafafucucucucucucaAaAaAaAaAaAaAaAaAaAaAaAuvuuaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalalaluGuGuGuHuHuIuHuJuJuJuJuJuJuJuKuLuMuDuDuDuFuNuFuDuDuFuDuOuDuFuDalalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyafafafafagafafafafafafafafafafafucucucucucucucaAaAaAaAaAaAaAaAaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalaluGuGuPuQuRuSuTuUuVuWuXuYuZvauJvbvcvduDvevfvgvhvivjuOvkvkvkvlvmuDuDalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvnvovovovovovovovpucucucucucucucucucucaAaAaAvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupupupupupupupuqueunuourururururururuouqalalalajajajalalalaluGuGuPuQuRuSuTuUuVuWuXuYuZvauJvbvcvduDvevfvgvhvivjuOvkvkvkvlvmuDuDalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvnvovovovovovovovpucucucucucucucucucucaAaAaAvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupupuouououpupupuqueunuourururururururuouqalalalajajajalalalaluGvrvsvtuRvuvvvwuVvxvyvzvAvBuJuDvCuFuDvDvEvFvGvHvIuOvkvkvkvJvKuOuDalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupuouououououpupuqueunuouourururururuououqalalalajajajalalalaluGvNvOvNuRuRvPuRuVuVuVvQuVuVuVvRvSvTuOvUvVvWvXvYvZuOuOuOuOwauOuOuDalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalunupupuouououououpupuqueunuouourururururuououqalalalajajajalalalaluGvNvOvNuRuRvPuRuVuVuVvQuVuVuVvRvSvTuOvUvVvWvXvYvZuOuOuOuOwauOuOuDalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalwbwcwdwdwdwdwdwdwdwdwdwewbwcwdwdwdwdwdwdwdwdwdwewbalalajajajalalalaluFwfwgwhwiwjwkwlwmwnwowpwowqwrwowswowtwuwvwwwxwowywzwwwowAwBwCwDuFalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalmuwEalalalalalalalalalwEmuwEalalalalalalalalalwEmualalajajajalalalaluNwFwGwHwIwJwKwLwMwNwOwPwQwQwRwQwSwQwTwUwQwVwQwQwQwWwXwYwZxawFwFuNalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalaluFxbxcxdxexexfxexexgxcxhxixjuFuFxkuFuFuDxlxmxnwFxoxoxpxqxoxrxnxsxtxualalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalxexexvxwxxxyxzxAxBxyxCxDxExexexFxGxHxIxJxoxoxKxLxKxoxMxNxOxoxPxLxQxoxoalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalxexexRxSxTxUxexVxWxXxexYxZyaybxexeycydyexoxoyfygyhyiyjxOykxOylymynyoypxoxoalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalxeyqyrysyryrxexeytxexeyuyvysywyxxeyyyzyAxoyByCyDyEyFyGxOykxOyHyIyJyKyKyLxoalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalxeyqyrysyryrxexeytxexeyuyvysywyxxeyyyzyAxoyBBjyDBByFyGxOykxOyHyIyJyKyKyLxoalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalxexexexexeyMysyryNyOyPyQyRyrysySxexexexexexoxoyTxOyKyUyVyWyXyYxOyZzazbzcyByBxoxoxoaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajalalalxezdzezfzgzhyrziysyszjysysziyrzkzlzfzezmxeznzozpzqyKzrzsztxOykxOzuzvzwyKxKzxzyxOxKuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajalalalalxezzzzzzzAzByszCzDzEzFzGzHzIzJzKzLzzzzzzxezMzNzOzPzQzRzSzTxOykxOzUzVzWzXxKxOxOzYxLuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajalalalalalalxezzzzzzzZAayrysyryrAbyryrysAcAdzlzzzzzzxeAeAfAfzqAgxOxOxOxOAhAiAiAjAiAiAkAiAlzYxKuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajajalalalalalalalxeAmAmAmAnAoyrysApAqArAsyrysAcAtAuAvAvAvxeAwAxAxAyzaAzAAAAABACADyKyKAEAFyBAGAHAIxouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajajalalalalalalalalalxezzzzzzAJAKyrysyryrALyryrysAcAMANzzzzzzxoAOAPAQAyAgxOxOxOARASATyXyXyXyXAUyXAVzYxKuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -AWAXaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajalalalalalalalalalalalxezzAYzzAZzBysBaBbBcBdzEBeBfBgzKBhzzzzzzxoBiyKBjBkBlBmBnBoARyKxOBpBqBrBsxKBtxOzYxLuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaCaJaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -AWAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajalalalalalalalalalalalalalxeBuBvzfBwBxyrziysysysysysziAcByBzzfBvBAxoBBBCyKAyyKBDBEBFARyKxOBGBHBIyKxKxOBJBKxKuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +AWAXaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajajalalalalalalalalalalalxezzAYzzAZzBysBaBbBcBdzEBeBfBgzKBhzzzzzzxoBiyKDrBkBlBmBnBoARyKxOBpBqBrBsxKBtxOzYxLuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaCaJaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +AWAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajajalalalalalalalalalalalalalxeBuBvzfBwBxyrziysysysysysziAcByBzzfBvBAxoDsBCyKAyyKBDBEBFARyKxOBGBHBIyKxKxOBJBKxKuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM AWAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajajalalalalalalalalalalalalalalalxexexexexeBLysyrysyryryrysyrBgBMxexexexexoxoxoBNBOyKBPAABQBRBSyXBTyVBUBVyBBWxoxoxouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM AWAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalalalalalalalalalalalalalalalxeBXyrysBYBZCaCbCcCdCaCeCfCgChCiCjCkClClxoCmCnCoCpyKyGARCqxOyHyKyKCrCsCtxouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaCaJaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM AWCuCuAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalCvCwCwCvalalalalalalalalalalalalalalalalalalxexeCxyrxeCyCzCAAmCBCCCDxeyrCExexeClCluexoxoCFCGyBxKxKCHyBCIxKxKyBCsCJxoxouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM @@ -1664,15 +1666,15 @@ AWAXAXAXAXCuAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtN aaafAXAXAXCuCuCuAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXDeCwCwCXCuCuCuCuAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXalalxeDfzzzzAmzzzzDgxealalalalalalalalalalalxoxOzYzYDhzYzYDixouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafAXAXAXAXCuCuAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXCuDeCwCwCXAXAXCuCuCuCuCuCuCuCuCuCuCuCuCuCuCuCuCuAXAXAXxeDjDjDjxexexexexealalalalalalalalalaluyxoxKxLxKxoxKxLxKxouyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXCuCuCuCuCKCwCwCLAXAXAXAXAXAXAXAXAXCuCuCuAXCuCuCuCuCuCuCuAXAXAXalalalalalalalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafaftNtNtNtNAXAXAXAXAXAXAXAXAXCuCuAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXCuCuAXAXAXCKCwCwCLAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafaftNtNtNtNAXAXAXAXAXAXAXAXAXCuCuAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXCuCuAXAXAXCKCwCwCLAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXalalalalalalaluyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNAXAXAXAXAXAXCuCuCuAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXAXAXAXCKCwCwCLAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXCuCuCuCuCuAXAXAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafaftNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXCuCuCuAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXAXAXAXtNCvCwCwCvtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafaftNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXCuCuCuAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXAXAXAXtNCvCwCwCvtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNajajtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXCuCuCuCuCuCuAXAXAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXCuCuCuAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXCuCuAXAXAXAXAXtNtNtNtNtNtNtNajajajtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpAXAXAXAXAXAXAXCuCuCuCuCuCuCuAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXCuCuAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXCuCuAXAXAXAXtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXCuCuAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXCuCuAXAXAXAXtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXCuCuCuCuAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXCuCuCuAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXCuAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXCuAXAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajajtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXCuCuAXAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXCuCuAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXCuCuAXAXAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalalAXAXAXAXAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXCuCuCuAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXCuCuAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalalalAXAXAXCuCuAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXCuAXAXAXuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyuyvLvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafaftNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNAXAXAXAXCuCuAXAXAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNaFalalalalalalalalalalalalalalalalAXAXAXCuCuCuAXAXAXtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXCuAXAXAXvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM @@ -1692,20 +1694,20 @@ aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvptNtNtNtNtN aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvptNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNDmtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuCuAXAXAXvpvpvpvpvpvpajajajajajajajajajttajajajvpvpvpvpvpvpvpvpvpvpajajvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvptNtNtNtNtNtNtNtNtNtNtNtNtNDmtNtNtNtNtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajajajajajajajajajajajajajvpvpvpvpajajajajajajajajajvpvpvpvpvpvpvpvpvpvpAXAXCuCuCuAXAXvpvpvpvpajajajajajajvpvpvpvpvpDkvMDnDnDnDnDnDnDnDnDnDnDnvpajajvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvptNtNtNDmtNtNtNtNtNtNtNtNtNvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajvpvpvpvpvpvpCvDoDoDpDpDpDoDoDqCvajajajajvpvpvpvpvpvpvpvpDkvMDnDnDnDnDnDnDnDnDnDnDnDnajajvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpajajajCwCwCwCwCwCwCwCwCwCwajajvpvpvpvpvpvpvpvpvpvpDkvMDnDnDnDnDnDnDnDnDnDnDnDnvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUcUcUaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpajajajCwCwCwCwCwCwCwCwCwCwajajvpvpvpvpvpvpvpvpvpvpDkvMDnDnDnDnDnDnDnDnDnDnDnDnvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUcUcUaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajCwCwCwCwCwCwCwCwCwCwajvpvpvpvpvpvpvpvpvpvpvpDkvpDnDnDnDnDnDnDnDnDnDnDnDnvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpCvDrDsDsDtDtDtDsDsCvvpvpvpvpvpvpvpvpvpvpvpvpDkvpDnDnDnDnDnDnDnDnDnDnDnvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUaDaDaDDuDvDvDvutaDaDaDaDcUcUcUcUcUcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpAXAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvMvMvMvMvMvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUaDaDDuDwvqvqvqusDvutaDaDaDaDcUcUcUcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUaDaDaHvqvMvMvqvqvqusDvutaDaDaDaDcUcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUaDaDaDaHvqvqvMvMvMvqvqvqusutaDaDaDaDcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUaDaDaDDuDwvqvqvMvMvMvMvMvqvqusDvutaDaDcUcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuAXAXAXvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqaCaLaJaDaDaDcUcUcUaDaDDuDwvqvqvMvMvpvpvpvMvqvqvqvqaGaDaDaDcUcUaM -aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqaCaLaLaLaJaDaDaDaDaDcUcUcUaDaDaHvqvqvMvMvpvpvpvpvMvMvMvMvqusutaDaDaDcUaM -aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXAXvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqaLaLaLaJaDaDaDaDaDaDaDaDaDcUcUcUcUaDaKaEvqvMvMvMvpvpvpvpvMvMvMvMvqusutaDaDaDaM -aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMAXAXaDaDaDaDaDaDaDaDaDaDaDaDaDaDcUcUcUaDaDaKaEvqvMvMvMvMvpvpvpvpvMvMvMvqusutaDaDaM -aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMAXAXAXAXAXaDaDaDaDDuDvDvDvDvDvDvutaDaDcUcUcUaDaDaDaKaEvqvqvMvMvMvMvMvMvMvMvMvqvqaGaDaDaM -aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXAXvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXaDaDDuDvDwvqvqvqvqvqvqaGaDaDaDcUcUcUaDaDaDaKaEvqvqvMvMvMvMvMvMvqvqvqvqaGaDaDaM -aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXAXAXvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXAXAXDvDvDwvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUaDaDaDaKaLaEvqvqvqvqvqvqvqaCaLaLaJaDaDaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpCvDtDuDuDvDvDvDuDuCvvpvpvpvpvpvpvpvpvpvpvpvpDkvpDnDnDnDnDnDnDnDnDnDnDnvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUaDaDaDDIDwDwDwuuaDaDaDaDcUcUcUcUcUcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpAXAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvMvMvMvMvMvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUaDaDDIEavqvqvquvDwuuaDaDaDaDcUcUcUcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUaDaDaHvqvMvMvqvqvquvDwuuaDaDaDaDcUcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUaDaDaDaHvqvqvMvMvMvqvqvquvuuaDaDaDaDcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUaDaDaDDIEavqvqvMvMvMvMvMvqvquvDwuuaDaDcUcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuAXAXAXvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqaCaLaJaDaDaDcUcUcUaDaDDIEavqvqvMvMvpvpvpvMvqvqvqvqaGaDaDaDcUcUaM +aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqaCaLaLaLaJaDaDaDaDaDcUcUcUaDaDaHvqvqvMvMvpvpvpvpvMvMvMvMvquvuuaDaDaDcUaM +aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXAXvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqaLaLaLaJaDaDaDaDaDaDaDaDaDcUcUcUcUaDaKaEvqvMvMvMvpvpvpvpvMvMvMvMvquvuuaDaDaDaM +aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMAXAXaDaDaDaDaDaDaDaDaDaDaDaDaDaDcUcUcUaDaDaKaEvqvMvMvMvMvpvpvpvpvMvMvMvquvuuaDaDaM +aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuCuAXAXvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMAXAXAXAXAXaDaDaDaDDIDwDwDwDwDwDwuuaDaDcUcUcUaDaDaDaKaEvqvqvMvMvMvMvMvMvMvMvMvqvqaGaDaDaM +aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXAXvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXaDaDDIDwEavqvqvqvqvqvqaGaDaDaDcUcUcUaDaDaDaKaEvqvqvMvMvMvMvMvMvqvqvqvqaGaDaDaM +aaafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXCuAXAXAXAXvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXAXAXDwDwEavqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUaDaDaDaKaLaEvqvqvqvqvqvqvqaCaLaLaJaDaDaM aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXAXAXAXAXvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUaDaDaDaDaKaLaLaLaLaLaLaLaJaDaDaDaDaDaM aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXvpvpvpvpvpDkvpvpvpvpvpvpvpAXAXAXAXAXAXAXAXAXAXAXvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUcUcUcUcUaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaM aaafafafvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpAXAXCuCuAXAXAXAXAXAXAXAXDlAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUcUcUaDaDaDaDaDaDaDaDaDaDaDaDcUcUcUaM @@ -1722,22 +1724,22 @@ aaafafvMvMvMvMvMvMvMvMvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDz aaafafvMvMvMvMvMvMvMvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMAXAXAXAXaDaKaEvqvqvqvqaCaJaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADAvMvMvMvMvMvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqAXAXAXaDaDaKaLaLaEvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADAvMvMvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDBvpDBvpCvCwCwCvvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqAXAXaDaDaDaDaDaKaLaJaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafDADADADADADAvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqusDvDvutaDaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafDADADADADADADADAvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxDxvpvpvpvpDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafDADADADADADADADADAvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqusDvutaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafDADADADADADAvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvquvDwDwuuaDaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafDADADADADADADADAvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxDxvpvpvpvpDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafDADADADADADADADADAvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvquvDwuuaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADAvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDxDxDxDCCwCwDDDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafDADADADADADADADADADADAvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDxDBvpDBvpCvCwCwCvvpvpvpDxDxDxDxDxDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafDADADADADADADADADADADADADAvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafDADADADADADADADADADADAvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxDxDxDBvpDBvpCvCwCwCvvpvpvpDxDxDxDxDxDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafDADADADADADADADADADADADADAvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADADADADADADADADzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADADADADADADADADADAvMvMDzDzDzDzvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvMvMvMDAvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADAvMvMvMvMvMvMvMvMvMvMDzDzDzDzDzDzDzDzDzDzDzDzvMvMvMvMvMvMvMvMvMvMvMvMvMDADADADADADEvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADAvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMDADADADADEDADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADAvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMDADADADADEDADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMDADADADEDADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvMvMDAvMvMvMDADADADADADEDADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvMvMDAvMvMvMDADADADADADEDADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM @@ -1750,44 +1752,44 @@ aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDxDxDxvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaagagagDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDFDFDFDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkttttttttDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDGDGDGDGDGDGDHDHDHDHDHDHDHDHDHDHDHDHDItLtLtLtLtLtLtLtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaagagagDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDFDFDFDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkttttttttDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDkDGDGDGDGDGDGDHDHDHDHDHDHDHDHDHDHDHDHEbtLtLtLtLtLtLtLtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMtMaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpajajajajajvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpvpvpvpvpDJDJDJvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAvpvpvpvpDJDJDJDJDJvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDJvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqusDvutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvquvDwuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusDvutaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDKDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvDwuuaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUaM aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUaM -aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDcUcUcUcUcUcUcUcUcUaM +aaafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDcUcUcUcUcUcUcUcUcUaM aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqaGaDaDaDaDaDcUcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusaDaDaDaDaDaDcUcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDcUcUcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDcUcUcUcUaM -aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusDvutaDaDaDaDaDcUcUcUaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaDaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaDaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusutaDaDaDaDaDaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusDvDvutaDaDaM -aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqusDvDvaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvaDaDaDaDaDaDcUcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDcUcUcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDcUcUcUcUaM +aaafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvDwuuaDaDaDaDaDcUcUcUaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaDaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaDaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvuuaDaDaDaDaDaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJDJvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvDwDwuuaDaDaM +aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJDJvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvquvDwDwaM aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqafafaa aaafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJvMvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqafafaa aaafafafafDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADEDADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADJDJDJDJDJDJDJDKDKDKDKDKDKDKDKDKDKDKDJvMvMvMvMDJDJDKDKDKDKDKDKDKDKDKDKDJDJDJDJDJDJDJvMvMvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpDkvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvpvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvMvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqvqafafafaa @@ -1816,3 +1818,4 @@ aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafDADADADADA aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDVDMDWDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDJDJDKDKDJDJDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDVDMDWDQDQDQDQDQDQDQDQDQDQDQDQDQDQafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaa aaaaaaaaaaaaaaaaabababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDQDYDYDYDQDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDQDZDZDZDZDZDZDQDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDQDYDYDYDQDXDXDXDXDXDXDXDXDXDXDXDXDXababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababab "} + diff --git a/maps/southern_cross/southern_cross-4.dmm b/maps/southern_cross/southern_cross-4.dmm index 4688297ec4..3735a05ff8 100644 --- a/maps/southern_cross/southern_cross-4.dmm +++ b/maps/southern_cross/southern_cross-4.dmm @@ -1,700 +1,700 @@ -"aa" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/deep) -"ab" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/deep) -"ac" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) -"ad" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/normal) -"ae" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/normal) -"af" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) -"ag" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/unexplored/normal) -"ah" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"ai" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"aj" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"ak" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"al" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"am" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology) -"an" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"ao" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 24; pixel_y = 0; req_access = list(47)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"ap" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) -"ar" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) -"as" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"at" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"au" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/computer/guestpass{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"av" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) -"aw" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"ax" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"ay" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"az" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aA" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aB" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aC" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aD" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aE" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aF" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 2"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"aG" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"aH" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"aI" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly) -"aK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"aL" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"aM" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"aN" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"aO" = (/obj/structure/disposaloutlet{dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"aP" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"aQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/table/rack,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"aR" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aS" = (/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aT" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aU" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aV" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aW" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) -"aX" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Research Access Button"; pixel_x = 26; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"aY" = (/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"aZ" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"ba" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bb" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bc" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bd" = (/obj/structure/sign/warning/nosmoking_2,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"be" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bf" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bg" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bh" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/closet/crate,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bi" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{pixel_x = -32},/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1397; id_tag = "xenoarch2_airlock_control"; name = "Research Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "xenoarch2_airlock_exterior"; tag_interior_door = "xenoarch2_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"bq" = (/obj/machinery/shower{pixel_y = 3},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology) -"br" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/anomaly) -"bs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bt" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bx" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"by" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bz" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bA" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bD" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bE" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bF" = (/obj/effect/floor_decal/corner/purple{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bG" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"bI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"bJ" = (/obj/machinery/space_heater,/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"bL" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bN" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bO" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"bP" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bQ" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light/small,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bR" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Long Term Storage"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bS" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) -"bT" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/suspension_gen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bU" = (/obj/machinery/suspension_gen,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bV" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bX" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northleft,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bY" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northright,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) -"bZ" = (/obj/structure/table/steel,/obj/item/device/suit_cooling_unit,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/obj/item/device/suit_cooling_unit,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) -"ca" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep) -"cb" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cd" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"ce" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/obj/structure/window/reinforced,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cf" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cg" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"ch" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"ci" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"ck" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 2"; dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cl" = (/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 2"; dir = 4},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cn" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/powered/scrubber/huge,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly) -"co" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"cp" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cs" = (/obj/structure/bed,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"ct" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cu" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cv" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/cave) -"cw" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"cx" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint) -"cy" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/deep) -"cz" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep) -"cA" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/medical) -"cB" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"cC" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"cD" = (/obj/structure/table/rack,/obj/machinery/firealarm{pixel_y = 24},/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"cE" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical) -"cF" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"cG" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"cH" = (/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"cI" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) -"cJ" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cK" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cL" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"cM" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cN" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cO" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cP" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cQ" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cR" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"cS" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"cT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cW" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"cX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"cY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"cZ" = (/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"da" = (/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"db" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"de" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"df" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dg" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"di" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dj" = (/obj/structure/table/standard,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dk" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dl" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dn" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"do" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a) -"dp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"dq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"dr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) -"ds" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep) -"dt" = (/obj/machinery/door/airlock/voidcraft{name = "Wilderness Containment"},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"du" = (/obj/structure/bed/chair/office/light,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/table/standard,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/item/weapon/storage/box/cups,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_research{name = "Outpost Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dC" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) -"dD" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"dE" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dF" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dG" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"dH" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"dI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/button/remote/blast_door{id = "xenoarch_cell2"; name = "Cell 2"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dJ" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) -"dK" = (/obj/machinery/computer/crew,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/device/defib_kit/loaded,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch First-Aid"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dM" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/firstaid/adv{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/o2{pixel_x = 0; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) -"dN" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/medical) -"dO" = (/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dQ" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/device/taperecorder,/obj/item/weapon/folder,/obj/item/weapon/stamp,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"dR" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dT" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"dU" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dV" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/sterile/latex,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dW" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"dX" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dY" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"dZ" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"ea" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eb" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ec" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ed" = (/obj/machinery/artifact_analyser,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ee" = (/obj/machinery/door/blast/regular{id = "xenoarch_cell2"},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ef" = (/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/surface/outpost/wall/checkpoint) -"eg" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint) -"eh" = (/obj/item/weapon/banner/nt,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"ei" = (/obj/item/weapon/banner/nt,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) -"ej" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical) -"ek" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"el" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"em" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning,/obj/item/device/camera_film{pixel_x = 2; pixel_y = 2},/obj/item/device/camera,/obj/machinery/recharger,/obj/item/weapon/tape_roll,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Crew Area"; dir = 8},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) -"en" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology) -"eo" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"ep" = (/obj/structure/table/reinforced,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_access = null; req_one_access = null},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eq" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"es" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"et" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ev" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ew" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"ex" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/banner/virgov,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) -"ey" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/outpost/research/xenoarcheology) -"ez" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 1"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eB" = (/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eG" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/device/camera,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/tape_roll,/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"eJ" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eK" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eL" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"eM" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) -"eQ" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/rust/part_rusted1,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eS" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eT" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Research Access Button"; pixel_x = -6; pixel_y = -26; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"eU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "xenoarch1_airlock_control"; name = "Research Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "xenoarch1_airlock_exterior"; tag_interior_door = "xenoarch1_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eW" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eY" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"eZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fa" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fb" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fc" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) -"fd" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) -"fe" = (/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"ff" = (/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"fg" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) -"fh" = (/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) -"fi" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fj" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_b) -"fk" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"fl" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/status_display{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) -"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fp" = (/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fr" = (/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"ft" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fu" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) -"fv" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) -"fw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fx" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fy" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fz" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fA" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fB" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fC" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fD" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/smes) -"fE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) -"fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) -"fG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Generator Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"fH" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) -"fI" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fJ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fK" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) -"fL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fM" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fN" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fO" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fP" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"fR" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fS" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fU" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"fV" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Xenoarch"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"fW" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"fX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/random/tool,/obj/random/tool,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"fZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"ga" = (/obj/machinery/atmospherics/binary/pump/on{dir = 2; target_pressure = 200},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gb" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/obj/random/maintenance/clean,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gc" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) -"gd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/restroom) -"ge" = (/obj/machinery/door/airlock{name = "Research Restroom"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 1"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"gg" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"gh" = (/obj/machinery/atmospherics/unary/heater{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"gi" = (/obj/machinery/atmospherics/unary/freezer{dir = 1; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"gj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) -"gk" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c) -"gl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"gm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"gn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) -"go" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) -"gp" = (/obj/structure/table/steel,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/cell_charger,/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"gq" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"gr" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) -"gs" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/structure/cable/heavyduty{icon_state = "2-4"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) -"gt" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) -"gu" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable/heavyduty{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gw" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gx" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; target_pressure = 200},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gy" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gz" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gA" = (/obj/structure/table/steel,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gB" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gC" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gD" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gE" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/restroom) -"gF" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/analysis) -"gG" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"gH" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"gI" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/analysis) -"gJ" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/analysis) -"gK" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"gL" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal) -"gM" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) -"gN" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gQ" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gR" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 7; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gS" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 8},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"gT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gV" = (/obj/structure/table/standard,/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/random/soap,/obj/random/soap,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"gW" = (/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 9},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"gX" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"gY" = (/obj/effect/floor_decal/corner/beige{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"gZ" = (/obj/effect/floor_decal/corner/lime{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Sample Preparation"; dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"ha" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hb" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hc" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"he" = (/obj/machinery/space_heater,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hf" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hg" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 50},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hh" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hi" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hj" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 5; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hk" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"hm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"hn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"ho" = (/obj/machinery/chemical_dispenser/full,/obj/structure/sign/warning/nosmoking_2{pixel_x = -32},/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hp" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hr" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/window/westright,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hs" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"ht" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hu" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Emergency Storage"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hw" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hx" = (/obj/item/weapon/weldpack,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hy" = (/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hz" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{ icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hA" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hB" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hC" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 6; tag_north = 1; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hD" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hE" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"hF" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"hG" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) -"hH" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hI" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hJ" = (/obj/effect/floor_decal/corner/beige,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hK" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hL" = (/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hM" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hN" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"hP" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hS" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hT" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) -"hV" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/beige/full,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hW" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hX" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) -"hY" = (/obj/machinery/radiocarbon_spectrometer,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) -"hZ" = (/obj/structure/table/glass,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) -"ia" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) -"ib" = (/obj/machinery/radiocarbon_spectrometer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) -"ic" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/suit_cooling_unit,/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) -"id" = (/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) -"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal) -"if" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) -"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) -"ih" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) -"ii" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"im" = (/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"in" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"io" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"ip" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iq" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"ir" = (/obj/machinery/mining/brace,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"is" = (/obj/machinery/mining/drill,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"it" = (/obj/vehicle/train/cargo/engine,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iu" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iv" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iw" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/heavyduty{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"ix" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iy" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iz" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) -"iA" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) -"iB" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxcwcwcwcxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyczczczaaaaaaaaaaaaaaaaaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcXcZcYcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcZcZcZcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsacabababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababefdtegdtefabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsacacababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacehcZcZcZexacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacaccZcZcZacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacgoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacgoababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabacacacacababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababacacacacababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacgoabacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababgoacacacabababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacgoabababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacabacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacababababacacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababacacacacacacacacacabababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababacacacacacacababacacacabababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababacacacacacacacababacacacacababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacabababababababababababababababababababacacacacgoacacacabababacacacacababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababacacacabababababababababababababababababacacacacacabacacacababababacacacacacacababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababacacababababababababababababababababacacacacababacacacabababababacacacacacacacababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacababababababababababababacacababababababababababababababacacacacacababacacacababababababababacacacacacacacababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababacacacacabababacacacababababababababababacacacacacacacabacgoababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababababababababababababababababababababababababacacacacacabababacacacababababababababababababacacacacacacacacababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababacacacacacabababacacacabababababababababababababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababababababababababababababababababababababababababacacacacababababacacacabababababababababababababababababacacgoacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababacacacacabababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababacacacacabababacacacacabababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababacacabacacababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababababacacacababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacacababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacacabababababababababababababababababababacacacacabacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacacabababababababababababababababababababacacacababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacacababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacabababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacabababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacgoacacabababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa -aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacabababababababababababababababababababababababababababababababababababababacgrdsdsdsababababababababaa -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafigaeaeaeaeaeaeaeaeaeaeafafafafafigaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeigafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeafafafaeaeaeafafafaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeafafaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeafagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafafafafaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeafafafaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafifaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafgLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeafafaeaeafgLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafafaeaeafafafafafaeaeaeaegLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeafafafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeafafafafafafafafafafafafafafaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafifaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeafifafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeahaiaiajajaiahafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeafafafafafahakaiajalakahafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeafafafafafafahamanaoamamahafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeapaqapapapaqarapasatauavawaxavavaxayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeapapazaAaBaCaDaEapaFaGaHavaIaJaKaLaMaNaOaPaQayayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapaRaSaTaUaTaVaWapanaXamavaYaZbabbbcbdbebfbgbhayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapbiaTbjbkblaTbmbnbobpbqbrbsbtbubububvbwbxbybzayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeafaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbAaTbBbCbDbEbFbGbHbIbJbKbLbMbNbObNaNbPbQbRbSayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbTbUbVbWbXbYbZcacbcccdavcebMcfcgchaNayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapapapapapapapapapcicjckavclcmcncncocpcqcrcsctcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecviigqgpdDiicvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinimimimimimioafafafaecAdadbdccEdddedfandgdhdiaxdjdkdkdldmdndodpdqdrcuafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafaeaecAdudvdwdxdydzdAamandBandCdGdEdFihdHdIcucucucucudJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaecAdKdLdMdNdOdPdQcIdRdSdTaxdUdVdWdXdYdZeaebecedeedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimitiqafafafeicAdNdNcAejekelemeneodSdTbKepbNbNeqereseteueveweedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyanezeAaneBeBeCeDeEeFdSdTaxeGeHeIeJeKeLeMeNeOePeedJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimiuiqafafafeyeQeReSeTeUeVeWeXeYeZfafbfcfdfefffgfhfifjfjfjfjfjdJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyamfkflamfmfnfofpfqfrfsftaxfudkdkfvfwfxfyfzfAfBfCafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimimiqafafafeifDfDfDfDfEfFfGfHfDfIfJfKfLfMfNfOfPfQesfRfSfTfUfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaffDfVfWfXfYfZgagbgcgdgegdavgfggghgibNgjgkglgmgnfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeivimimiwixixiygsgtgtgtgugvgwgwgxgygzgAgdgBgCgDgEgFgGgFgFgHgIgJgKgKgKgKafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecvizizcvizizcvgMafafaffDgNgwgOgPgQgRgSgdgTgUgVgdgWgXgYgZhahbhchdhehfgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhggwgOhhhihjhkgdhlhmhngdhohphqhrhshthuhvhwhxgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhygwhzhAhBhChDgdhEhFhGgdhHhIhJhKhLhMhLhdhNhOgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDfDhPhQhRhShThUfDgEgEgEgJhVhWhXhYhZiaibhdicgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaefDfDfDfDfDfDfDfDaeaeaegJgJgFgJgJgFgJgJgKgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeidafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead -adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadieiAiAiAadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadiBiBiBadadadadadadadadad -"} +"aa" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/deep) +"ab" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/deep) +"ac" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) +"ad" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/normal) +"ae" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/normal) +"af" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) +"ag" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/unexplored/normal) +"ah" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"ai" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"aj" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"ak" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"al" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"am" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology) +"an" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"ao" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 24; pixel_y = 0; req_access = list(47)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"ap" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) +"ar" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) +"as" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"at" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"au" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/computer/guestpass{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"av" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) +"aw" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"ax" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"ay" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"az" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aA" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aB" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aC" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aD" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aE" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aF" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 2"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"aG" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"aH" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"aI" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly) +"aK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"aL" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"aM" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"aN" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"aO" = (/obj/structure/disposaloutlet{dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"aP" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"aQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/table/rack,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"aR" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aS" = (/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aT" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aU" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aV" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aW" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) +"aX" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Research Access Button"; pixel_x = 26; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"aY" = (/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"aZ" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"ba" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bb" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bc" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bd" = (/obj/structure/sign/warning/nosmoking_2,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"be" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bf" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bg" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bh" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/closet/crate,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bi" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{pixel_x = -32},/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1397; id_tag = "xenoarch2_airlock_control"; name = "Research Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "xenoarch2_airlock_exterior"; tag_interior_door = "xenoarch2_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"bq" = (/obj/machinery/shower{pixel_y = 3},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology) +"br" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/anomaly) +"bs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bt" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bx" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"by" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bz" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bA" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bD" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bE" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bF" = (/obj/effect/floor_decal/corner/purple{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bG" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"bI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"bJ" = (/obj/machinery/space_heater,/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"bL" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bN" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bO" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"bP" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bQ" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light/small,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bR" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Long Term Storage"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bS" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage) +"bT" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/suspension_gen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bU" = (/obj/machinery/suspension_gen,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bV" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bX" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northleft,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bY" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northright,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) +"bZ" = (/obj/structure/table/steel,/obj/item/device/suit_cooling_unit,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/obj/item/device/suit_cooling_unit,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep) +"ca" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep) +"cb" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cd" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"ce" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/obj/structure/window/reinforced,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cf" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cg" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"ch" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"ci" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"ck" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 2"; dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cl" = (/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 2"; dir = 4},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cn" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/powered/scrubber/huge,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly) +"co" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"cp" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cs" = (/obj/structure/bed,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"ct" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cu" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cv" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/cave) +"cw" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"cx" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint) +"cy" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/deep) +"cz" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep) +"cA" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/medical) +"cB" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"cC" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"cD" = (/obj/structure/table/rack,/obj/machinery/firealarm{pixel_y = 24},/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"cE" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical) +"cF" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"cG" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"cH" = (/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"cI" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology) +"cJ" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cK" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cL" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"cM" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cN" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cO" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cP" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cQ" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cR" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"cS" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"cT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cW" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"cX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"cY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"cZ" = (/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"da" = (/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"db" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"de" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"df" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dg" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"di" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dj" = (/obj/structure/table/standard,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dk" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dl" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dn" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"do" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a) +"dp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"dq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"dr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a) +"ds" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep) +"dt" = (/obj/machinery/door/airlock/voidcraft{name = "Wilderness Containment"},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"du" = (/obj/structure/bed/chair/office/light,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/table/standard,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/item/weapon/storage/box/cups,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_research{name = "Outpost Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dC" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) +"dD" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"dE" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dF" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dG" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"dH" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"dI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/button/remote/blast_door{id = "xenoarch_cell2"; name = "Cell 2"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dJ" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) +"dK" = (/obj/machinery/computer/crew,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/device/defib_kit/loaded,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch First-Aid"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dM" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/firstaid/adv{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/o2{pixel_x = 0; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical) +"dN" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/medical) +"dO" = (/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dQ" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/device/taperecorder,/obj/item/weapon/folder,/obj/item/weapon/stamp,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"dR" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dT" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"dU" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dV" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/sterile/latex,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dW" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"dX" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dY" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"dZ" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"ea" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eb" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ec" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ed" = (/obj/machinery/artifact_analyser,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ee" = (/obj/machinery/door/blast/regular{id = "xenoarch_cell2"},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ef" = (/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/surface/outpost/wall/checkpoint) +"eg" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint) +"eh" = (/obj/item/weapon/banner/nt,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"ei" = (/obj/item/weapon/banner/nt,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) +"ej" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical) +"ek" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"el" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"em" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning,/obj/item/device/camera_film{pixel_x = 2; pixel_y = 2},/obj/item/device/camera,/obj/machinery/recharger,/obj/item/weapon/tape_roll,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Crew Area"; dir = 8},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology) +"en" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology) +"eo" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"ep" = (/obj/structure/table/reinforced,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_access = null; req_one_access = null},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eq" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"es" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"et" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ev" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ew" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"ex" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/banner/virgov,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint) +"ey" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/outpost/research/xenoarcheology) +"ez" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 1"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eB" = (/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eG" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/device/camera,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/tape_roll,/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"eJ" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eK" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eL" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"eM" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b) +"eQ" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/rust/part_rusted1,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eS" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eT" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Research Access Button"; pixel_x = -6; pixel_y = -26; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"eU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "xenoarch1_airlock_control"; name = "Research Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "xenoarch1_airlock_exterior"; tag_interior_door = "xenoarch1_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eW" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eY" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"eZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fa" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fb" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fc" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly) +"fd" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) +"fe" = (/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"ff" = (/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"fg" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) +"fh" = (/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly) +"fi" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fj" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_b) +"fk" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"fl" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/status_display{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology) +"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fp" = (/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fr" = (/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"ft" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fu" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) +"fv" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly) +"fw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fx" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fy" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fz" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fA" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fB" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fC" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fD" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/smes) +"fE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) +"fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) +"fG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Generator Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"fH" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) +"fI" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fJ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fK" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology) +"fL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fM" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fN" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fO" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fP" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"fR" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fS" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fU" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"fV" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Xenoarch"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"fW" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"fX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/random/tool,/obj/random/tool,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"fZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"ga" = (/obj/machinery/atmospherics/binary/pump/on{dir = 2; target_pressure = 200},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gb" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/obj/random/maintenance/clean,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gc" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes) +"gd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/restroom) +"ge" = (/obj/machinery/door/airlock{name = "Research Restroom"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 1"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"gg" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"gh" = (/obj/machinery/atmospherics/unary/heater{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"gi" = (/obj/machinery/atmospherics/unary/freezer{dir = 1; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"gj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly) +"gk" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c) +"gl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"gm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"gn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c) +"go" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) +"gp" = (/obj/structure/table/steel,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/cell_charger,/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"gq" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"gr" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep) +"gs" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/structure/cable/heavyduty{icon_state = "2-4"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) +"gt" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) +"gu" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable/heavyduty{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gw" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gx" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; target_pressure = 200},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gy" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gz" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gA" = (/obj/structure/table/steel,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gB" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gC" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gD" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gE" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/restroom) +"gF" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/analysis) +"gG" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"gH" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"gI" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/analysis) +"gJ" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/analysis) +"gK" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"gL" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal) +"gM" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) +"gN" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gQ" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gR" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 7; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gS" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 8},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"gT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gV" = (/obj/structure/table/standard,/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/random/soap,/obj/random/soap,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"gW" = (/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 9},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"gX" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"gY" = (/obj/effect/floor_decal/corner/beige{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"gZ" = (/obj/effect/floor_decal/corner/lime{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Sample Preparation"; dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"ha" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hb" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hc" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"he" = (/obj/machinery/space_heater,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hf" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hg" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 50},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hh" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hi" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hj" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 5; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hk" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"hm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"hn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"ho" = (/obj/machinery/chemical_dispenser/full,/obj/structure/sign/warning/nosmoking_2{pixel_x = -32},/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hp" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hr" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/window/westright,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hs" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"ht" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hu" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Emergency Storage"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hw" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hx" = (/obj/item/weapon/weldpack,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hy" = (/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hz" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{ icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hA" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hB" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hC" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 6; tag_north = 1; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hD" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hE" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"hF" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"hG" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom) +"hH" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hI" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hJ" = (/obj/effect/floor_decal/corner/beige,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hK" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hL" = (/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hM" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hN" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"hP" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hS" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hT" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes) +"hV" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/beige/full,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hW" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hX" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) +"hY" = (/obj/machinery/radiocarbon_spectrometer,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) +"hZ" = (/obj/structure/table/glass,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) +"ia" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) +"ib" = (/obj/machinery/radiocarbon_spectrometer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) +"ic" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/suit_cooling_unit,/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) +"id" = (/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal) +"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal) +"if" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) +"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) +"ih" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly) +"ii" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"im" = (/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"in" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"io" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"ip" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iq" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"ir" = (/obj/machinery/mining/brace,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"is" = (/obj/machinery/mining/drill,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"it" = (/obj/vehicle/train/engine,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iu" = (/obj/vehicle/train/trolley,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iv" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iw" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/heavyduty{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"ix" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iy" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iz" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave) +"iA" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal) +"iB" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal) +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxcwcwcwcxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyczczczaaaaaaaaaaaaaaaaaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcXcZcYcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcZcZcZcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsacabababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababefdtegdtefabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsacacababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacehcZcZcZexacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacaccZcZcZacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacgoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacgoababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabacacacacababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababacacacacababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacgoabacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababgoacacacabababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacgoabababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacabacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacababababacacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababacacacacacacacacacabababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababacacacacacacababacacacabababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababacacacacacacacababacacacacababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacabababababababababababababababababababacacacacgoacacacabababacacacacababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababacacacabababababababababababababababababacacacacacabacacacababababacacacacacacababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababacacababababababababababababababababacacacacababacacacabababababacacacacacacacababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacababababababababababababacacababababababababababababababacacacacacababacacacababababababababacacacacacacacababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababacacacacabababacacacababababababababababacacacacacacacabacgoababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababababababababababababababababababababababababacacacacacabababacacacababababababababababababacacacacacacacacababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababacacacacacabababacacacabababababababababababababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababababababababababababababababababababababababababacacacacababababacacacabababababababababababababababababacacgoacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababacacacacabababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababacacacacabababacacacacabababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababacacabacacababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababababacacacababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacacababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacacabababababababababababababababababababacacacacabacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacacabababababababababababababababababababacacacababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacacababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacabababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacabababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacgoacacabababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa +aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacabababababababababababababababababababababababababababababababababababababacgrdsdsdsababababababababaa +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafigaeaeaeaeaeaeaeaeaeaeafafafafafigaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeigafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeafafafaeaeaeafafafaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeafafaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeafagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafafafafaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeafafafaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafifaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafgLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeafafaeaeafgLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafafaeaeafafafafafaeaeaeaegLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeafafafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeafafafafafafafafafafafafafafaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafifaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeafifafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeahaiaiajajaiahafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeafafafafafahakaiajalakahafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeafafafafafafahamanaoamamahafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeapaqapapapaqarapasatauavawaxavavaxayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeapapazaAaBaCaDaEapaFaGaHavaIaJaKaLaMaNaOaPaQayayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapaRaSaTaUaTaVaWapanaXamavaYaZbabbbcbdbebfbgbhayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapbiaTbjbkblaTbmbnbobpbqbrbsbtbubububvbwbxbybzayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeafaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbAaTbBbCbDbEbFbGbHbIbJbKbLbMbNbObNaNbPbQbRbSayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbTbUbVbWbXbYbZcacbcccdavcebMcfcgchaNayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapapapapapapapapapcicjckavclcmcncncocpcqcrcsctcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecviigqgpdDiicvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinimimimimimioafafafaecAdadbdccEdddedfandgdhdiaxdjdkdkdldmdndodpdqdrcuafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafaeaecAdudvdwdxdydzdAamandBandCdGdEdFihdHdIcucucucucudJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaecAdKdLdMdNdOdPdQcIdRdSdTaxdUdVdWdXdYdZeaebecedeedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimitiqafafafeicAdNdNcAejekelemeneodSdTbKepbNbNeqereseteueveweedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyanezeAaneBeBeCeDeEeFdSdTaxeGeHeIeJeKeLeMeNeOePeedJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimiuiqafafafeyeQeReSeTeUeVeWeXeYeZfafbfcfdfefffgfhfifjfjfjfjfjdJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyamfkflamfmfnfofpfqfrfsftaxfudkdkfvfwfxfyfzfAfBfCafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimimiqafafafeifDfDfDfDfEfFfGfHfDfIfJfKfLfMfNfOfPfQesfRfSfTfUfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaffDfVfWfXfYfZgagbgcgdgegdavgfggghgibNgjgkglgmgnfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeivimimiwixixiygsgtgtgtgugvgwgwgxgygzgAgdgBgCgDgEgFgGgFgFgHgIgJgKgKgKgKafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecvizizcvizizcvgMafafaffDgNgwgOgPgQgRgSgdgTgUgVgdgWgXgYgZhahbhchdhehfgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhggwgOhhhihjhkgdhlhmhngdhohphqhrhshthuhvhwhxgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhygwhzhAhBhChDgdhEhFhGgdhHhIhJhKhLhMhLhdhNhOgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDfDhPhQhRhShThUfDgEgEgEgJhVhWhXhYhZiaibhdicgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaefDfDfDfDfDfDfDfDaeaeaegJgJgFgJgJgFgJgJgKgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeidafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead +adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadieiAiAiAadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadiBiBiBadadadadadadadadad +"} + diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index c5874054a8..803541adeb 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -1176,7 +1176,7 @@ "wF" = (/obj/structure/table/steel_reinforced,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wG" = (/obj/structure/table/steel_reinforced,/obj/random/toolbox,/obj/random/toolbox,/obj/random/toolbox,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/merchant/home) -"wI" = (/obj/vehicle/train/cargo/engine,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) +"wI" = (/obj/vehicle/train/engine,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wJ" = (/turf/simulated/shuttle/floor/darkred,/area/shuttle/merchant/home) "wK" = (/obj/machinery/door/airlock/glass_medical{name = "Medical Bay"; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wL" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) @@ -1190,7 +1190,7 @@ "wT" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wU" = (/obj/structure/table/steel_reinforced,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/weldpack,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/merchant/home) -"wW" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) +"wW" = (/obj/vehicle/train/trolley,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wX" = (/obj/machinery/light,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wY" = (/obj/machinery/vending/medical{pixel_y = -32; req_access = null},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) "wZ" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/security) @@ -2026,11 +2026,11 @@ "MX" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_station/start) "MY" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "MZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Na" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nb" = (/obj/structure/flight_left,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nc" = (/obj/machinery/computer/shuttle_control/web/heist,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nd" = (/obj/structure/flight_right,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Ne" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/pirate,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Na" = (/obj/structure/flight_left,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nb" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nc" = (/obj/structure/flight_right,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nd" = (/obj/machinery/computer/shuttle_control/web/heist,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Ne" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/pirate,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Nf" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "skipjack_shuttle"; pixel_x = -24; req_access = list(150); tag_airpump = "vox_east_vent"; tag_chamber_sensor = "vox_east_sensor"; tag_exterior_door = "vox_northeast_lock"; tag_interior_door = "vox_southeast_lock"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Ng" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Nh" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) @@ -2044,10 +2044,10 @@ "Np" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) "Nq" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/obj/structure/table/steel,/obj/item/weapon/storage/box/frags,/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) "Nr" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Ns" = (/obj/machinery/light/small{dir = 8},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nt" = (/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nu" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Nv" = (/obj/machinery/light/small{dir = 4},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Ns" = (/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nt" = (/obj/machinery/light/small{dir = 8},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nu" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Nv" = (/obj/machinery/light/small{dir = 4},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Nw" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) "Nx" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Ny" = (/obj/machinery/porta_turret/ai_defense,/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) @@ -2061,7 +2061,7 @@ "NG" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_station/start) "NH" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) "NI" = (/obj/structure/table/rack,/obj/item/weapon/material/harpoon,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/random/rigsuit,/obj/random/multiple/voidsuit,/obj/random/multiple/voidsuit,/obj/random/energy,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"NJ" = (/obj/structure/table/rack,/obj/random/rigsuit,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"NJ" = (/obj/structure/table/rack,/obj/random/rigsuit,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "NK" = (/obj/structure/table/rack,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/random/multiple/voidsuit,/obj/random/multiple/voidsuit,/obj/random/energy,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "NL" = (/obj/structure/table/rack,/obj/item/clothing/mask/breath,/obj/machinery/light/small{dir = 8},/obj/random/multiple/voidsuit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "NM" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2084,7 +2084,7 @@ "Od" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Oe" = (/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/material/minihoe,/obj/item/weapon/beartrap,/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Of" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Og" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/obj/item/weapon/pinpointer/shuttle/heist,/obj/item/weapon/pinpointer/shuttle/heist,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Og" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/obj/item/weapon/pinpointer/shuttle/heist,/obj/item/weapon/pinpointer/shuttle/heist,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Oh" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Oi" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Oj" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2106,7 +2106,7 @@ "Oz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) "OA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) "OB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"OC" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"OC" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "OD" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/skipjack_station/start) "OE" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "OF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/syndicate_station/start) @@ -2130,10 +2130,10 @@ "OX" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "OY" = (/obj/machinery/floodlight,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "OZ" = (/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Pa" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Pb" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Pc" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Pd" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Pa" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Pb" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Pc" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Pd" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Pe" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Pf" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Pg" = (/obj/structure/flight_left{icon_state = "left"; dir = 8},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) @@ -2142,9 +2142,9 @@ "Pj" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "Pk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Pl" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) -"Pm" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Pn" = (/obj/structure/table/steel,/obj/item/clothing/glasses/regular,/obj/item/clothing/glasses/regular,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"Po" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Pm" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Pn" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"Po" = (/obj/structure/table/steel,/obj/item/clothing/glasses/regular,/obj/item/clothing/glasses/regular,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Pp" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "Pq" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Pr" = (/obj/item/weapon/tool/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2162,9 +2162,9 @@ "PD" = (/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) "PE" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) "PF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"PG" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"PH" = (/obj/structure/table/steel,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) -"PI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"PG" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"PH" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) +"PI" = (/obj/structure/table/steel,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "PJ" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "PK" = (/obj/machinery/light/small{dir = 1},/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "PL" = (/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) @@ -2182,7 +2182,7 @@ "PX" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "PY" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/skipjack_station/start) "PZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qa" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Qa" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Qb" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "Qc" = (/obj/machinery/door/airlock/voidcraft{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "Qd" = (/obj/machinery/door/window{dir = 8; name = "Cell"; req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) @@ -2195,7 +2195,7 @@ "Qk" = (/obj/structure/table/standard,/obj/item/weapon/handcuffs/legcuffs,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) "Ql" = (/obj/structure/table/standard,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) "Qm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qn" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start) +"Qn" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor/darkred,/area/skipjack_station/start) "Qo" = (/obj/structure/table/standard,/obj/item/weapon/surgical/circular_saw{pixel_y = 8},/obj/item/weapon/surgical/hemostat,/obj/item/weapon/surgical/scalpel,/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "Qp" = (/obj/structure/toilet{dir = 4},/obj/machinery/flasher{id = "syndieflash"; pixel_x = -28; pixel_y = 0},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "Qq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/syndicate_station/start) @@ -2241,7 +2241,7 @@ "Re" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/space) "Rf" = (/turf/unsimulated/wall{icon = 'icons/misc/title.dmi'; icon_state = "title"},/area/space) "Rg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/simulated/mineral,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2471,17 +2471,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdIdaaaaaaaaMdMeMeMfaaaaaaaaaaaaaaaaaaaaaaaaaaMdMeMeMfaaaaIdIdIdIdIdIdIdabIdIdIdIdIdIdIdIdIdaaaaaaaaaaaaaaaaaaMnMhMhMoaaaaaaaaaaaaMpMpMqMrMsMpMpMpMpMpMpMpaaaaaaIdIdIdIdIdIdIdIdIdabaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtMuMvMtaaaaaaMtaaaaaaaaaaMtaaaaaaMtMwMxMtaaaaIdIdIdIdIdIdIdabIdIdIdIdIdIdIdIdIdaaaaaaaaaaaaaaaaaaMpMzMzMpaaaaaaMpMpMpMpMAMBMBMBMBMBMCMpMDMEMFaaaaaaaaIdIdIdIdIdIdIdIdabaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtMGMHMtaaaaaaMtMIMJMJMJMKMtaaaaaaMtMLMMMtaaaaaaaaIdIdIdIdIdabIdIdIdIdIdIdIdIdaaaaaaaaaaaaMpMpMpMpMNMOMPMQMRMSMpMpMTMUMpMVMBMBMBMBMBMWMpMDMEMXaaaaaaaaaaIdIdIdIdIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtMYMZMtaaaaMtMtNaNbNcNdNeMtMtaaaaMtNfNgMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdIdIdaaaaaaaaaaMpMpMpMBMBNhNiNjNkNlNmNnNnNoNpMBMpNqMBMBMBMpMpMpMpMDMEMXaaaaaaaaaaIdIdIdIdIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtNrMtMtaaaaMtMtNsNtNuNtNvNwMtaaaaMtMtNxMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdIdaaaaaaaaMpMpMpMpNyMBMBMpNzNANAMQNBMBMBMBMBNyMpNCMBMBNDMpNENFMpMDMENGaaaaaaaaaaaaIdIdIdIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtNHNIMtMtMtMtNJNtNtNtNtNtNJMtMtMtMtNKNMMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdaaaaaaaaMpMpNNNOMpMBMBNPMpNQNRNSNTMpNUNVMBMBMpMpMpNWMBNXNYNZOaMpMpMpMpMpaaaaaaaaaaaaIdIdIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdaaaaaaaaaaaaMtObOcOdOeOfMtOgNtNtNtNtNtOgMtOhOiOjOcObMtaaaaaaaaaaIdIdIdIdabIdIdIdIdaaaaaaaaaaOkOlMBOmMpMBMBOnMpOoOpOpOqMpMpMpMpOrMpOsMpMSOrMpMpNZOtMpOuOvOwMpMpaaaaaaaaaaIdIdIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtMYMZMtaaaaMtMtNbNaNdNcNeMtMtaaaaMtNfNgMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdIdIdaaaaaaaaaaMpMpMpMBMBNhNiNjNkNlNmNnNnNoNpMBMpNqMBMBMBMpMpMpMpMDMEMXaaaaaaaaaaIdIdIdIdIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtNrMtMtaaaaMtMtNtNsNuNsNvNwMtaaaaMtMtNxMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdIdaaaaaaaaMpMpMpMpNyMBMBMpNzNANAMQNBMBMBMBMBNyMpNCMBMBNDMpNENFMpMDMENGaaaaaaaaaaaaIdIdIdIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdIdaaaaaaaaaaMtNHNIMtMtMtMtNJNsNsNsNsNsNJMtMtMtMtNKNMMtaaaaaaaaaaIdIdIdIdabIdIdIdIdIdaaaaaaaaMpMpNNNOMpMBMBNPMpNQNRNSNTMpNUNVMBMBMpMpMpNWMBNXNYNZOaMpMpMpMpMpaaaaaaaaaaaaIdIdIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIdIdaaaaaaaaaaaaMtObOcOdOeOfMtOgNsNsNsNsNsOgMtOhOiOjOcObMtaaaaaaaaaaIdIdIdIdabIdIdIdIdaaaaaaaaaaOkOlMBOmMpMBMBOnMpOoOpOpOqMpMpMpMpOrMpOsMpMSOrMpMpNZOtMpOuOvOwMpMpaaaaaaaaaaIdIdIdIdIdabaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxIdaaaaaaaaaaaaaaMtObOcOcOcOyMtOzOAOBOCOzOAOBMtNLOcOcOEObMtaaaaaaaaaaIdIdIdIdabIdIdIdIdaaaaaaaaaaOFOGOpOHMpMBMBNPMpOIOpOpOJMpMBOKOLOpMBMBMBOKOpMBMpMpMpMpNZNZNZOMMpMpaaaaaaaaaaIdIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaOOObOcOcOcOcOCNtNtNtNtNtNtNtOCOcOcOPOcObOOaaaaaaaaaaaaIdIdIdabIdIdIdIdaaaaaaaaaaOFOQOROpOSOpOpOpOSOpOpOpOpOSOpOpOpOpOpOTOpOpOpNZNZNZNZOUNZNZNZNZOVMpaaaaaaaaaaaaIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaOWOXOcOYOZOcMtPaPbNtNtNtPcPdMtOcPeOcPfObOWaaaaaaaaaaaaIdIdIdabIdIdIdaaaaaaaaaaaaOFPgOpPhMpMBMBNPMpOIOpOpOJMpMBNWMBOpMBMBMBNWOpMBMpMpMpMpPiNZNZPjMpMpaaaaaaaaaaaaIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaPkOXOcOcMtPlMtMtMtPmPnPoMtMtMtPpMtPqPrPsPkaaaaaaaaaaaaaaIdIdabIdIdIdaaaaaaaaaaaaPtPuMBPvMpMBMBOnMpOoOpOpOqMpMpMpMpOrMpPwMpMSOrMpMpPxPxMpPyPzPAMpMpaaaaaaaaaaaaaaIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaMtMtPBPCPCMtPDPEPDPFPGPHPIPFPJPKPLMtPMPNPOMtMtaaaaaaaaaaaaIdIdabIdIdaaaaaaaaaaaaaaMpMpPPPQMpMBMBNPMpPRMBMBPRMpPSPTMpMBMpMpMpPUOpPVOpPWPXMpMpMpMpMpaaaaaaaaaaaaaaaaIdIdIdabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaMtMtPYPYMtMtPDPDPDPZPGQaPIPZPLPLQbMtMtPYPYMtMtaaaaaaaaaaaaIdIdabIdIdaaaaaaaaaaaaaaaaMpMpMpMpNyMBMBMpMpMpQcMpMpNZNZQdMBNPMpQeQfOpOpQgQhQiMpMDMEMFaaaaaaaaaaaaaaaaaaaaIdIdabaaaa -aaaaabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaMtODODMtMtQkQlPDQmQnNtQnQmPLPLQoMtMtODODMtaaaaaaaaaaaaaaIdIdabIdaaaaaaaaaaaaaaaaaaaaaaMpMpMpMBMBMBMpNENZMpQpNZNZQqQrQsMpOpOpOpOpQtQuQvMpMDMEMXaaaaaaaaaaaaaaaaaaaaIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaOOObOcOcOcOcOCNsNsNsNsNsNsNsOCOcOcOPOcObOOaaaaaaaaaaaaIdIdIdabIdIdIdIdaaaaaaaaaaOFOQOROpOSOpOpOpOSOpOpOpOpOSOpOpOpOpOpOTOpOpOpNZNZNZNZOUNZNZNZNZOVMpaaaaaaaaaaaaIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaOWOXOcOYOZOcMtPaPbNsNsNsPdPcMtOcPeOcPfObOWaaaaaaaaaaaaIdIdIdabIdIdIdaaaaaaaaaaaaOFPgOpPhMpMBMBNPMpOIOpOpOJMpMBNWMBOpMBMBMBNWOpMBMpMpMpMpPiNZNZPjMpMpaaaaaaaaaaaaIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaPkOXOcOcMtPlMtMtMtPmPoPnMtMtMtPpMtPqPrPsPkaaaaaaaaaaaaaaIdIdabIdIdIdaaaaaaaaaaaaPtPuMBPvMpMBMBOnMpOoOpOpOqMpMpMpMpOrMpPwMpMSOrMpMpPxPxMpPyPzPAMpMpaaaaaaaaaaaaaaIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaMtMtPBPCPCMtPDPEPDPFPGPIPHPFPJPKPLMtPMPNPOMtMtaaaaaaaaaaaaIdIdabIdIdaaaaaaaaaaaaaaMpMpPPPQMpMBMBNPMpPRMBMBPRMpPSPTMpMBMpMpMpPUOpPVOpPWPXMpMpMpMpMpaaaaaaaaaaaaaaaaIdIdIdabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaMtMtPYPYMtMtPDPDPDPZPGQaPHPZPLPLQbMtMtPYPYMtMtaaaaaaaaaaaaIdIdabIdIdaaaaaaaaaaaaaaaaMpMpMpMpNyMBMBMpMpMpQcMpMpNZNZQdMBNPMpQeQfOpOpQgQhQiMpMDMEMFaaaaaaaaaaaaaaaaaaaaIdIdabaaaa +aaaaabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaMtODODMtMtQkQlPDQmQnNsQnQmPLPLQoMtMtODODMtaaaaaaaaaaaaaaIdIdabIdaaaaaaaaaaaaaaaaaaaaaaMpMpMpMBMBMBMpNENZMpQpNZNZQqQrQsMpOpOpOpOpQtQuQvMpMDMEMXaaaaaaaaaaaaaaaaaaaaIdIdabaaaa aaaaabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaaaaaaaaaMtPDQwPDMtMtQxMtMtQyPLQzMtaaaaaaaaaaaaaaaaaaaaIdIdIdabIdaaaaaaaaaaaaaaaaaaaaaaaaaaMpMpMpMpMpQAQBMpMpMSMpMpQCQDMpQEOpOpOpQFOpQGMpMDMEMXaaaaaaaaaaaaaaaaaaaaIdIdabaaaa aaaaabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaaaaaaaaaMtPDPDQHMtQIQJQKMtPLPLQLMtaaaaaaaaaaaaaaaaaaaaIdIdIdabIdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMpMpMpMpaaaaaaMpMpMpMpQMQNOpQOQPQQQRMpQSMENGaaaaaaaaaaaaaaaaaaBrBrIdabaaaa aaaaabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaaaaaaaaaaaaaaaaaaaaaaaaMtMtQTPDMtQUQJQVMtQWQXMtMtaaaaaaaaaaaaaaaaaaaaIdIdIdabIdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMpMpQYQZRaMpMpMpMpMpMpMpaaaaaaaaaaaaaaaaBrBraaIdabaaaa @@ -2499,3 +2499,4 @@ aaaaRfababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/maps/southern_cross/southern_cross_defines.dm b/maps/southern_cross/southern_cross_defines.dm index 701539a46a..3d46a3d87b 100644 --- a/maps/southern_cross/southern_cross_defines.dm +++ b/maps/southern_cross/southern_cross_defines.dm @@ -261,3 +261,16 @@ Z_LEVEL_SURFACE_WILD, Z_LEVEL_TRANSIT ) + +//Suit Storage Units + +/obj/machinery/suit_cycler/exploration + name = "Explorer suit cycler" + model_text = "Exploration" + req_one_access = list(access_pilot,access_explorer) + +/obj/machinery/suit_cycler/pilot + name = "Pilot suit cycler" + model_text = "Pilot" + req_access = null + req_one_access = list(access_pilot,access_explorer) \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm index 4ffd4a2fab..79440f618f 100644 --- a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm @@ -6,18 +6,18 @@ "af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) "ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) "ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"ai" = (/obj/random/landmine,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aj" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"ai" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aj" = (/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"al" = (/obj/structure/lattice,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"al" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle) "an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) "ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"ap" = (/obj/item/stack/rods,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aq" = (/obj/structure/door_assembly/door_assembly_ext,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"ap" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aq" = (/obj/item/weapon/material/shard,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) "as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"at" = (/obj/structure/loot_pile/maint/technical,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"at" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) @@ -26,11 +26,11 @@ "az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) "aB" = (/obj/structure/largecrate/animal/crashedshuttle,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"aC" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aD" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) "aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"aG" = (/obj/item/weapon/circuitboard/broken,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aG" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) "aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) @@ -40,21 +40,22 @@ "aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) "aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle) -"aQ" = (/obj/item/clothing/suit/space/cult,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle) "aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"aV" = (/obj/effect/decal/remains/robot,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aV" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aX" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aY" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aZ" = (/obj/item/clothing/head/helmet/space/cult,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aX" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aY" = (/obj/item/clothing/suit/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aZ" = (/obj/effect/decal/remains/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"ba" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bd" = (/obj/item/weapon/material/knife/ritual,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"be" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"bf" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bd" = (/obj/item/clothing/head/helmet/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"be" = (/obj/item/weapon/material/knife/ritual,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bf" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle) "bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) @@ -68,7 +69,8 @@ "bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bt" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bt" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bu" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) "bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) "bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle) @@ -77,42 +79,43 @@ "bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) "bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) "bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bD" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bG" = (/obj/structure/reagent_dispensers/fueltank,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bG" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) "bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) "bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) "bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bM" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) "bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaahaaaaaaaianaaaaaaaaaaaaaaajaaaaaaaa -aaaaabacaaaaaaaaaaaaaaaaalaaaPaPaaamaaaaaaaaaaaaaa -aaaaacaaaaadaaaaaaaaaialaPaPaPadaPaaaaaaapaaaaaaaa -aaaaaaaaauaqakaracacataCacacananacabaaaaaaaaaaaaaa -aaaDaGaaadaoaaadadaiaGbHbyayadadaWacabaaaaaaaaaaaa -aaaQaaaRacaaadadaValbIbybIazbbadaNacanbJaaaaaaaaaa -aaaaaYaZbdalalaladadadbIadadauadaNaAaeaTanaaaaapaa -acaaaaaaaladauadadadacacaSacanadavacbhaeaeahaaaaaa -aPadaDaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa -aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoalaaaa -aPbxaDaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabeaa -aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaabfaa -aPaPadaaaJalbIadadaPaPadadadadadadacaeaeaeahaaaaaa +aaaaaaaaaaaaaaaiaaaaaaajanaaaaaaaaaaaaaaalaaaaaaaa +aaaaabacaaaaaaaaaaaaaaaaapaaaPaPaaaqaaaaaaaaaaaaaa +aaaaacaaaaadaaaaaaaaajapaPaPaPadaPaaaaaaataaaaaaaa +aaaCaaaaauaDakaracacaGaQacacananacabaaaaaaaaaaaaaa +aaaVaXaaadaoaaadadajaXbHbyayadadaWacabaaaaaaaaaaaa +aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa +aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa +acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa +aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa +aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoapaaaa +aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa +aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa +aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa -aPacaaaaamaladaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa +aPacaaaaamapadaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa -aaaaaGaRaaacaXalaoaKanananacacaranabaPaPaabgaaaaaa -acaaaaaaaPaPaaaoaaaaalalaPaPaPalaPaPaaaaaaaaaaaaaa -aaaGaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa -aabtaabgaaataaaaaaaabDbmboaabmbgaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaadaLaaaabmbGbMbmbmaaaaaaaaaaaaaaaaaaaa -aaaaadadaaaaaaacaPbCbmbmbmaaaiaaaaaaaaaaaaaaaaaaaa +aaaaaXbtaaacbuapaoaKanananacacaranabaPaPaabgaaaaaa +acaaaaaaaPaPaaaoaaaaapapaPaPaPapaPaPaaaaaaaaaaaaaa +aaaXaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa +aabDaabgaaaGaaaaaaaabGbmboaabmbgaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa +aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa "} diff --git a/maps/submaps/surface_submaps/mountains/digsite.dmm b/maps/submaps/surface_submaps/mountains/digsite.dmm index b2e4bb9ce4..3c777b71f6 100644 --- a/maps/submaps/surface_submaps/mountains/digsite.dmm +++ b/maps/submaps/surface_submaps/mountains/digsite.dmm @@ -1,63 +1,64 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite) -"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite) -"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"n" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"s" = (/turf/simulated/wall,/area/submap/cave/digsite) -"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite) +"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite) +"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"n" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"s" = (/turf/simulated/wall,/area/submap/cave/digsite) +"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaa -aaabbbbbbbbbbbbbbbaa -aabccccccccdccccceea -abccffcfffghgcficcea -abcfffcffjggfcfffcea -abcfkflffggfffffmcea -abcfffcffffffgfffcea -abccffcffffffgnfccea -abbccccclccfhccggeea -abbbbboeffffepqeeeea -abbbbbbeeeeeeeeeeeea -abbbbbbpeeeeeqereeea -abbbbsteeuveeeerbeea -abbbbwxeyzAeqeBbbbea -abbbbCgeyDEeeeeFbbba -abeeGHgeqIJeeeqbbbba -aeeeKeeeeLMeeeNbbeaa -aaeeeeeeeeeeeeNeeeaa -aaaaaeeeeeeeeeeeeaaa -aaaaaaaaaaaaaaaaaaaa -"} +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaa +aaabbbbbbbbbbbbbbbaa +aabccccccccdccccceea +abccffcfffghgcficcea +abcfffcffjggfcfffcea +abcfkflffggfffffmcea +abcfffcffffffgfffcea +abccffcffffffgnfccea +abbccccclccfhccggeea +abbbbboeffffepqeeeea +abbbbbbeeeeeeeeeeeea +abbbbbbpeeeeeqereeea +abbbbsteeuveeeerbeea +abbbbwxeyzAeqeBbbbea +abbbbCgeyDEeeeeFbbba +abeeGHgeqIJeeeqbbbba +aeeeKeeeeLMeeeNbbeaa +aaeeeeeeeeeeeeNeeeaa +aaaaaeeeeeeeeeeeeaaa +aaaaaaaaaaaaaaaaaaaa +"} + diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm index 565fac90bf..5d0739cbcf 100644 --- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm @@ -1,146 +1,147 @@ -"aa" = (/turf/template_noop,/area/template_noop) -"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aA" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aC" = (/obj/item/weapon/material/knife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aL" = (/obj/structure/table/standard,/obj/item/clothing/head/helmet/space/emergency,/obj/item/weapon/paper{desc = "It looks old."; icon_state = "paper_words"; info = "Pilot's Log for Major Bill's Transportation Shuttle MBT-540
      Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
      V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
      Captain Willis 06:06:33: You too, control. Departing route Charlie.
      Captain Willis 06:06:48: ...Damn it.
      **
      Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
      Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
      06:12:31: A loud thud is heard.
      Captain Adisu 06:12:34: What the (Expletives)?
      Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
      Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
      Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
      Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
      **

      V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
      Captain Adisu 06:16:10: Understood.
      **
      V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
      Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
      V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
      **
      Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
      06:36:50: (Sound of emergency shutters closing)
      Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
      V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
      Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
      S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
      **
      Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming.
      "; item_state = "paper"; name = "Black Box Transcript MBT-540"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aA" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aL" = (/obj/structure/table/standard,/obj/item/clothing/head/helmet/space/emergency,/obj/item/weapon/paper{desc = "It looks old."; icon_state = "paper_words"; info = "Pilot's Log for Major Bill's Transportation Shuttle MBT-540
      Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
      V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
      Captain Willis 06:06:33: You too, control. Departing route Charlie.
      Captain Willis 06:06:48: ...Damn it.
      **
      Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
      Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
      06:12:31: A loud thud is heard.
      Captain Adisu 06:12:34: What the (Expletives)?
      Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
      Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
      Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
      Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
      **

      V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
      Captain Adisu 06:16:10: Understood.
      **
      V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
      Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
      V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
      **
      Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
      06:36:50: (Sound of emergency shutters closing)
      Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
      V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
      Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
      S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
      **
      Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming.
      "; item_state = "paper"; name = "Black Box Transcript MBT-540"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa -aaabababababaeafaeaeabaaaaabababababababadagahabaa -aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa -aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa -aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa -aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa -aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa -aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa -aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa -aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa -ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa -ababababbTabaeaeafaeababababbUabababababadagahaaaa -aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa -aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa -aaaaacababcgchcicjckclababcmabcbcbababababababaaaa -aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa +aaabababababaeafaeaeabaaaaabababababababadagahabaa +aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa +aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa +aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa +aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa +aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa +aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa +aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa +aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa +ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa +ababababbTabaeaeafaeababababbUabababababadagahaaaa +aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa +aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa +aaaaacababcgchcicjckclababcmabcbcbababababababaaaa +aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + diff --git a/maps/submaps/surface_submaps/plains/Field1.dmm b/maps/submaps/surface_submaps/plains/Field1.dmm index fdc4357179..9dcafe0400 100644 --- a/maps/submaps/surface_submaps/plains/Field1.dmm +++ b/maps/submaps/surface_submaps/plains/Field1.dmm @@ -4,8 +4,8 @@ "d" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) "e" = (/obj/structure/ore_box,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) "f" = (/obj/item/device/radio,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) -"g" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) -"h" = (/obj/vehicle/train/cargo/engine,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) +"g" = (/obj/vehicle/train/trolley,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) +"h" = (/obj/vehicle/train/engine,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) "i" = (/obj/item/device/flashlight,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1) (1,1,1) = {" diff --git a/maps/submaps/surface_submaps/plains/Thiefc.dmm b/maps/submaps/surface_submaps/plains/Thiefc.dmm index 9e7a5e0069..57a27da7c5 100644 --- a/maps/submaps/surface_submaps/plains/Thiefc.dmm +++ b/maps/submaps/surface_submaps/plains/Thiefc.dmm @@ -8,10 +8,10 @@ "h" = (/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "i" = (/obj/structure/closet/crate,/obj/item/weapon/lipstick,/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/random,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "j" = (/obj/structure/table/steel,/obj/item/weapon/beartrap,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) -"k" = (/obj/vehicle/train/cargo/trolley,/obj/random/firstaid,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) +"k" = (/obj/vehicle/train/trolley,/obj/random/firstaid,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "l" = (/obj/structure/closet/crate,/obj/item/weapon/folder/blue,/obj/item/weapon/folder/red,/obj/item/weapon/folder/white,/obj/item/weapon/folder/yellow,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "m" = (/obj/structure/table/steel,/obj/item/weapon/paper{desc = "This is some bullshit. First chance we got to knick something that looks half decent turns out to be mostly junk. And now we're getting calls that the other stash we've got has got a spider problem. Fuck this, Between the shitty weather, The pissed of bugs, And now apparently some NT goon running around in the area there's hardly enough reason to stick around. I'm telling Carl I'm out tommorow."; name = "Note"},/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) -"n" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) +"n" = (/obj/vehicle/train/trolley,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "o" = (/obj/structure/closet/crate,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) "p" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/practiceshells,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Thiefc) diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index 8f48951167..5bfa361b59 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -1,8 +1,13 @@ /area/submap name = "Submap Area" icon_state = "submap" + flags = RAD_SHIELDED ambience = AMBIENCE_RUINS +/area/submap/event //To be used for Events not for regular PoIs + name = "Unknown" + requires_power = FALSE + /area/submap/spider1 name = "spider nest" ambience = AMBIENCE_FOREBODING diff --git a/nano/js/nano_base_helpers.js b/nano/js/nano_base_helpers.js index 42b68b4f6e..e3258dd065 100644 --- a/nano/js/nano_base_helpers.js +++ b/nano/js/nano_base_helpers.js @@ -60,6 +60,9 @@ NanoBaseHelpers = function () ceil: function(number) { return Math.ceil(number); }, + abs: function(number) { + return Math.abs(number); + }, // Format a string (~string("Hello {0}, how are {1}?", 'Martin', 'you') becomes "Hello Martin, how are you?") string: function() { if (arguments.length == 0) diff --git a/nano/templates/comm_power_monitor.tmpl b/nano/templates/comm_power_monitor.tmpl new file mode 100644 index 0000000000..ffcd70ff2a --- /dev/null +++ b/nano/templates/comm_power_monitor.tmpl @@ -0,0 +1,76 @@ +

      Powernet Monitoring

      + +{{if data.currentTab == 0}} + + + +
      + {{:helper.link('Scan For Sensors', 'refresh', {'cartridge_topic' : 1, 'powernet_refresh' : 1})}} No active sensor. Printing sensor list. +
      +
      + + {{for data.powernet_monitoring}} + + {{empty}} + WARNING: No Sensors Detected! + {{/for}} +
      + {{if value.alarm}} + {{:helper.link(value.name, 'alert', {'switch_tab' : value.name, 'powernet_target' : value.name})}} + {{else}} + {{:helper.link(value.name, '' , {'switch_tab' : value.name, 'cartridge_topic' : 1, 'powernet_target' : value.name})}} + {{/if}} +
      +{{else}} + + + +
      + {{:helper.link('Show List', 'cancel', { 'switch_tab' : 0})}} Sensor selected: {{:data.currentTab}} +
      + {{if data.powernet_target.error}} + {{:data.powernet_target.error}} + {{else}} + +

      Network Information

      + {{for data.powernet_target.status :nodeValue:nodeIndex}} +
      +
      {{:nodeValue.field}}
      +
      {{:nodeValue.statval}}
      +
      + {{/for}} + + +

      Sensor Readings

      + + + + + + + + + + {{for data.powernet_target.apc_data :apcValue:apcIndex}} + + + + + + + + + {{empty}} + + {{/for}} +
      APC NameEquipmentLightingEnvironmentCell StatusAPC Load
      {{:apcValue.name}}{{:apcValue.s_equipment}}{{:apcValue.s_lighting}}{{:apcValue.s_environment}} + {{if apcValue.cell_status == "N"}} + {{:helper.link(apcValue.cell_charge + '%', 'batt_disc', null,'disabled', 'width75btn')}} + {{else apcValue.cell_status == "C"}} + {{:helper.link(apcValue.cell_charge + '%', 'batt_chrg', null,'disabled', 'width75btn')}} + {{else}} + {{:helper.link(apcValue.cell_charge + '%', 'batt_full', null,'disabled', 'width75btn')}} + {{/if}} + {{:apcValue.total_load}}
      No APCs detected in connected powernet.
      + {{/if}} +{{/if}} diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl index 8625a93ed0..41d81391bd 100644 --- a/nano/templates/communicator.tmpl +++ b/nano/templates/communicator.tmpl @@ -3,20 +3,6 @@ Title: Communicator UI Used In File(s): code\game\objects\items\devices\communicator\communicator.dm --> -
      -
      -
      - {{:data.time}} | - {{if data.connectionStatus == 1}} - - {{else}} - - {{/if}} - | {{:data.owner}} | {{:data.occupation}} -
      -
      -
      - {{if data.currentTab == 1}}
      @@ -32,10 +18,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{else data.currentTab == 2}}

      Manual Dial

      -
      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      -
      @@ -82,47 +65,51 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
      +

      Connection Management


      +

      External Connections

      - {{for data.voice_mobs}} -
      -
      - {{:value.name}} -
      -
      -
      {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
      -
      + {{for data.voice_mobs}} +
      +
      + {{:value.name}}
      - {{/for}} +
      +
      {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
      +
      +
      + {{/for}} +

      Internal Connections

      - {{for data.communicating}} -
      -
      - {{:value.name}} -
      -
      - {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}} - {{if data.video_comm == null}} - {{:helper.link('Start Video', 'signal-diag', {'startvideo' : value.ref})}} - {{else data.video_comm == value.ref}} - {{:helper.link('End Video', 'signal-diag', {'endvideo' : value.true_name}, null, 'redButton')}} - {{/if}} -
      + {{for data.communicating}} +
      +
      + {{:value.name}}
      - {{/for}} +
      + {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}} + {{if data.video_comm == null}} + {{:helper.link('Start Video', 'signal-diag', {'startvideo' : value.ref})}} + {{else data.video_comm == value.ref}} + {{:helper.link('End Video', 'signal-diag', {'endvideo' : value.true_name}, null, 'redButton')}} + {{/if}} +
      +
      + {{/for}} +

      Requests Received

      - {{for data.requestsReceived}} -
      -
      - {{:value.name}} -
      -
      -
      {{:value.address}}
      {{:helper.link('Accept', 'signal-diag', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}} -
      + {{for data.requestsReceived}} +
      +
      + {{:value.name}}
      - {{/for}} +
      +
      {{:value.address}}
      {{:helper.link('Accept', 'signal-diag', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}} +
      +
      + {{/for}}

      Invites Sent

      {{for data.invitesSent}} @@ -142,32 +129,28 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{else data.currentTab == 3}}

      Known Devices

      -
      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      - {{for data.knownDevices}} -
      -
      - {{:value.name}} -
      -
      -
      {{:value.address}}
      - {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}} - {{:helper.link('Call', 'phone', {'dial' : value.address, 'copy' : value.address, 'switch_tab' : 2})}} - {{:helper.link('Msg', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}} -
      + {{for data.knownDevices}} +
      +
      + {{:value.name}}
      - {{/for}} +
      +
      {{:value.address}}
      + {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}} + {{:helper.link('Call', 'phone', {'dial' : value.address, 'copy' : value.address, 'switch_tab' : 2})}} + {{:helper.link('Msg', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}} +
      +
      + {{/for}} {{else data.currentTab == 4}}

      Messaging

      -
      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      {{for data.imContacts}}
      @@ -184,9 +167,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{else data.currentTab == 40}}

      Conversation With: {{:data.targetAddressName}}

      -
      -
      {{:helper.link('Back', 'arrowreturnthick-1-w', {'switch_tab' : 4})}}

      @@ -207,14 +188,62 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
      - + {{else data.currentTab == 5}} -

      Note Keeper

      - +

      News

      +
      + + {{if data.feeds.length}} + +

      Recent News

      +
      + {{for data.latest_news}} +
      {{:value.channel}}
      + -{{:value.body}}
      + {{if value.has_image}} +
      + {{if value.caption}} + {{:value.caption}}
      + {{/if}} + {{/if}} + + {{:helper.link('Go to', 'arrow', {'newsfeed' : value.channel})}} + [{{:value.message_type}} by {{:value.author}} - {{:value.time_stamp}}] +
      + {{empty}} + {{/for}} +
      +
      + + +

      News Feeds

      +
      + {{for data.feeds}} +
      + {{:helper.link(value.name, 'arrow', {'newsfeed' : value.name})}} +
      + {{/for}} +
      + {{else}} + +
      +
      + Error +
      +
      + No weather reports available. Please try again later. +
      +
      + {{/if}} + + + +{{else data.currentTab == 6}} + +

      Note Keeper


      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      @@ -234,17 +263,15 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
      - + -{{else data.currentTab == 6}} +{{else data.currentTab == 7}}

      Weather

      -
      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      Current Conditions:

      {{#def.atmosphericScan}} - +

      Weather Reports:

      {{for data.weather}}
      @@ -269,21 +296,28 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
      {{/for}} - + -{{else data.currentTab == 7}} +{{else data.currentTab == 8}} + + {{#def.crewManifest}} + + + +{{else data.currentTab == 9}}

      Settings

      -
      -
      {{:helper.link('Home', 'home', {'switch_tab' : 1})}}

      Owner:
      -
      {{:data.owner}}
      {{:helper.link('Rename', 'pencil', {'rename' : 1})}} +
      + {{:data.owner}} +
      + {{:helper.link('Rename', 'pencil', {'rename' : 1})}}
      @@ -292,7 +326,9 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm Occupation:
      -
      {{:data.occupation}}
      +
      + {{:data.occupation}} +
      @@ -314,10 +350,15 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm Device EPv2 Address:
      -
      {{:data.address}}
      +
      + {{:data.address}} +
      -
      {{:helper.link('Visible', 'signal-diag', {'toggle_visibility' : 1}, data.visible ? 'selected' : null)}}{{:helper.link('Invisible', 'close', {'toggle_visibility' : 1}, data.visible ? null : 'selected')}}
      +
      + {{:helper.link('Visible', 'signal-diag', {'toggle_visibility' : 1}, data.visible ? 'selected' : null)}} + {{:helper.link('Invisible', 'close', {'toggle_visibility' : 1}, data.visible ? null : 'selected')}} +
      @@ -326,25 +367,39 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm Ringer:
      -
      {{:helper.link('On', 'volume-on', {'toggle_ringer' : 1}, data.ring ? 'selected' : null)}}{{:helper.link('Off', 'volume-off', {'toggle_ringer' : 1}, data.ring ? null : 'selected')}}
      +
      + {{:helper.link('On', 'volume-on', {'toggle_ringer' : 1}, data.ring ? 'selected' : null)}} + {{:helper.link('Off', 'volume-off', {'toggle_ringer' : 1}, data.ring ? null : 'selected')}} +
-
-
- Flashlight: + + +{{else data.currentTab == 10}} + +

External Plugin

+
+ + {{for data.cart_templates}} +
+ {{:helper.link(value.name, 'gear', {'switch_template' : value.template, 'switch_tab' : 0})}}
-
-
{{:helper.link(data.flashlight==1 ? 'Disable Flashlight' : 'Enable Flashlight', 'lightbulb', {'Light' : 1}, null,'fixedLeftWide')}}
-
-
- - - -{{else data.currentTab == 8}} - - - - - + {{empty}} + {{/for}} + {{if data.cart_devices}} +
+

Internal Devices

+ {{for data.cart_devices}} +
+
+ {{:value.name}} +
+
+
{{:helper.link('On', 'power', {'toggle_device' : value.index}, value.active ? 'selected' : null)}} + {{:helper.link('Off', 'stop', {'toggle_device' : value.index}, value.active ? null : 'selected')}}
+
+
+ {{/for}} + {{/if}} {{/if}} diff --git a/nano/templates/communicator_header.tmpl b/nano/templates/communicator_header.tmpl new file mode 100644 index 0000000000..63289ba181 --- /dev/null +++ b/nano/templates/communicator_header.tmpl @@ -0,0 +1,18 @@ +
+
+
+ {{:data.time}} | + {{if data.connectionStatus == 1}} + + {{else}} + + {{/if}} + | {{:data.owner}} | {{:data.occupation}} | +
+
+ {{:helper.link('Home', 'home', {'switch_tab' : 1, 'switch_template' : 'communicator.tmpl'})}} +
+
+
+ +{{#def.Body}} \ No newline at end of file diff --git a/nano/templates/crew_manifest.tmpl b/nano/templates/crew_manifest.tmpl index 00c45a1d5f..2246fefd26 100644 --- a/nano/templates/crew_manifest.tmpl +++ b/nano/templates/crew_manifest.tmpl @@ -1,5 +1,7 @@ - @@ -7,7 +9,6 @@ Copy-pasted from pda.tmpl

Crew Manifest


-
{{:helper.link('Home', 'home', {'switch_tab' : 1})}}

diff --git a/nano/templates/emp_records.tmpl b/nano/templates/emp_records.tmpl new file mode 100644 index 0000000000..16b5159039 --- /dev/null +++ b/nano/templates/emp_records.tmpl @@ -0,0 +1,23 @@ +

Employment Records

+{{if data.currentTab == "0"}} +
+ {{for data.emp_records}} +
+ {{:helper.link(value.name, '', {"switch_tab" : value.name})}} +
+ {{/for}} +
+{{/if}} +{{for data.emp_records}} + {{if value.name == data.currentTab}} +
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

+
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
+ {{/if}} +{{/for}} \ No newline at end of file diff --git a/nano/templates/gps_access.tmpl b/nano/templates/gps_access.tmpl new file mode 100644 index 0000000000..21b61b767a --- /dev/null +++ b/nano/templates/gps_access.tmpl @@ -0,0 +1,66 @@ +

Integrated GPS

+ + +{{if data.gps_status.enabled}} +
+ Area: {{:data.gps_status.my_area_name}}, {{:data.gps_status.curr_z_name}}
+ GPS Coordinates: ({{:data.gps_status.curr_x}}, {{:data.gps_status.curr_y}}) +
+{{else}} +
+ Error: Location data unavailable. No sensors online! +
+{{/if}} + + +
+ {{for data.gps_access}} +
+
+ {{:index}}: {{:value.tag}} +
+
+ {{:helper.link('On', 'power', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Power", 'value' : "1"}, value.power ? 'selected' : null)}} + {{:helper.link('Off', 'stop', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Power", 'value' : "0"}, value.power ? null : 'selected')}} + {{:helper.link('Edit Tag', 'power', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Tag", 'user' : data.user})}} + {{if value.power}} + {{if value.long_range}} +
+ + {{:helper.string("Long range scanning is {0}.", value.local_mode ? "disabled" : "active")}} + {{:helper.link('Enable', 'power', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Long_Range", 'value' : "0"}, value.long_range_en ? 'selected' : null)}} + {{:helper.link('Disable', 'stop', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Long_Range", 'value' : "1"}, value.long_range_en ? null : 'selected')}} + {{/if}} + {{if value.can_hide}} +
+ {{:helper.string("{0}", value.hide_signal ? "Broadcasting location" : "Receiving only ")}} + {{:helper.link('Broadcast', 'power', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Hide_Signal", 'value' : "1"}, value.hide_signal ? 'selected' : null)}} + {{:helper.link('Receive', 'stop', {'cartridge_topic' : "1", 'gps_target' : value.ref, 'gps_action' : "Hide_Signal", 'value' : "0"}, value.hide_signal ? null : 'selected')}} + {{/if}} + {{/if}} +
+
+ {{empty}} + {{/for}} +
+ + +{{if data.gps_status.enabled}} +
+ {{for data.gps_signal}} +
+
+ {{:value.gps_tag}} +
+
+ Coordinates: ({{:value.x}}, {{:value.y}}) +
+ Area: {{:value.area_name}}, {{:value.z_name}} + {{if value.local}} + {{:helper.string("Distance: {0}m {1} - {2}m {3}, {4}m {5}", value.distance < 0 ? 0 : value.distance, value.direction, helper.abs(value.distY), ((value.distY > 0) ? "N" : "S"), helper.abs(value.distX), ((value.distX > 0) ? "E" : "W"))}} + {{/if}} +
+
+ {{/for}} +
+{{/if}} \ No newline at end of file diff --git a/nano/templates/janitorialLocator.tmpl b/nano/templates/janitorialLocator.tmpl new file mode 100644 index 0000000000..d476b7def4 --- /dev/null +++ b/nano/templates/janitorialLocator.tmpl @@ -0,0 +1,11 @@ +

Janitorial Supply Locator

+{{for data.janidata}} +
+
+ {{:value.field}} +
+
+ {{:value.val}} +
+
+{{/for}} \ No newline at end of file diff --git a/nano/templates/manifest.tmpl b/nano/templates/manifest.tmpl new file mode 100644 index 0000000000..00c45a1d5f --- /dev/null +++ b/nano/templates/manifest.tmpl @@ -0,0 +1,27 @@ + + +

Crew Manifest

+ +
+
{{:helper.link('Home', 'home', {'switch_tab' : 1})}}

+ +
+
+ {{for data.manifest}} + {{if value.elems.length}} + + {{for value.elems :itemValue:itemIndex}} + + + + + + {{/for}} + {{/if}} + {{/for}} +
{{:value.cat}}
{{:itemValue.name}}{{:itemValue.rank}}{{:itemValue.active}}
+
diff --git a/nano/templates/med_records.tmpl b/nano/templates/med_records.tmpl new file mode 100644 index 0000000000..f24339a779 --- /dev/null +++ b/nano/templates/med_records.tmpl @@ -0,0 +1,23 @@ +

Medical Records

+{{if data.currentTab == "0"}} +
+ {{for data.med_records}} +
+ {{:helper.link(value.name, '', {"switch_tab" : value.name})}} +
+ {{/for}} +
+{{/if}} +{{for data.med_records}} + {{if value.name == data.currentTab}} +
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

+
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
+ {{/if}} +{{/for}} \ No newline at end of file diff --git a/nano/templates/merc_blast_door_control.tmpl b/nano/templates/merc_blast_door_control.tmpl new file mode 100644 index 0000000000..ec323ce081 --- /dev/null +++ b/nano/templates/merc_blast_door_control.tmpl @@ -0,0 +1,23 @@ +

Shuttle Blast Door Control

+ +
+ {{:helper.link('Open all doors', 'radio-on', {'cartridge_topic' : 1, 'all_blast_doors' : "open"})}} + {{:helper.link('Close all doors', 'radio-off', {'cartridge_topic' : 1, 'all_blast_doors' : "close"})}} +
+
+ {{:helper.link('Scan for doors', 'refresh', {'cartridge_topic' : 1, 'scan_blast_doors' : 1})}} +
+ +{{for data.blast_door}} +
+
+ {{:value.name}} #{{:index}} +
+
+ {{:helper.link('On', 'radio-on', {'cartridge_topic' : 1, 'toggle_blast_door' : value.ref}, value.open ? 'selected' : null)}} + {{:helper.link('Off', 'radio-off', {'cartridge_topic' : 1, 'toggle_blast_door' : value.ref}, value.open ? null : 'selected')}} +
+
+{{empty}} +

No doors detected!

+{{/for}} \ No newline at end of file diff --git a/nano/templates/pda.tmpl b/nano/templates/pda.tmpl index 04ee2abfd9..e8911f7b9b 100644 --- a/nano/templates/pda.tmpl +++ b/nano/templates/pda.tmpl @@ -295,24 +295,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{else data.mode== 41}} -
-
- {{for data.manifest}} - {{if value.elems.length}} - - {{for value.elems :itemValue:itemIndex}} - - - - - - {{/for}} - {{/if}} - {{/for}} - - -
{{:value.cat}}
{{:itemValue.name}}{{:itemValue.rank}}{{:itemValue.active}}
-
+ {{#def.crewManifest}} {{else data.mode == 3}} diff --git a/nano/templates/sec_bot_access.tmpl b/nano/templates/sec_bot_access.tmpl new file mode 100644 index 0000000000..49214cb97f --- /dev/null +++ b/nano/templates/sec_bot_access.tmpl @@ -0,0 +1,36 @@ +

Security Bot Control

+ +{{if data.currentTab == 0}} + + +
+ Select A Bot. +
+
+ {{for data.sec_bot_access}} +
+ {{:helper.link(value.bot, 'gear', {'switch_tab' : value.bot})}} +
+ {{empty}} +

No bots found.

+ {{/for}} +
+ +{{else}} + + + {{for data.sec_bot_access}} + {{if value.bot == data.currentTab}} + {{for value.status :statVal:statIndex}} +
+
+ {{:statVal.tab}} +
+
+ {{:statVal.val}} +
+
+ {{/for}} + {{/if}} + {{/for}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/sec_records.tmpl b/nano/templates/sec_records.tmpl new file mode 100644 index 0000000000..f644289061 --- /dev/null +++ b/nano/templates/sec_records.tmpl @@ -0,0 +1,23 @@ +

Security Records

+{{if data.currentTab == "0"}} +
+ {{for data.sec_records}} +
+ {{:helper.link(value.name, '', {"switch_tab" : value.name})}} +
+ {{/for}} +
+{{/if}} +{{for data.sec_records}} + {{if value.name == data.currentTab}} +
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

+
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
+ {{/if}} +{{/for}} \ No newline at end of file diff --git a/nano/templates/signaler_access.tmpl b/nano/templates/signaler_access.tmpl new file mode 100644 index 0000000000..86220f07cb --- /dev/null +++ b/nano/templates/signaler_access.tmpl @@ -0,0 +1,24 @@ +

Signaler Control

+ + +{{for data.signaler_access}} +
+
+ {{:index}} +
+
+ {{:helper.link('Pulse', 'arrowstop-1-n', {'cartridge_topic' : "1", 'signaler_target' : value.ref, 'signaler_action' : "Pulse"})}} +
+
+ {{for value.status :statVal:statIndex}} +
+
+ {{:statVal.tab}} +
+
+
{{:statVal.val}}
+
{{:helper.link('Edit', 'gear', {'cartridge_topic' : "1", 'signaler_target' : value.ref, 'signaler_action' : "Edit", 'signaler_value' : statVal.tab, 'user' : data.user})}}
+
+
+ {{/for}} +{{/for}} \ No newline at end of file diff --git a/nano/templates/stat_display_access.tmpl b/nano/templates/stat_display_access.tmpl new file mode 100644 index 0000000000..20655bb709 --- /dev/null +++ b/nano/templates/stat_display_access.tmpl @@ -0,0 +1,57 @@ +

Station Status Display Interlink

+ +
+
+ Code +
+
+ {{:helper.link('Clear Message', 'trash', {'cartridge_topic' : "1", 'stat_display' : "blank"}, (data.stat_display.active == "blank") ? 'selected' : null)}} + {{:helper.link('Clear Alert', 'alert', {'cartridge_topic' : "1", 'choice' : "Status", 'stat_display' : "alert", 'alert' : "default"}, (data.stat_display.active == "default") ? 'selected' : null)}} +
+
+
+
+ Message +
+
+ {{:helper.link('Shuttle ETA', 'gear', {'cartridge_topic' : "1", 'stat_display' : "shuttle"}, (data.stat_display.active == "shuttle") ? 'selected' : null)}} + {{:helper.link('Set Message', 'gear', {'cartridge_topic' : "1", 'stat_display' : "message"}, (data.stat_display.active == "message") ? 'selected' : null)}} +
+
+
+
+ Alert +
+
+ {{:helper.link('Red Alert', 'alert', {'cartridge_topic' : "1", 'choice' : "Status", 'stat_display' : "alert", 'alert' : "redalert"}, (data.stat_display.active == "redalert") ? 'selected' : null)}} + {{:helper.link('Lockdown', 'caution', {'cartridge_topic' : "1", 'choice' : "Status", 'stat_display' : "alert", 'alert' : "lockdown"}, (data.stat_display.active == "lockdown") ? 'selected' : null)}} + {{:helper.link('Biohazard', 'radiation', {'cartridge_topic' : "1", 'choice' : "Status", 'stat_display' : "alert", 'alert' : "biohazard"}, (data.stat_display.active == "biohazard") ? 'selected' : null)}} +
+
+{{if data.stat_display.line1 != data.stat_display.active_line1 || data.stat_display.line2 != data.stat_display.active_line2}} +
+
+ Active Message: +
+
+ {{:data.stat_display.active_line1}}
+ {{:data.stat_display.active_line2}} +
+
+{{/if}} +
+
+ Stored line 1 +
+
+ {{:helper.link(data.stat_display.line1 + ' (set)', 'pencil', {'cartridge_topic' : "1", 'stat_display' : "setmsg", 'line' : "1"}, null, null)}} +
+
+
+
+ Stored line 2 +
+
+ {{:helper.link(data.stat_display.line2 + ' (set)', 'pencil', {'cartridge_topic' : "1", 'stat_display' : "setmsg", 'line' : "2"}, null, null)}} +
+
diff --git a/polaris.dme b/polaris.dme index 7e6b380d7f..dad0941355 100644 --- a/polaris.dme +++ b/polaris.dme @@ -27,11 +27,13 @@ #include "code\__defines\atmos.dm" #include "code\__defines\callbacks.dm" #include "code\__defines\chemistry.dm" +#include "code\__defines\color.dm" #include "code\__defines\construction.dm" #include "code\__defines\damage_organs.dm" #include "code\__defines\dna.dm" #include "code\__defines\gamemode.dm" #include "code\__defines\holomap.dm" +#include "code\__defines\integrated_circuits.dm" #include "code\__defines\inventory_sizes.dm" #include "code\__defines\items_clothing.dm" #include "code\__defines\lighting.dm" @@ -192,6 +194,7 @@ #include "code\controllers\subsystems\air.dm" #include "code\controllers\subsystems\airflow.dm" #include "code\controllers\subsystems\atoms.dm" +#include "code\controllers\subsystems\circuits.dm" #include "code\controllers\subsystems\garbage.dm" #include "code\controllers\subsystems\holomaps.dm" #include "code\controllers\subsystems\lighting.dm" @@ -1007,6 +1010,7 @@ #include "code\game\objects\items\weapons\implants\implantlanguage.dm" #include "code\game\objects\items\weapons\implants\implantpad.dm" #include "code\game\objects\items\weapons\implants\implantuplink.dm" +#include "code\game\objects\items\weapons\implants\neuralbasic.dm" #include "code\game\objects\items\weapons\material\ashtray.dm" #include "code\game\objects\items\weapons\material\bats.dm" #include "code\game\objects\items\weapons\material\chainsaw.dm" @@ -1101,6 +1105,7 @@ #include "code\game\objects\structures\crates_lockers\closets.dm" #include "code\game\objects\structures\crates_lockers\crates.dm" #include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\vehiclecage.dm" #include "code\game\objects\structures\crates_lockers\closets\coffin.dm" #include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" #include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" @@ -1132,6 +1137,7 @@ #include "code\game\objects\structures\ghost_pods\silicon.dm" #include "code\game\objects\structures\props\alien_props.dm" #include "code\game\objects\structures\props\beam_prism.dm" +#include "code\game\objects\structures\props\nest.dm" #include "code\game\objects\structures\props\projectile_lock.dm" #include "code\game\objects\structures\props\prop.dm" #include "code\game\objects\structures\props\puzzledoor.dm" @@ -1444,6 +1450,7 @@ #include "code\modules\clothing\spacesuits\rig\suits\ert.dm" #include "code\modules\clothing\spacesuits\rig\suits\light.dm" #include "code\modules\clothing\spacesuits\rig\suits\merc.dm" +#include "code\modules\clothing\spacesuits\rig\suits\pmc.dm" #include "code\modules\clothing\spacesuits\rig\suits\station.dm" #include "code\modules\clothing\spacesuits\void\merc.dm" #include "code\modules\clothing\spacesuits\void\station.dm" @@ -1630,12 +1637,16 @@ #include "code\modules\hydroponics\trays\tray_update_icons.dm" #include "code\modules\integrated_electronics\_defines.dm" #include "code\modules\integrated_electronics\core\assemblies.dm" -#include "code\modules\integrated_electronics\core\device.dm" +#include "code\modules\integrated_electronics\core\detailer.dm" #include "code\modules\integrated_electronics\core\helpers.dm" #include "code\modules\integrated_electronics\core\integrated_circuit.dm" #include "code\modules\integrated_electronics\core\pins.dm" #include "code\modules\integrated_electronics\core\printer.dm" #include "code\modules\integrated_electronics\core\tools.dm" +#include "code\modules\integrated_electronics\core\assemblies\clothing.dm" +#include "code\modules\integrated_electronics\core\assemblies\device.dm" +#include "code\modules\integrated_electronics\core\assemblies\generic.dm" +#include "code\modules\integrated_electronics\core\assemblies\implant.dm" #include "code\modules\integrated_electronics\core\special_pins\boolean_pin.dm" #include "code\modules\integrated_electronics\core\special_pins\char_pin.dm" #include "code\modules\integrated_electronics\core\special_pins\color_pin.dm" @@ -1851,6 +1862,10 @@ #include "code\modules\mob\living\carbon\human\stripping.dm" #include "code\modules\mob\living\carbon\human\unarmed_attack.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\descriptors\_descriptors.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_generic.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_skrell.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_vox.dm" #include "code\modules\mob\living\carbon\human\species\species.dm" #include "code\modules\mob\living\carbon\human\species\species_attack.dm" #include "code\modules\mob\living\carbon\human\species\species_getters.dm" @@ -2225,6 +2240,7 @@ #include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\arc.dm" #include "code\modules\projectiles\projectile\beams.dm" +#include "code\modules\projectiles\projectile\blob.dm" #include "code\modules\projectiles\projectile\bullets.dm" #include "code\modules\projectiles\projectile\change.dm" #include "code\modules\projectiles\projectile\energy.dm" @@ -2379,6 +2395,7 @@ #include "code\modules\shuttles\shuttles_web.dm" #include "code\modules\shuttles\web_datums.dm" #include "code\modules\spells\artifacts.dm" +#include "code\modules\spells\construct_spells.dm" #include "code\modules\spells\no_clothes.dm" #include "code\modules\spells\spell_code.dm" #include "code\modules\spells\spell_projectile.dm" @@ -2392,12 +2409,15 @@ #include "code\modules\spells\aoe_turf\smoke.dm" #include "code\modules\spells\aoe_turf\summons.dm" #include "code\modules\spells\aoe_turf\conjure\conjure.dm" +#include "code\modules\spells\aoe_turf\conjure\construct.dm" #include "code\modules\spells\aoe_turf\conjure\forcewall.dm" #include "code\modules\spells\general\area_teleport.dm" #include "code\modules\spells\general\rune_write.dm" #include "code\modules\spells\targeted\ethereal_jaunt.dm" #include "code\modules\spells\targeted\genetic.dm" +#include "code\modules\spells\targeted\harvest.dm" #include "code\modules\spells\targeted\mind_transfer.dm" +#include "code\modules\spells\targeted\shift.dm" #include "code\modules\spells\targeted\subjugate.dm" #include "code\modules\spells\targeted\targeted.dm" #include "code\modules\spells\targeted\equip\equip.dm" @@ -2438,8 +2458,11 @@ #include "code\modules\turbolift\turbolift_map.dm" #include "code\modules\turbolift\turbolift_process.dm" #include "code\modules\turbolift\turbolift_turfs.dm" +#include "code\modules\vehicles\bike.dm" #include "code\modules\vehicles\boat.dm" #include "code\modules\vehicles\cargo_train.dm" +#include "code\modules\vehicles\construction.dm" +#include "code\modules\vehicles\quad.dm" #include "code\modules\vehicles\train.dm" #include "code\modules\vehicles\vehicle.dm" #include "code\modules\ventcrawl\ventcrawl.dm" diff --git a/sound/instruments/piano/Ab2.ogg b/sound/instruments/piano/Ab2.ogg new file mode 100644 index 0000000000..22591b0f2a Binary files /dev/null and b/sound/instruments/piano/Ab2.ogg differ diff --git a/sound/instruments/piano/Ab3.ogg b/sound/instruments/piano/Ab3.ogg new file mode 100644 index 0000000000..149fa26c89 Binary files /dev/null and b/sound/instruments/piano/Ab3.ogg differ diff --git a/sound/instruments/piano/Ab4.ogg b/sound/instruments/piano/Ab4.ogg new file mode 100644 index 0000000000..5a64cb10f8 Binary files /dev/null and b/sound/instruments/piano/Ab4.ogg differ diff --git a/sound/instruments/piano/Ab5.ogg b/sound/instruments/piano/Ab5.ogg new file mode 100644 index 0000000000..8635b8a624 Binary files /dev/null and b/sound/instruments/piano/Ab5.ogg differ diff --git a/sound/instruments/piano/Ab6.ogg b/sound/instruments/piano/Ab6.ogg new file mode 100644 index 0000000000..b771a29f27 Binary files /dev/null and b/sound/instruments/piano/Ab6.ogg differ diff --git a/sound/instruments/piano/Ab7.ogg b/sound/instruments/piano/Ab7.ogg new file mode 100644 index 0000000000..ff98fb05a8 Binary files /dev/null and b/sound/instruments/piano/Ab7.ogg differ diff --git a/sound/instruments/piano/Ab8.ogg b/sound/instruments/piano/Ab8.ogg new file mode 100644 index 0000000000..aca8ed4d4f Binary files /dev/null and b/sound/instruments/piano/Ab8.ogg differ diff --git a/sound/instruments/piano/An1.ogg b/sound/instruments/piano/An1.ogg new file mode 100644 index 0000000000..72c3a64360 Binary files /dev/null and b/sound/instruments/piano/An1.ogg differ diff --git a/sound/instruments/piano/An2.ogg b/sound/instruments/piano/An2.ogg new file mode 100644 index 0000000000..b92232621c Binary files /dev/null and b/sound/instruments/piano/An2.ogg differ diff --git a/sound/instruments/piano/An3.ogg b/sound/instruments/piano/An3.ogg new file mode 100644 index 0000000000..f4fa9a1e72 Binary files /dev/null and b/sound/instruments/piano/An3.ogg differ diff --git a/sound/instruments/piano/An4.ogg b/sound/instruments/piano/An4.ogg new file mode 100644 index 0000000000..6946e13516 Binary files /dev/null and b/sound/instruments/piano/An4.ogg differ diff --git a/sound/instruments/piano/An5.ogg b/sound/instruments/piano/An5.ogg new file mode 100644 index 0000000000..322cc3b4c5 Binary files /dev/null and b/sound/instruments/piano/An5.ogg differ diff --git a/sound/instruments/piano/An6.ogg b/sound/instruments/piano/An6.ogg new file mode 100644 index 0000000000..7a561af80e Binary files /dev/null and b/sound/instruments/piano/An6.ogg differ diff --git a/sound/instruments/piano/An7.ogg b/sound/instruments/piano/An7.ogg new file mode 100644 index 0000000000..5e935dfe3c Binary files /dev/null and b/sound/instruments/piano/An7.ogg differ diff --git a/sound/instruments/piano/An8.ogg b/sound/instruments/piano/An8.ogg new file mode 100644 index 0000000000..b70ba0b901 Binary files /dev/null and b/sound/instruments/piano/An8.ogg differ diff --git a/sound/instruments/piano/Bb1.ogg b/sound/instruments/piano/Bb1.ogg new file mode 100644 index 0000000000..d66d6b2f01 Binary files /dev/null and b/sound/instruments/piano/Bb1.ogg differ diff --git a/sound/instruments/piano/Bb2.ogg b/sound/instruments/piano/Bb2.ogg new file mode 100644 index 0000000000..c75195976c Binary files /dev/null and b/sound/instruments/piano/Bb2.ogg differ diff --git a/sound/instruments/piano/Bb3.ogg b/sound/instruments/piano/Bb3.ogg new file mode 100644 index 0000000000..648c8b3717 Binary files /dev/null and b/sound/instruments/piano/Bb3.ogg differ diff --git a/sound/instruments/piano/Bb4.ogg b/sound/instruments/piano/Bb4.ogg new file mode 100644 index 0000000000..aa842dd3ed Binary files /dev/null and b/sound/instruments/piano/Bb4.ogg differ diff --git a/sound/instruments/piano/Bb5.ogg b/sound/instruments/piano/Bb5.ogg new file mode 100644 index 0000000000..0ae78e81e6 Binary files /dev/null and b/sound/instruments/piano/Bb5.ogg differ diff --git a/sound/instruments/piano/Bb6.ogg b/sound/instruments/piano/Bb6.ogg new file mode 100644 index 0000000000..172f63f3f4 Binary files /dev/null and b/sound/instruments/piano/Bb6.ogg differ diff --git a/sound/instruments/piano/Bb7.ogg b/sound/instruments/piano/Bb7.ogg new file mode 100644 index 0000000000..d1240c623d Binary files /dev/null and b/sound/instruments/piano/Bb7.ogg differ diff --git a/sound/instruments/piano/Bb8.ogg b/sound/instruments/piano/Bb8.ogg new file mode 100644 index 0000000000..53eff2867d Binary files /dev/null and b/sound/instruments/piano/Bb8.ogg differ diff --git a/sound/instruments/piano/Bn1.ogg b/sound/instruments/piano/Bn1.ogg new file mode 100644 index 0000000000..1af185c0e8 Binary files /dev/null and b/sound/instruments/piano/Bn1.ogg differ diff --git a/sound/instruments/piano/Bn2.ogg b/sound/instruments/piano/Bn2.ogg new file mode 100644 index 0000000000..acd03a4f1d Binary files /dev/null and b/sound/instruments/piano/Bn2.ogg differ diff --git a/sound/instruments/piano/Bn3.ogg b/sound/instruments/piano/Bn3.ogg new file mode 100644 index 0000000000..61a8d157b7 Binary files /dev/null and b/sound/instruments/piano/Bn3.ogg differ diff --git a/sound/instruments/piano/Bn4.ogg b/sound/instruments/piano/Bn4.ogg new file mode 100644 index 0000000000..e38b9eec56 Binary files /dev/null and b/sound/instruments/piano/Bn4.ogg differ diff --git a/sound/instruments/piano/Bn5.ogg b/sound/instruments/piano/Bn5.ogg new file mode 100644 index 0000000000..4759c0f825 Binary files /dev/null and b/sound/instruments/piano/Bn5.ogg differ diff --git a/sound/instruments/piano/Bn6.ogg b/sound/instruments/piano/Bn6.ogg new file mode 100644 index 0000000000..0282535a01 Binary files /dev/null and b/sound/instruments/piano/Bn6.ogg differ diff --git a/sound/instruments/piano/Bn7.ogg b/sound/instruments/piano/Bn7.ogg new file mode 100644 index 0000000000..57334fba24 Binary files /dev/null and b/sound/instruments/piano/Bn7.ogg differ diff --git a/sound/instruments/piano/Bn8.ogg b/sound/instruments/piano/Bn8.ogg new file mode 100644 index 0000000000..5d723d196d Binary files /dev/null and b/sound/instruments/piano/Bn8.ogg differ diff --git a/sound/instruments/piano/Cn2.ogg b/sound/instruments/piano/Cn2.ogg new file mode 100644 index 0000000000..251c3bd1f2 Binary files /dev/null and b/sound/instruments/piano/Cn2.ogg differ diff --git a/sound/instruments/piano/Cn3.ogg b/sound/instruments/piano/Cn3.ogg new file mode 100644 index 0000000000..66286e5e71 Binary files /dev/null and b/sound/instruments/piano/Cn3.ogg differ diff --git a/sound/instruments/piano/Cn4.ogg b/sound/instruments/piano/Cn4.ogg new file mode 100644 index 0000000000..e271c7e4b0 Binary files /dev/null and b/sound/instruments/piano/Cn4.ogg differ diff --git a/sound/instruments/piano/Cn5.ogg b/sound/instruments/piano/Cn5.ogg new file mode 100644 index 0000000000..375987640d Binary files /dev/null and b/sound/instruments/piano/Cn5.ogg differ diff --git a/sound/instruments/piano/Cn6.ogg b/sound/instruments/piano/Cn6.ogg new file mode 100644 index 0000000000..1c675eb73e Binary files /dev/null and b/sound/instruments/piano/Cn6.ogg differ diff --git a/sound/instruments/piano/Cn7.ogg b/sound/instruments/piano/Cn7.ogg new file mode 100644 index 0000000000..8d87e17a64 Binary files /dev/null and b/sound/instruments/piano/Cn7.ogg differ diff --git a/sound/instruments/piano/Cn8.ogg b/sound/instruments/piano/Cn8.ogg new file mode 100644 index 0000000000..bdb8a046b6 Binary files /dev/null and b/sound/instruments/piano/Cn8.ogg differ diff --git a/sound/instruments/piano/Cn9.ogg b/sound/instruments/piano/Cn9.ogg new file mode 100644 index 0000000000..09ce034cd8 Binary files /dev/null and b/sound/instruments/piano/Cn9.ogg differ diff --git a/sound/instruments/piano/Db2.ogg b/sound/instruments/piano/Db2.ogg new file mode 100644 index 0000000000..840ffd49b5 Binary files /dev/null and b/sound/instruments/piano/Db2.ogg differ diff --git a/sound/instruments/piano/Db3.ogg b/sound/instruments/piano/Db3.ogg new file mode 100644 index 0000000000..d286473854 Binary files /dev/null and b/sound/instruments/piano/Db3.ogg differ diff --git a/sound/instruments/piano/Db4.ogg b/sound/instruments/piano/Db4.ogg new file mode 100644 index 0000000000..adffd15837 Binary files /dev/null and b/sound/instruments/piano/Db4.ogg differ diff --git a/sound/instruments/piano/Db5.ogg b/sound/instruments/piano/Db5.ogg new file mode 100644 index 0000000000..1c43e84804 Binary files /dev/null and b/sound/instruments/piano/Db5.ogg differ diff --git a/sound/instruments/piano/Db6.ogg b/sound/instruments/piano/Db6.ogg new file mode 100644 index 0000000000..92bd1d2aa6 Binary files /dev/null and b/sound/instruments/piano/Db6.ogg differ diff --git a/sound/instruments/piano/Db7.ogg b/sound/instruments/piano/Db7.ogg new file mode 100644 index 0000000000..72c34b0f6e Binary files /dev/null and b/sound/instruments/piano/Db7.ogg differ diff --git a/sound/instruments/piano/Db8.ogg b/sound/instruments/piano/Db8.ogg new file mode 100644 index 0000000000..4984f3da6f Binary files /dev/null and b/sound/instruments/piano/Db8.ogg differ diff --git a/sound/instruments/piano/Dn2.ogg b/sound/instruments/piano/Dn2.ogg new file mode 100644 index 0000000000..1d3b39a0f7 Binary files /dev/null and b/sound/instruments/piano/Dn2.ogg differ diff --git a/sound/instruments/piano/Dn3.ogg b/sound/instruments/piano/Dn3.ogg new file mode 100644 index 0000000000..36aa1e3e98 Binary files /dev/null and b/sound/instruments/piano/Dn3.ogg differ diff --git a/sound/instruments/piano/Dn4.ogg b/sound/instruments/piano/Dn4.ogg new file mode 100644 index 0000000000..89e64a10b6 Binary files /dev/null and b/sound/instruments/piano/Dn4.ogg differ diff --git a/sound/instruments/piano/Dn5.ogg b/sound/instruments/piano/Dn5.ogg new file mode 100644 index 0000000000..0e928f4613 Binary files /dev/null and b/sound/instruments/piano/Dn5.ogg differ diff --git a/sound/instruments/piano/Dn6.ogg b/sound/instruments/piano/Dn6.ogg new file mode 100644 index 0000000000..8413e46635 Binary files /dev/null and b/sound/instruments/piano/Dn6.ogg differ diff --git a/sound/instruments/piano/Dn7.ogg b/sound/instruments/piano/Dn7.ogg new file mode 100644 index 0000000000..4516a46bc4 Binary files /dev/null and b/sound/instruments/piano/Dn7.ogg differ diff --git a/sound/instruments/piano/Dn8.ogg b/sound/instruments/piano/Dn8.ogg new file mode 100644 index 0000000000..348c690fef Binary files /dev/null and b/sound/instruments/piano/Dn8.ogg differ diff --git a/sound/instruments/piano/Eb2.ogg b/sound/instruments/piano/Eb2.ogg new file mode 100644 index 0000000000..b300b39eb9 Binary files /dev/null and b/sound/instruments/piano/Eb2.ogg differ diff --git a/sound/instruments/piano/Eb3.ogg b/sound/instruments/piano/Eb3.ogg new file mode 100644 index 0000000000..879b6907fc Binary files /dev/null and b/sound/instruments/piano/Eb3.ogg differ diff --git a/sound/instruments/piano/Eb4.ogg b/sound/instruments/piano/Eb4.ogg new file mode 100644 index 0000000000..e2d57556db Binary files /dev/null and b/sound/instruments/piano/Eb4.ogg differ diff --git a/sound/instruments/piano/Eb5.ogg b/sound/instruments/piano/Eb5.ogg new file mode 100644 index 0000000000..6eec439bf8 Binary files /dev/null and b/sound/instruments/piano/Eb5.ogg differ diff --git a/sound/instruments/piano/Eb6.ogg b/sound/instruments/piano/Eb6.ogg new file mode 100644 index 0000000000..80b4952ab9 Binary files /dev/null and b/sound/instruments/piano/Eb6.ogg differ diff --git a/sound/instruments/piano/Eb7.ogg b/sound/instruments/piano/Eb7.ogg new file mode 100644 index 0000000000..e88eec4fec Binary files /dev/null and b/sound/instruments/piano/Eb7.ogg differ diff --git a/sound/instruments/piano/Eb8.ogg b/sound/instruments/piano/Eb8.ogg new file mode 100644 index 0000000000..cb7b3efdfd Binary files /dev/null and b/sound/instruments/piano/Eb8.ogg differ diff --git a/sound/instruments/piano/En2.ogg b/sound/instruments/piano/En2.ogg new file mode 100644 index 0000000000..0f5e8a073d Binary files /dev/null and b/sound/instruments/piano/En2.ogg differ diff --git a/sound/instruments/piano/En3.ogg b/sound/instruments/piano/En3.ogg new file mode 100644 index 0000000000..f24b26bf06 Binary files /dev/null and b/sound/instruments/piano/En3.ogg differ diff --git a/sound/instruments/piano/En4.ogg b/sound/instruments/piano/En4.ogg new file mode 100644 index 0000000000..eb409d0e09 Binary files /dev/null and b/sound/instruments/piano/En4.ogg differ diff --git a/sound/instruments/piano/En5.ogg b/sound/instruments/piano/En5.ogg new file mode 100644 index 0000000000..cd83f438d2 Binary files /dev/null and b/sound/instruments/piano/En5.ogg differ diff --git a/sound/instruments/piano/En6.ogg b/sound/instruments/piano/En6.ogg new file mode 100644 index 0000000000..62a0361284 Binary files /dev/null and b/sound/instruments/piano/En6.ogg differ diff --git a/sound/instruments/piano/En7.ogg b/sound/instruments/piano/En7.ogg new file mode 100644 index 0000000000..c1072ade23 Binary files /dev/null and b/sound/instruments/piano/En7.ogg differ diff --git a/sound/instruments/piano/En8.ogg b/sound/instruments/piano/En8.ogg new file mode 100644 index 0000000000..79b7176061 Binary files /dev/null and b/sound/instruments/piano/En8.ogg differ diff --git a/sound/instruments/piano/Fn2.ogg b/sound/instruments/piano/Fn2.ogg new file mode 100644 index 0000000000..449cd6a8a2 Binary files /dev/null and b/sound/instruments/piano/Fn2.ogg differ diff --git a/sound/instruments/piano/Fn3.ogg b/sound/instruments/piano/Fn3.ogg new file mode 100644 index 0000000000..afd5b3b802 Binary files /dev/null and b/sound/instruments/piano/Fn3.ogg differ diff --git a/sound/instruments/piano/Fn4.ogg b/sound/instruments/piano/Fn4.ogg new file mode 100644 index 0000000000..ac18206012 Binary files /dev/null and b/sound/instruments/piano/Fn4.ogg differ diff --git a/sound/instruments/piano/Fn5.ogg b/sound/instruments/piano/Fn5.ogg new file mode 100644 index 0000000000..e59a4c6cc6 Binary files /dev/null and b/sound/instruments/piano/Fn5.ogg differ diff --git a/sound/instruments/piano/Fn6.ogg b/sound/instruments/piano/Fn6.ogg new file mode 100644 index 0000000000..7636c242dc Binary files /dev/null and b/sound/instruments/piano/Fn6.ogg differ diff --git a/sound/instruments/piano/Fn7.ogg b/sound/instruments/piano/Fn7.ogg new file mode 100644 index 0000000000..810338b641 Binary files /dev/null and b/sound/instruments/piano/Fn7.ogg differ diff --git a/sound/instruments/piano/Fn8.ogg b/sound/instruments/piano/Fn8.ogg new file mode 100644 index 0000000000..3504877e8a Binary files /dev/null and b/sound/instruments/piano/Fn8.ogg differ diff --git a/sound/instruments/piano/Gb2.ogg b/sound/instruments/piano/Gb2.ogg new file mode 100644 index 0000000000..353d09af13 Binary files /dev/null and b/sound/instruments/piano/Gb2.ogg differ diff --git a/sound/instruments/piano/Gb3.ogg b/sound/instruments/piano/Gb3.ogg new file mode 100644 index 0000000000..4527d9849d Binary files /dev/null and b/sound/instruments/piano/Gb3.ogg differ diff --git a/sound/instruments/piano/Gb4.ogg b/sound/instruments/piano/Gb4.ogg new file mode 100644 index 0000000000..abb5264465 Binary files /dev/null and b/sound/instruments/piano/Gb4.ogg differ diff --git a/sound/instruments/piano/Gb5.ogg b/sound/instruments/piano/Gb5.ogg new file mode 100644 index 0000000000..3765c1882c Binary files /dev/null and b/sound/instruments/piano/Gb5.ogg differ diff --git a/sound/instruments/piano/Gb6.ogg b/sound/instruments/piano/Gb6.ogg new file mode 100644 index 0000000000..fb6ff9006b Binary files /dev/null and b/sound/instruments/piano/Gb6.ogg differ diff --git a/sound/instruments/piano/Gb7.ogg b/sound/instruments/piano/Gb7.ogg new file mode 100644 index 0000000000..07983100d5 Binary files /dev/null and b/sound/instruments/piano/Gb7.ogg differ diff --git a/sound/instruments/piano/Gb8.ogg b/sound/instruments/piano/Gb8.ogg new file mode 100644 index 0000000000..717707816b Binary files /dev/null and b/sound/instruments/piano/Gb8.ogg differ diff --git a/sound/instruments/piano/Gn2.ogg b/sound/instruments/piano/Gn2.ogg new file mode 100644 index 0000000000..bad4105f25 Binary files /dev/null and b/sound/instruments/piano/Gn2.ogg differ diff --git a/sound/instruments/piano/Gn3.ogg b/sound/instruments/piano/Gn3.ogg new file mode 100644 index 0000000000..b69d27986f Binary files /dev/null and b/sound/instruments/piano/Gn3.ogg differ diff --git a/sound/instruments/piano/Gn4.ogg b/sound/instruments/piano/Gn4.ogg new file mode 100644 index 0000000000..c26d227122 Binary files /dev/null and b/sound/instruments/piano/Gn4.ogg differ diff --git a/sound/instruments/piano/Gn5.ogg b/sound/instruments/piano/Gn5.ogg new file mode 100644 index 0000000000..18b94e8e72 Binary files /dev/null and b/sound/instruments/piano/Gn5.ogg differ diff --git a/sound/instruments/piano/Gn6.ogg b/sound/instruments/piano/Gn6.ogg new file mode 100644 index 0000000000..587a8432b0 Binary files /dev/null and b/sound/instruments/piano/Gn6.ogg differ diff --git a/sound/instruments/piano/Gn7.ogg b/sound/instruments/piano/Gn7.ogg new file mode 100644 index 0000000000..5da32b72a9 Binary files /dev/null and b/sound/instruments/piano/Gn7.ogg differ diff --git a/sound/instruments/piano/Gn8.ogg b/sound/instruments/piano/Gn8.ogg new file mode 100644 index 0000000000..13559c201d Binary files /dev/null and b/sound/instruments/piano/Gn8.ogg differ diff --git a/sound/violin/Ab1.mid b/sound/instruments/violin/Ab1.mid similarity index 100% rename from sound/violin/Ab1.mid rename to sound/instruments/violin/Ab1.mid diff --git a/sound/violin/Ab2.mid b/sound/instruments/violin/Ab2.mid similarity index 100% rename from sound/violin/Ab2.mid rename to sound/instruments/violin/Ab2.mid diff --git a/sound/violin/Ab3.mid b/sound/instruments/violin/Ab3.mid similarity index 100% rename from sound/violin/Ab3.mid rename to sound/instruments/violin/Ab3.mid diff --git a/sound/violin/Ab4.mid b/sound/instruments/violin/Ab4.mid similarity index 100% rename from sound/violin/Ab4.mid rename to sound/instruments/violin/Ab4.mid diff --git a/sound/violin/Ab5.mid b/sound/instruments/violin/Ab5.mid similarity index 100% rename from sound/violin/Ab5.mid rename to sound/instruments/violin/Ab5.mid diff --git a/sound/violin/Ab6.mid b/sound/instruments/violin/Ab6.mid similarity index 100% rename from sound/violin/Ab6.mid rename to sound/instruments/violin/Ab6.mid diff --git a/sound/violin/Ab7.mid b/sound/instruments/violin/Ab7.mid similarity index 100% rename from sound/violin/Ab7.mid rename to sound/instruments/violin/Ab7.mid diff --git a/sound/violin/Ab8.mid b/sound/instruments/violin/Ab8.mid similarity index 100% rename from sound/violin/Ab8.mid rename to sound/instruments/violin/Ab8.mid diff --git a/sound/violin/An1.mid b/sound/instruments/violin/An1.mid similarity index 100% rename from sound/violin/An1.mid rename to sound/instruments/violin/An1.mid diff --git a/sound/violin/An2.mid b/sound/instruments/violin/An2.mid similarity index 100% rename from sound/violin/An2.mid rename to sound/instruments/violin/An2.mid diff --git a/sound/violin/An3.mid b/sound/instruments/violin/An3.mid similarity index 100% rename from sound/violin/An3.mid rename to sound/instruments/violin/An3.mid diff --git a/sound/violin/An4.mid b/sound/instruments/violin/An4.mid similarity index 100% rename from sound/violin/An4.mid rename to sound/instruments/violin/An4.mid diff --git a/sound/violin/An5.mid b/sound/instruments/violin/An5.mid similarity index 100% rename from sound/violin/An5.mid rename to sound/instruments/violin/An5.mid diff --git a/sound/violin/An6.mid b/sound/instruments/violin/An6.mid similarity index 100% rename from sound/violin/An6.mid rename to sound/instruments/violin/An6.mid diff --git a/sound/violin/An7.mid b/sound/instruments/violin/An7.mid similarity index 100% rename from sound/violin/An7.mid rename to sound/instruments/violin/An7.mid diff --git a/sound/violin/An8.mid b/sound/instruments/violin/An8.mid similarity index 100% rename from sound/violin/An8.mid rename to sound/instruments/violin/An8.mid diff --git a/sound/violin/Bb1.mid b/sound/instruments/violin/Bb1.mid similarity index 100% rename from sound/violin/Bb1.mid rename to sound/instruments/violin/Bb1.mid diff --git a/sound/violin/Bb2.mid b/sound/instruments/violin/Bb2.mid similarity index 100% rename from sound/violin/Bb2.mid rename to sound/instruments/violin/Bb2.mid diff --git a/sound/violin/Bb3.mid b/sound/instruments/violin/Bb3.mid similarity index 100% rename from sound/violin/Bb3.mid rename to sound/instruments/violin/Bb3.mid diff --git a/sound/violin/Bb4.mid b/sound/instruments/violin/Bb4.mid similarity index 100% rename from sound/violin/Bb4.mid rename to sound/instruments/violin/Bb4.mid diff --git a/sound/violin/Bb5.mid b/sound/instruments/violin/Bb5.mid similarity index 100% rename from sound/violin/Bb5.mid rename to sound/instruments/violin/Bb5.mid diff --git a/sound/violin/Bb6.mid b/sound/instruments/violin/Bb6.mid similarity index 100% rename from sound/violin/Bb6.mid rename to sound/instruments/violin/Bb6.mid diff --git a/sound/violin/Bb7.mid b/sound/instruments/violin/Bb7.mid similarity index 100% rename from sound/violin/Bb7.mid rename to sound/instruments/violin/Bb7.mid diff --git a/sound/violin/Bb8.mid b/sound/instruments/violin/Bb8.mid similarity index 100% rename from sound/violin/Bb8.mid rename to sound/instruments/violin/Bb8.mid diff --git a/sound/violin/Bn1.mid b/sound/instruments/violin/Bn1.mid similarity index 100% rename from sound/violin/Bn1.mid rename to sound/instruments/violin/Bn1.mid diff --git a/sound/violin/Bn2.mid b/sound/instruments/violin/Bn2.mid similarity index 100% rename from sound/violin/Bn2.mid rename to sound/instruments/violin/Bn2.mid diff --git a/sound/violin/Bn3.mid b/sound/instruments/violin/Bn3.mid similarity index 100% rename from sound/violin/Bn3.mid rename to sound/instruments/violin/Bn3.mid diff --git a/sound/violin/Bn4.mid b/sound/instruments/violin/Bn4.mid similarity index 100% rename from sound/violin/Bn4.mid rename to sound/instruments/violin/Bn4.mid diff --git a/sound/violin/Bn5.mid b/sound/instruments/violin/Bn5.mid similarity index 100% rename from sound/violin/Bn5.mid rename to sound/instruments/violin/Bn5.mid diff --git a/sound/violin/Bn6.mid b/sound/instruments/violin/Bn6.mid similarity index 100% rename from sound/violin/Bn6.mid rename to sound/instruments/violin/Bn6.mid diff --git a/sound/violin/Bn7.mid b/sound/instruments/violin/Bn7.mid similarity index 100% rename from sound/violin/Bn7.mid rename to sound/instruments/violin/Bn7.mid diff --git a/sound/violin/Bn8.mid b/sound/instruments/violin/Bn8.mid similarity index 100% rename from sound/violin/Bn8.mid rename to sound/instruments/violin/Bn8.mid diff --git a/sound/violin/Cn1.mid b/sound/instruments/violin/Cn1.mid similarity index 100% rename from sound/violin/Cn1.mid rename to sound/instruments/violin/Cn1.mid diff --git a/sound/violin/Cn2.mid b/sound/instruments/violin/Cn2.mid similarity index 100% rename from sound/violin/Cn2.mid rename to sound/instruments/violin/Cn2.mid diff --git a/sound/violin/Cn3.mid b/sound/instruments/violin/Cn3.mid similarity index 100% rename from sound/violin/Cn3.mid rename to sound/instruments/violin/Cn3.mid diff --git a/sound/violin/Cn4.mid b/sound/instruments/violin/Cn4.mid similarity index 100% rename from sound/violin/Cn4.mid rename to sound/instruments/violin/Cn4.mid diff --git a/sound/violin/Cn5.mid b/sound/instruments/violin/Cn5.mid similarity index 100% rename from sound/violin/Cn5.mid rename to sound/instruments/violin/Cn5.mid diff --git a/sound/violin/Cn6.mid b/sound/instruments/violin/Cn6.mid similarity index 100% rename from sound/violin/Cn6.mid rename to sound/instruments/violin/Cn6.mid diff --git a/sound/violin/Cn7.mid b/sound/instruments/violin/Cn7.mid similarity index 100% rename from sound/violin/Cn7.mid rename to sound/instruments/violin/Cn7.mid diff --git a/sound/violin/Cn8.mid b/sound/instruments/violin/Cn8.mid similarity index 100% rename from sound/violin/Cn8.mid rename to sound/instruments/violin/Cn8.mid diff --git a/sound/violin/Cn9.mid b/sound/instruments/violin/Cn9.mid similarity index 100% rename from sound/violin/Cn9.mid rename to sound/instruments/violin/Cn9.mid diff --git a/sound/violin/Db1.mid b/sound/instruments/violin/Db1.mid similarity index 100% rename from sound/violin/Db1.mid rename to sound/instruments/violin/Db1.mid diff --git a/sound/violin/Db2.mid b/sound/instruments/violin/Db2.mid similarity index 100% rename from sound/violin/Db2.mid rename to sound/instruments/violin/Db2.mid diff --git a/sound/violin/Db3.mid b/sound/instruments/violin/Db3.mid similarity index 100% rename from sound/violin/Db3.mid rename to sound/instruments/violin/Db3.mid diff --git a/sound/violin/Db4.mid b/sound/instruments/violin/Db4.mid similarity index 100% rename from sound/violin/Db4.mid rename to sound/instruments/violin/Db4.mid diff --git a/sound/violin/Db5.mid b/sound/instruments/violin/Db5.mid similarity index 100% rename from sound/violin/Db5.mid rename to sound/instruments/violin/Db5.mid diff --git a/sound/violin/Db6.mid b/sound/instruments/violin/Db6.mid similarity index 100% rename from sound/violin/Db6.mid rename to sound/instruments/violin/Db6.mid diff --git a/sound/violin/Db7.mid b/sound/instruments/violin/Db7.mid similarity index 100% rename from sound/violin/Db7.mid rename to sound/instruments/violin/Db7.mid diff --git a/sound/violin/Db8.mid b/sound/instruments/violin/Db8.mid similarity index 100% rename from sound/violin/Db8.mid rename to sound/instruments/violin/Db8.mid diff --git a/sound/violin/Dn1.mid b/sound/instruments/violin/Dn1.mid similarity index 100% rename from sound/violin/Dn1.mid rename to sound/instruments/violin/Dn1.mid diff --git a/sound/violin/Dn2.mid b/sound/instruments/violin/Dn2.mid similarity index 100% rename from sound/violin/Dn2.mid rename to sound/instruments/violin/Dn2.mid diff --git a/sound/violin/Dn3.mid b/sound/instruments/violin/Dn3.mid similarity index 100% rename from sound/violin/Dn3.mid rename to sound/instruments/violin/Dn3.mid diff --git a/sound/violin/Dn4.mid b/sound/instruments/violin/Dn4.mid similarity index 100% rename from sound/violin/Dn4.mid rename to sound/instruments/violin/Dn4.mid diff --git a/sound/violin/Dn5.mid b/sound/instruments/violin/Dn5.mid similarity index 100% rename from sound/violin/Dn5.mid rename to sound/instruments/violin/Dn5.mid diff --git a/sound/violin/Dn6.mid b/sound/instruments/violin/Dn6.mid similarity index 100% rename from sound/violin/Dn6.mid rename to sound/instruments/violin/Dn6.mid diff --git a/sound/violin/Dn7.mid b/sound/instruments/violin/Dn7.mid similarity index 100% rename from sound/violin/Dn7.mid rename to sound/instruments/violin/Dn7.mid diff --git a/sound/violin/Dn8.mid b/sound/instruments/violin/Dn8.mid similarity index 100% rename from sound/violin/Dn8.mid rename to sound/instruments/violin/Dn8.mid diff --git a/sound/violin/Eb1.mid b/sound/instruments/violin/Eb1.mid similarity index 100% rename from sound/violin/Eb1.mid rename to sound/instruments/violin/Eb1.mid diff --git a/sound/violin/Eb2.mid b/sound/instruments/violin/Eb2.mid similarity index 100% rename from sound/violin/Eb2.mid rename to sound/instruments/violin/Eb2.mid diff --git a/sound/violin/Eb3.mid b/sound/instruments/violin/Eb3.mid similarity index 100% rename from sound/violin/Eb3.mid rename to sound/instruments/violin/Eb3.mid diff --git a/sound/violin/Eb4.mid b/sound/instruments/violin/Eb4.mid similarity index 100% rename from sound/violin/Eb4.mid rename to sound/instruments/violin/Eb4.mid diff --git a/sound/violin/Eb5.mid b/sound/instruments/violin/Eb5.mid similarity index 100% rename from sound/violin/Eb5.mid rename to sound/instruments/violin/Eb5.mid diff --git a/sound/violin/Eb6.mid b/sound/instruments/violin/Eb6.mid similarity index 100% rename from sound/violin/Eb6.mid rename to sound/instruments/violin/Eb6.mid diff --git a/sound/violin/Eb7.mid b/sound/instruments/violin/Eb7.mid similarity index 100% rename from sound/violin/Eb7.mid rename to sound/instruments/violin/Eb7.mid diff --git a/sound/violin/Eb8.mid b/sound/instruments/violin/Eb8.mid similarity index 100% rename from sound/violin/Eb8.mid rename to sound/instruments/violin/Eb8.mid diff --git a/sound/violin/En1.mid b/sound/instruments/violin/En1.mid similarity index 100% rename from sound/violin/En1.mid rename to sound/instruments/violin/En1.mid diff --git a/sound/violin/En2.mid b/sound/instruments/violin/En2.mid similarity index 100% rename from sound/violin/En2.mid rename to sound/instruments/violin/En2.mid diff --git a/sound/violin/En3.mid b/sound/instruments/violin/En3.mid similarity index 100% rename from sound/violin/En3.mid rename to sound/instruments/violin/En3.mid diff --git a/sound/violin/En4.mid b/sound/instruments/violin/En4.mid similarity index 100% rename from sound/violin/En4.mid rename to sound/instruments/violin/En4.mid diff --git a/sound/violin/En5.mid b/sound/instruments/violin/En5.mid similarity index 100% rename from sound/violin/En5.mid rename to sound/instruments/violin/En5.mid diff --git a/sound/violin/En6.mid b/sound/instruments/violin/En6.mid similarity index 100% rename from sound/violin/En6.mid rename to sound/instruments/violin/En6.mid diff --git a/sound/violin/En7.mid b/sound/instruments/violin/En7.mid similarity index 100% rename from sound/violin/En7.mid rename to sound/instruments/violin/En7.mid diff --git a/sound/violin/En8.mid b/sound/instruments/violin/En8.mid similarity index 100% rename from sound/violin/En8.mid rename to sound/instruments/violin/En8.mid diff --git a/sound/violin/Fn1.mid b/sound/instruments/violin/Fn1.mid similarity index 100% rename from sound/violin/Fn1.mid rename to sound/instruments/violin/Fn1.mid diff --git a/sound/violin/Fn2.mid b/sound/instruments/violin/Fn2.mid similarity index 100% rename from sound/violin/Fn2.mid rename to sound/instruments/violin/Fn2.mid diff --git a/sound/violin/Fn3.mid b/sound/instruments/violin/Fn3.mid similarity index 100% rename from sound/violin/Fn3.mid rename to sound/instruments/violin/Fn3.mid diff --git a/sound/violin/Fn4.mid b/sound/instruments/violin/Fn4.mid similarity index 100% rename from sound/violin/Fn4.mid rename to sound/instruments/violin/Fn4.mid diff --git a/sound/violin/Fn5.mid b/sound/instruments/violin/Fn5.mid similarity index 100% rename from sound/violin/Fn5.mid rename to sound/instruments/violin/Fn5.mid diff --git a/sound/violin/Fn6.mid b/sound/instruments/violin/Fn6.mid similarity index 100% rename from sound/violin/Fn6.mid rename to sound/instruments/violin/Fn6.mid diff --git a/sound/violin/Fn7.mid b/sound/instruments/violin/Fn7.mid similarity index 100% rename from sound/violin/Fn7.mid rename to sound/instruments/violin/Fn7.mid diff --git a/sound/violin/Fn8.mid b/sound/instruments/violin/Fn8.mid similarity index 100% rename from sound/violin/Fn8.mid rename to sound/instruments/violin/Fn8.mid diff --git a/sound/violin/Gb1.mid b/sound/instruments/violin/Gb1.mid similarity index 100% rename from sound/violin/Gb1.mid rename to sound/instruments/violin/Gb1.mid diff --git a/sound/violin/Gb2.mid b/sound/instruments/violin/Gb2.mid similarity index 100% rename from sound/violin/Gb2.mid rename to sound/instruments/violin/Gb2.mid diff --git a/sound/violin/Gb3.mid b/sound/instruments/violin/Gb3.mid similarity index 100% rename from sound/violin/Gb3.mid rename to sound/instruments/violin/Gb3.mid diff --git a/sound/violin/Gb4.mid b/sound/instruments/violin/Gb4.mid similarity index 100% rename from sound/violin/Gb4.mid rename to sound/instruments/violin/Gb4.mid diff --git a/sound/violin/Gb5.mid b/sound/instruments/violin/Gb5.mid similarity index 100% rename from sound/violin/Gb5.mid rename to sound/instruments/violin/Gb5.mid diff --git a/sound/violin/Gb6.mid b/sound/instruments/violin/Gb6.mid similarity index 100% rename from sound/violin/Gb6.mid rename to sound/instruments/violin/Gb6.mid diff --git a/sound/violin/Gb7.mid b/sound/instruments/violin/Gb7.mid similarity index 100% rename from sound/violin/Gb7.mid rename to sound/instruments/violin/Gb7.mid diff --git a/sound/violin/Gb8.mid b/sound/instruments/violin/Gb8.mid similarity index 100% rename from sound/violin/Gb8.mid rename to sound/instruments/violin/Gb8.mid diff --git a/sound/violin/Gn1.mid b/sound/instruments/violin/Gn1.mid similarity index 100% rename from sound/violin/Gn1.mid rename to sound/instruments/violin/Gn1.mid diff --git a/sound/violin/Gn2.mid b/sound/instruments/violin/Gn2.mid similarity index 100% rename from sound/violin/Gn2.mid rename to sound/instruments/violin/Gn2.mid diff --git a/sound/violin/Gn3.mid b/sound/instruments/violin/Gn3.mid similarity index 100% rename from sound/violin/Gn3.mid rename to sound/instruments/violin/Gn3.mid diff --git a/sound/violin/Gn4.mid b/sound/instruments/violin/Gn4.mid similarity index 100% rename from sound/violin/Gn4.mid rename to sound/instruments/violin/Gn4.mid diff --git a/sound/violin/Gn5.mid b/sound/instruments/violin/Gn5.mid similarity index 100% rename from sound/violin/Gn5.mid rename to sound/instruments/violin/Gn5.mid diff --git a/sound/violin/Gn6.mid b/sound/instruments/violin/Gn6.mid similarity index 100% rename from sound/violin/Gn6.mid rename to sound/instruments/violin/Gn6.mid diff --git a/sound/violin/Gn7.mid b/sound/instruments/violin/Gn7.mid similarity index 100% rename from sound/violin/Gn7.mid rename to sound/instruments/violin/Gn7.mid diff --git a/sound/violin/Gn8.mid b/sound/instruments/violin/Gn8.mid similarity index 100% rename from sound/violin/Gn8.mid rename to sound/instruments/violin/Gn8.mid diff --git a/sound/items/electronic_assembly_empty.ogg b/sound/items/electronic_assembly_empty.ogg new file mode 100644 index 0000000000..9144b414df Binary files /dev/null and b/sound/items/electronic_assembly_empty.ogg differ diff --git a/sound/items/electronic_assembly_emptying.ogg b/sound/items/electronic_assembly_emptying.ogg new file mode 100644 index 0000000000..70e47e7f83 Binary files /dev/null and b/sound/items/electronic_assembly_emptying.ogg differ diff --git a/sound/piano/A#1.ogg b/sound/piano/A#1.ogg deleted file mode 100644 index b40cc72333..0000000000 Binary files a/sound/piano/A#1.ogg and /dev/null differ diff --git a/sound/piano/A#2.ogg b/sound/piano/A#2.ogg deleted file mode 100644 index 2b0677d44a..0000000000 Binary files a/sound/piano/A#2.ogg and /dev/null differ diff --git a/sound/piano/A#3.ogg b/sound/piano/A#3.ogg deleted file mode 100644 index e8fc263d8f..0000000000 Binary files a/sound/piano/A#3.ogg and /dev/null differ diff --git a/sound/piano/A#4.ogg b/sound/piano/A#4.ogg deleted file mode 100644 index 8ba7c40d33..0000000000 Binary files a/sound/piano/A#4.ogg and /dev/null differ diff --git a/sound/piano/A#5.ogg b/sound/piano/A#5.ogg deleted file mode 100644 index 65c14d3320..0000000000 Binary files a/sound/piano/A#5.ogg and /dev/null differ diff --git a/sound/piano/A#6.ogg b/sound/piano/A#6.ogg deleted file mode 100644 index 88317f7d55..0000000000 Binary files a/sound/piano/A#6.ogg and /dev/null differ diff --git a/sound/piano/A#7.ogg b/sound/piano/A#7.ogg deleted file mode 100644 index e7354522fe..0000000000 Binary files a/sound/piano/A#7.ogg and /dev/null differ diff --git a/sound/piano/A#8.ogg b/sound/piano/A#8.ogg deleted file mode 100644 index 7d8014c059..0000000000 Binary files a/sound/piano/A#8.ogg and /dev/null differ diff --git a/sound/piano/Ab1.ogg b/sound/piano/Ab1.ogg deleted file mode 100644 index 0c5ae36216..0000000000 Binary files a/sound/piano/Ab1.ogg and /dev/null differ diff --git a/sound/piano/Ab2.ogg b/sound/piano/Ab2.ogg deleted file mode 100644 index 4dabf2cc82..0000000000 Binary files a/sound/piano/Ab2.ogg and /dev/null differ diff --git a/sound/piano/Ab3.ogg b/sound/piano/Ab3.ogg deleted file mode 100644 index beb96005de..0000000000 Binary files a/sound/piano/Ab3.ogg and /dev/null differ diff --git a/sound/piano/Ab4.ogg b/sound/piano/Ab4.ogg deleted file mode 100644 index bfcf301877..0000000000 Binary files a/sound/piano/Ab4.ogg and /dev/null differ diff --git a/sound/piano/Ab5.ogg b/sound/piano/Ab5.ogg deleted file mode 100644 index b95acaf5a0..0000000000 Binary files a/sound/piano/Ab5.ogg and /dev/null differ diff --git a/sound/piano/Ab6.ogg b/sound/piano/Ab6.ogg deleted file mode 100644 index 501f51b3e1..0000000000 Binary files a/sound/piano/Ab6.ogg and /dev/null differ diff --git a/sound/piano/Ab7.ogg b/sound/piano/Ab7.ogg deleted file mode 100644 index b96f4e0766..0000000000 Binary files a/sound/piano/Ab7.ogg and /dev/null differ diff --git a/sound/piano/Ab8.ogg b/sound/piano/Ab8.ogg deleted file mode 100644 index c4bd37195b..0000000000 Binary files a/sound/piano/Ab8.ogg and /dev/null differ diff --git a/sound/piano/An1.ogg b/sound/piano/An1.ogg deleted file mode 100644 index 5698578e79..0000000000 Binary files a/sound/piano/An1.ogg and /dev/null differ diff --git a/sound/piano/An2.ogg b/sound/piano/An2.ogg deleted file mode 100644 index aaff9b8e65..0000000000 Binary files a/sound/piano/An2.ogg and /dev/null differ diff --git a/sound/piano/An3.ogg b/sound/piano/An3.ogg deleted file mode 100644 index 16fe54be83..0000000000 Binary files a/sound/piano/An3.ogg and /dev/null differ diff --git a/sound/piano/An4.ogg b/sound/piano/An4.ogg deleted file mode 100644 index 52cfc701a0..0000000000 Binary files a/sound/piano/An4.ogg and /dev/null differ diff --git a/sound/piano/An5.ogg b/sound/piano/An5.ogg deleted file mode 100644 index ba4ad8ee61..0000000000 Binary files a/sound/piano/An5.ogg and /dev/null differ diff --git a/sound/piano/An6.ogg b/sound/piano/An6.ogg deleted file mode 100644 index 49be4e31a8..0000000000 Binary files a/sound/piano/An6.ogg and /dev/null differ diff --git a/sound/piano/An7.ogg b/sound/piano/An7.ogg deleted file mode 100644 index da5f477db7..0000000000 Binary files a/sound/piano/An7.ogg and /dev/null differ diff --git a/sound/piano/An8.ogg b/sound/piano/An8.ogg deleted file mode 100644 index 32e5cb81e7..0000000000 Binary files a/sound/piano/An8.ogg and /dev/null differ diff --git a/sound/piano/B#1.ogg b/sound/piano/B#1.ogg deleted file mode 100644 index b82c6cff8a..0000000000 Binary files a/sound/piano/B#1.ogg and /dev/null differ diff --git a/sound/piano/B#2.ogg b/sound/piano/B#2.ogg deleted file mode 100644 index e218380629..0000000000 Binary files a/sound/piano/B#2.ogg and /dev/null differ diff --git a/sound/piano/B#3.ogg b/sound/piano/B#3.ogg deleted file mode 100644 index b4dd559a24..0000000000 Binary files a/sound/piano/B#3.ogg and /dev/null differ diff --git a/sound/piano/B#4.ogg b/sound/piano/B#4.ogg deleted file mode 100644 index 578c45e452..0000000000 Binary files a/sound/piano/B#4.ogg and /dev/null differ diff --git a/sound/piano/B#5.ogg b/sound/piano/B#5.ogg deleted file mode 100644 index 6dfd56115f..0000000000 Binary files a/sound/piano/B#5.ogg and /dev/null differ diff --git a/sound/piano/B#6.ogg b/sound/piano/B#6.ogg deleted file mode 100644 index 32996328c8..0000000000 Binary files a/sound/piano/B#6.ogg and /dev/null differ diff --git a/sound/piano/B#7.ogg b/sound/piano/B#7.ogg deleted file mode 100644 index 89b771aa37..0000000000 Binary files a/sound/piano/B#7.ogg and /dev/null differ diff --git a/sound/piano/B#8.ogg b/sound/piano/B#8.ogg deleted file mode 100644 index cca99040de..0000000000 Binary files a/sound/piano/B#8.ogg and /dev/null differ diff --git a/sound/piano/Bb1.ogg b/sound/piano/Bb1.ogg deleted file mode 100644 index c872abe1a9..0000000000 Binary files a/sound/piano/Bb1.ogg and /dev/null differ diff --git a/sound/piano/Bb2.ogg b/sound/piano/Bb2.ogg deleted file mode 100644 index acd54ab388..0000000000 Binary files a/sound/piano/Bb2.ogg and /dev/null differ diff --git a/sound/piano/Bb3.ogg b/sound/piano/Bb3.ogg deleted file mode 100644 index 33bea9f079..0000000000 Binary files a/sound/piano/Bb3.ogg and /dev/null differ diff --git a/sound/piano/Bb4.ogg b/sound/piano/Bb4.ogg deleted file mode 100644 index 736fa1fc8d..0000000000 Binary files a/sound/piano/Bb4.ogg and /dev/null differ diff --git a/sound/piano/Bb5.ogg b/sound/piano/Bb5.ogg deleted file mode 100644 index 38bddcf761..0000000000 Binary files a/sound/piano/Bb5.ogg and /dev/null differ diff --git a/sound/piano/Bb6.ogg b/sound/piano/Bb6.ogg deleted file mode 100644 index e7a0425745..0000000000 Binary files a/sound/piano/Bb6.ogg and /dev/null differ diff --git a/sound/piano/Bb7.ogg b/sound/piano/Bb7.ogg deleted file mode 100644 index 89441baba6..0000000000 Binary files a/sound/piano/Bb7.ogg and /dev/null differ diff --git a/sound/piano/Bb8.ogg b/sound/piano/Bb8.ogg deleted file mode 100644 index 49dce93253..0000000000 Binary files a/sound/piano/Bb8.ogg and /dev/null differ diff --git a/sound/piano/Bn1.ogg b/sound/piano/Bn1.ogg deleted file mode 100644 index 2ddf3f59b8..0000000000 Binary files a/sound/piano/Bn1.ogg and /dev/null differ diff --git a/sound/piano/Bn2.ogg b/sound/piano/Bn2.ogg deleted file mode 100644 index 92b49a24ca..0000000000 Binary files a/sound/piano/Bn2.ogg and /dev/null differ diff --git a/sound/piano/Bn3.ogg b/sound/piano/Bn3.ogg deleted file mode 100644 index 20aa8ca434..0000000000 Binary files a/sound/piano/Bn3.ogg and /dev/null differ diff --git a/sound/piano/Bn4.ogg b/sound/piano/Bn4.ogg deleted file mode 100644 index b2ecc85255..0000000000 Binary files a/sound/piano/Bn4.ogg and /dev/null differ diff --git a/sound/piano/Bn5.ogg b/sound/piano/Bn5.ogg deleted file mode 100644 index e03af44292..0000000000 Binary files a/sound/piano/Bn5.ogg and /dev/null differ diff --git a/sound/piano/Bn6.ogg b/sound/piano/Bn6.ogg deleted file mode 100644 index 1acf0d94d0..0000000000 Binary files a/sound/piano/Bn6.ogg and /dev/null differ diff --git a/sound/piano/Bn7.ogg b/sound/piano/Bn7.ogg deleted file mode 100644 index b68372b4ab..0000000000 Binary files a/sound/piano/Bn7.ogg and /dev/null differ diff --git a/sound/piano/Bn8.ogg b/sound/piano/Bn8.ogg deleted file mode 100644 index 5db915a607..0000000000 Binary files a/sound/piano/Bn8.ogg and /dev/null differ diff --git a/sound/piano/C#1.ogg b/sound/piano/C#1.ogg deleted file mode 100644 index dc3c859cae..0000000000 Binary files a/sound/piano/C#1.ogg and /dev/null differ diff --git a/sound/piano/C#2.ogg b/sound/piano/C#2.ogg deleted file mode 100644 index 5a36e244a7..0000000000 Binary files a/sound/piano/C#2.ogg and /dev/null differ diff --git a/sound/piano/C#3.ogg b/sound/piano/C#3.ogg deleted file mode 100644 index af3e49f21e..0000000000 Binary files a/sound/piano/C#3.ogg and /dev/null differ diff --git a/sound/piano/C#4.ogg b/sound/piano/C#4.ogg deleted file mode 100644 index 8b18a4ce41..0000000000 Binary files a/sound/piano/C#4.ogg and /dev/null differ diff --git a/sound/piano/C#5.ogg b/sound/piano/C#5.ogg deleted file mode 100644 index 690bd2763e..0000000000 Binary files a/sound/piano/C#5.ogg and /dev/null differ diff --git a/sound/piano/C#6.ogg b/sound/piano/C#6.ogg deleted file mode 100644 index 3a27950bd3..0000000000 Binary files a/sound/piano/C#6.ogg and /dev/null differ diff --git a/sound/piano/C#7.ogg b/sound/piano/C#7.ogg deleted file mode 100644 index 9a7bc071ea..0000000000 Binary files a/sound/piano/C#7.ogg and /dev/null differ diff --git a/sound/piano/C#8.ogg b/sound/piano/C#8.ogg deleted file mode 100644 index 9adc2dbbbc..0000000000 Binary files a/sound/piano/C#8.ogg and /dev/null differ diff --git a/sound/piano/Cb2.ogg b/sound/piano/Cb2.ogg deleted file mode 100644 index 7c36759c95..0000000000 Binary files a/sound/piano/Cb2.ogg and /dev/null differ diff --git a/sound/piano/Cb3.ogg b/sound/piano/Cb3.ogg deleted file mode 100644 index b856963854..0000000000 Binary files a/sound/piano/Cb3.ogg and /dev/null differ diff --git a/sound/piano/Cb4.ogg b/sound/piano/Cb4.ogg deleted file mode 100644 index fb693c0cad..0000000000 Binary files a/sound/piano/Cb4.ogg and /dev/null differ diff --git a/sound/piano/Cb5.ogg b/sound/piano/Cb5.ogg deleted file mode 100644 index b114181e3f..0000000000 Binary files a/sound/piano/Cb5.ogg and /dev/null differ diff --git a/sound/piano/Cb6.ogg b/sound/piano/Cb6.ogg deleted file mode 100644 index 42470f9f3a..0000000000 Binary files a/sound/piano/Cb6.ogg and /dev/null differ diff --git a/sound/piano/Cb7.ogg b/sound/piano/Cb7.ogg deleted file mode 100644 index adeb34cacd..0000000000 Binary files a/sound/piano/Cb7.ogg and /dev/null differ diff --git a/sound/piano/Cb8.ogg b/sound/piano/Cb8.ogg deleted file mode 100644 index 1f2cbb94dd..0000000000 Binary files a/sound/piano/Cb8.ogg and /dev/null differ diff --git a/sound/piano/Cb9.ogg b/sound/piano/Cb9.ogg deleted file mode 100644 index 25c0d646c3..0000000000 Binary files a/sound/piano/Cb9.ogg and /dev/null differ diff --git a/sound/piano/Cn1.ogg b/sound/piano/Cn1.ogg deleted file mode 100644 index e05b36d325..0000000000 Binary files a/sound/piano/Cn1.ogg and /dev/null differ diff --git a/sound/piano/Cn2.ogg b/sound/piano/Cn2.ogg deleted file mode 100644 index cc96f26570..0000000000 Binary files a/sound/piano/Cn2.ogg and /dev/null differ diff --git a/sound/piano/Cn3.ogg b/sound/piano/Cn3.ogg deleted file mode 100644 index 6d2f206927..0000000000 Binary files a/sound/piano/Cn3.ogg and /dev/null differ diff --git a/sound/piano/Cn4.ogg b/sound/piano/Cn4.ogg deleted file mode 100644 index d0c0f4995e..0000000000 Binary files a/sound/piano/Cn4.ogg and /dev/null differ diff --git a/sound/piano/Cn5.ogg b/sound/piano/Cn5.ogg deleted file mode 100644 index 1d95dfa099..0000000000 Binary files a/sound/piano/Cn5.ogg and /dev/null differ diff --git a/sound/piano/Cn6.ogg b/sound/piano/Cn6.ogg deleted file mode 100644 index f1e847d32f..0000000000 Binary files a/sound/piano/Cn6.ogg and /dev/null differ diff --git a/sound/piano/Cn7.ogg b/sound/piano/Cn7.ogg deleted file mode 100644 index 85cb1dd0fe..0000000000 Binary files a/sound/piano/Cn7.ogg and /dev/null differ diff --git a/sound/piano/Cn8.ogg b/sound/piano/Cn8.ogg deleted file mode 100644 index f081d91d8b..0000000000 Binary files a/sound/piano/Cn8.ogg and /dev/null differ diff --git a/sound/piano/Cn9.ogg b/sound/piano/Cn9.ogg deleted file mode 100644 index 06172ca6f1..0000000000 Binary files a/sound/piano/Cn9.ogg and /dev/null differ diff --git a/sound/piano/D#1.ogg b/sound/piano/D#1.ogg deleted file mode 100644 index bd58c7dd75..0000000000 Binary files a/sound/piano/D#1.ogg and /dev/null differ diff --git a/sound/piano/D#2.ogg b/sound/piano/D#2.ogg deleted file mode 100644 index fc01076810..0000000000 Binary files a/sound/piano/D#2.ogg and /dev/null differ diff --git a/sound/piano/D#3.ogg b/sound/piano/D#3.ogg deleted file mode 100644 index e437f44466..0000000000 Binary files a/sound/piano/D#3.ogg and /dev/null differ diff --git a/sound/piano/D#4.ogg b/sound/piano/D#4.ogg deleted file mode 100644 index 0804aa03de..0000000000 Binary files a/sound/piano/D#4.ogg and /dev/null differ diff --git a/sound/piano/D#5.ogg b/sound/piano/D#5.ogg deleted file mode 100644 index 40889dbae5..0000000000 Binary files a/sound/piano/D#5.ogg and /dev/null differ diff --git a/sound/piano/D#6.ogg b/sound/piano/D#6.ogg deleted file mode 100644 index 616481d2f9..0000000000 Binary files a/sound/piano/D#6.ogg and /dev/null differ diff --git a/sound/piano/D#7.ogg b/sound/piano/D#7.ogg deleted file mode 100644 index 5c191fb7f6..0000000000 Binary files a/sound/piano/D#7.ogg and /dev/null differ diff --git a/sound/piano/D#8.ogg b/sound/piano/D#8.ogg deleted file mode 100644 index 5955ed7f8d..0000000000 Binary files a/sound/piano/D#8.ogg and /dev/null differ diff --git a/sound/piano/Db1.ogg b/sound/piano/Db1.ogg deleted file mode 100644 index a33554e476..0000000000 Binary files a/sound/piano/Db1.ogg and /dev/null differ diff --git a/sound/piano/Db2.ogg b/sound/piano/Db2.ogg deleted file mode 100644 index dd45c2f11d..0000000000 Binary files a/sound/piano/Db2.ogg and /dev/null differ diff --git a/sound/piano/Db3.ogg b/sound/piano/Db3.ogg deleted file mode 100644 index ebfa23bbc3..0000000000 Binary files a/sound/piano/Db3.ogg and /dev/null differ diff --git a/sound/piano/Db4.ogg b/sound/piano/Db4.ogg deleted file mode 100644 index 52486484eb..0000000000 Binary files a/sound/piano/Db4.ogg and /dev/null differ diff --git a/sound/piano/Db5.ogg b/sound/piano/Db5.ogg deleted file mode 100644 index 8250bbb7cb..0000000000 Binary files a/sound/piano/Db5.ogg and /dev/null differ diff --git a/sound/piano/Db6.ogg b/sound/piano/Db6.ogg deleted file mode 100644 index 8ec394da17..0000000000 Binary files a/sound/piano/Db6.ogg and /dev/null differ diff --git a/sound/piano/Db7.ogg b/sound/piano/Db7.ogg deleted file mode 100644 index 9a6c81dc34..0000000000 Binary files a/sound/piano/Db7.ogg and /dev/null differ diff --git a/sound/piano/Db8.ogg b/sound/piano/Db8.ogg deleted file mode 100644 index 2790f60390..0000000000 Binary files a/sound/piano/Db8.ogg and /dev/null differ diff --git a/sound/piano/Dn1.ogg b/sound/piano/Dn1.ogg deleted file mode 100644 index 89ac14cc14..0000000000 Binary files a/sound/piano/Dn1.ogg and /dev/null differ diff --git a/sound/piano/Dn2.ogg b/sound/piano/Dn2.ogg deleted file mode 100644 index bb5f18fbf7..0000000000 Binary files a/sound/piano/Dn2.ogg and /dev/null differ diff --git a/sound/piano/Dn3.ogg b/sound/piano/Dn3.ogg deleted file mode 100644 index 6a54b77549..0000000000 Binary files a/sound/piano/Dn3.ogg and /dev/null differ diff --git a/sound/piano/Dn4.ogg b/sound/piano/Dn4.ogg deleted file mode 100644 index 8f930b8b50..0000000000 Binary files a/sound/piano/Dn4.ogg and /dev/null differ diff --git a/sound/piano/Dn5.ogg b/sound/piano/Dn5.ogg deleted file mode 100644 index 981d37e910..0000000000 Binary files a/sound/piano/Dn5.ogg and /dev/null differ diff --git a/sound/piano/Dn6.ogg b/sound/piano/Dn6.ogg deleted file mode 100644 index 112f101bb2..0000000000 Binary files a/sound/piano/Dn6.ogg and /dev/null differ diff --git a/sound/piano/Dn7.ogg b/sound/piano/Dn7.ogg deleted file mode 100644 index ff2724463c..0000000000 Binary files a/sound/piano/Dn7.ogg and /dev/null differ diff --git a/sound/piano/Dn8.ogg b/sound/piano/Dn8.ogg deleted file mode 100644 index 5e2523f123..0000000000 Binary files a/sound/piano/Dn8.ogg and /dev/null differ diff --git a/sound/piano/E#1.ogg b/sound/piano/E#1.ogg deleted file mode 100644 index c192032dc0..0000000000 Binary files a/sound/piano/E#1.ogg and /dev/null differ diff --git a/sound/piano/E#2.ogg b/sound/piano/E#2.ogg deleted file mode 100644 index da09b64979..0000000000 Binary files a/sound/piano/E#2.ogg and /dev/null differ diff --git a/sound/piano/E#3.ogg b/sound/piano/E#3.ogg deleted file mode 100644 index e7a2f93535..0000000000 Binary files a/sound/piano/E#3.ogg and /dev/null differ diff --git a/sound/piano/E#4.ogg b/sound/piano/E#4.ogg deleted file mode 100644 index b3b14b7266..0000000000 Binary files a/sound/piano/E#4.ogg and /dev/null differ diff --git a/sound/piano/E#5.ogg b/sound/piano/E#5.ogg deleted file mode 100644 index 08bc2cf5a8..0000000000 Binary files a/sound/piano/E#5.ogg and /dev/null differ diff --git a/sound/piano/E#6.ogg b/sound/piano/E#6.ogg deleted file mode 100644 index 6060576f36..0000000000 Binary files a/sound/piano/E#6.ogg and /dev/null differ diff --git a/sound/piano/E#7.ogg b/sound/piano/E#7.ogg deleted file mode 100644 index 77a81ed570..0000000000 Binary files a/sound/piano/E#7.ogg and /dev/null differ diff --git a/sound/piano/E#8.ogg b/sound/piano/E#8.ogg deleted file mode 100644 index 5502fedbda..0000000000 Binary files a/sound/piano/E#8.ogg and /dev/null differ diff --git a/sound/piano/Eb1.ogg b/sound/piano/Eb1.ogg deleted file mode 100644 index 8923e11fd9..0000000000 Binary files a/sound/piano/Eb1.ogg and /dev/null differ diff --git a/sound/piano/Eb2.ogg b/sound/piano/Eb2.ogg deleted file mode 100644 index b61faa1737..0000000000 Binary files a/sound/piano/Eb2.ogg and /dev/null differ diff --git a/sound/piano/Eb3.ogg b/sound/piano/Eb3.ogg deleted file mode 100644 index bf80c6eeeb..0000000000 Binary files a/sound/piano/Eb3.ogg and /dev/null differ diff --git a/sound/piano/Eb4.ogg b/sound/piano/Eb4.ogg deleted file mode 100644 index fa991d11c5..0000000000 Binary files a/sound/piano/Eb4.ogg and /dev/null differ diff --git a/sound/piano/Eb5.ogg b/sound/piano/Eb5.ogg deleted file mode 100644 index e63e0143a5..0000000000 Binary files a/sound/piano/Eb5.ogg and /dev/null differ diff --git a/sound/piano/Eb6.ogg b/sound/piano/Eb6.ogg deleted file mode 100644 index e3f6ccb4c4..0000000000 Binary files a/sound/piano/Eb6.ogg and /dev/null differ diff --git a/sound/piano/Eb7.ogg b/sound/piano/Eb7.ogg deleted file mode 100644 index a7dc94edbd..0000000000 Binary files a/sound/piano/Eb7.ogg and /dev/null differ diff --git a/sound/piano/Eb8.ogg b/sound/piano/Eb8.ogg deleted file mode 100644 index f6a7f46657..0000000000 Binary files a/sound/piano/Eb8.ogg and /dev/null differ diff --git a/sound/piano/En1.ogg b/sound/piano/En1.ogg deleted file mode 100644 index fbcb29c2de..0000000000 Binary files a/sound/piano/En1.ogg and /dev/null differ diff --git a/sound/piano/En2.ogg b/sound/piano/En2.ogg deleted file mode 100644 index b6f4f1a5e8..0000000000 Binary files a/sound/piano/En2.ogg and /dev/null differ diff --git a/sound/piano/En3.ogg b/sound/piano/En3.ogg deleted file mode 100644 index 5f6ade5f1b..0000000000 Binary files a/sound/piano/En3.ogg and /dev/null differ diff --git a/sound/piano/En4.ogg b/sound/piano/En4.ogg deleted file mode 100644 index 0f567ffb98..0000000000 Binary files a/sound/piano/En4.ogg and /dev/null differ diff --git a/sound/piano/En5.ogg b/sound/piano/En5.ogg deleted file mode 100644 index 05719f2a2d..0000000000 Binary files a/sound/piano/En5.ogg and /dev/null differ diff --git a/sound/piano/En6.ogg b/sound/piano/En6.ogg deleted file mode 100644 index b1295b67ee..0000000000 Binary files a/sound/piano/En6.ogg and /dev/null differ diff --git a/sound/piano/En7.ogg b/sound/piano/En7.ogg deleted file mode 100644 index 0d97b93fbc..0000000000 Binary files a/sound/piano/En7.ogg and /dev/null differ diff --git a/sound/piano/En8.ogg b/sound/piano/En8.ogg deleted file mode 100644 index f0ea5f1ec5..0000000000 Binary files a/sound/piano/En8.ogg and /dev/null differ diff --git a/sound/piano/F#1.ogg b/sound/piano/F#1.ogg deleted file mode 100644 index ad9e0a563c..0000000000 Binary files a/sound/piano/F#1.ogg and /dev/null differ diff --git a/sound/piano/F#2.ogg b/sound/piano/F#2.ogg deleted file mode 100644 index b1e86bfeaa..0000000000 Binary files a/sound/piano/F#2.ogg and /dev/null differ diff --git a/sound/piano/F#3.ogg b/sound/piano/F#3.ogg deleted file mode 100644 index 53b56c5017..0000000000 Binary files a/sound/piano/F#3.ogg and /dev/null differ diff --git a/sound/piano/F#4.ogg b/sound/piano/F#4.ogg deleted file mode 100644 index e9d71303a1..0000000000 Binary files a/sound/piano/F#4.ogg and /dev/null differ diff --git a/sound/piano/F#5.ogg b/sound/piano/F#5.ogg deleted file mode 100644 index c4cc3165ab..0000000000 Binary files a/sound/piano/F#5.ogg and /dev/null differ diff --git a/sound/piano/F#6.ogg b/sound/piano/F#6.ogg deleted file mode 100644 index 0942095116..0000000000 Binary files a/sound/piano/F#6.ogg and /dev/null differ diff --git a/sound/piano/F#7.ogg b/sound/piano/F#7.ogg deleted file mode 100644 index c37dc8fb37..0000000000 Binary files a/sound/piano/F#7.ogg and /dev/null differ diff --git a/sound/piano/F#8.ogg b/sound/piano/F#8.ogg deleted file mode 100644 index 0241e9beab..0000000000 Binary files a/sound/piano/F#8.ogg and /dev/null differ diff --git a/sound/piano/Fb1.ogg b/sound/piano/Fb1.ogg deleted file mode 100644 index fbcb29c2de..0000000000 Binary files a/sound/piano/Fb1.ogg and /dev/null differ diff --git a/sound/piano/Fb2.ogg b/sound/piano/Fb2.ogg deleted file mode 100644 index 4cece2d9cd..0000000000 Binary files a/sound/piano/Fb2.ogg and /dev/null differ diff --git a/sound/piano/Fb3.ogg b/sound/piano/Fb3.ogg deleted file mode 100644 index 3675271a15..0000000000 Binary files a/sound/piano/Fb3.ogg and /dev/null differ diff --git a/sound/piano/Fb4.ogg b/sound/piano/Fb4.ogg deleted file mode 100644 index 2608770227..0000000000 Binary files a/sound/piano/Fb4.ogg and /dev/null differ diff --git a/sound/piano/Fb5.ogg b/sound/piano/Fb5.ogg deleted file mode 100644 index f8016a6d24..0000000000 Binary files a/sound/piano/Fb5.ogg and /dev/null differ diff --git a/sound/piano/Fb6.ogg b/sound/piano/Fb6.ogg deleted file mode 100644 index 397714bdaa..0000000000 Binary files a/sound/piano/Fb6.ogg and /dev/null differ diff --git a/sound/piano/Fb7.ogg b/sound/piano/Fb7.ogg deleted file mode 100644 index d9f630f11d..0000000000 Binary files a/sound/piano/Fb7.ogg and /dev/null differ diff --git a/sound/piano/Fb8.ogg b/sound/piano/Fb8.ogg deleted file mode 100644 index 28ae958d82..0000000000 Binary files a/sound/piano/Fb8.ogg and /dev/null differ diff --git a/sound/piano/Fn1.ogg b/sound/piano/Fn1.ogg deleted file mode 100644 index 9d10f8ccf6..0000000000 Binary files a/sound/piano/Fn1.ogg and /dev/null differ diff --git a/sound/piano/Fn2.ogg b/sound/piano/Fn2.ogg deleted file mode 100644 index 24cff105e6..0000000000 Binary files a/sound/piano/Fn2.ogg and /dev/null differ diff --git a/sound/piano/Fn3.ogg b/sound/piano/Fn3.ogg deleted file mode 100644 index 313c54b59a..0000000000 Binary files a/sound/piano/Fn3.ogg and /dev/null differ diff --git a/sound/piano/Fn4.ogg b/sound/piano/Fn4.ogg deleted file mode 100644 index 3331d67fbe..0000000000 Binary files a/sound/piano/Fn4.ogg and /dev/null differ diff --git a/sound/piano/Fn5.ogg b/sound/piano/Fn5.ogg deleted file mode 100644 index 7294171595..0000000000 Binary files a/sound/piano/Fn5.ogg and /dev/null differ diff --git a/sound/piano/Fn6.ogg b/sound/piano/Fn6.ogg deleted file mode 100644 index 8218928c85..0000000000 Binary files a/sound/piano/Fn6.ogg and /dev/null differ diff --git a/sound/piano/Fn7.ogg b/sound/piano/Fn7.ogg deleted file mode 100644 index b459e82acd..0000000000 Binary files a/sound/piano/Fn7.ogg and /dev/null differ diff --git a/sound/piano/Fn8.ogg b/sound/piano/Fn8.ogg deleted file mode 100644 index be14499059..0000000000 Binary files a/sound/piano/Fn8.ogg and /dev/null differ diff --git a/sound/piano/G#1.ogg b/sound/piano/G#1.ogg deleted file mode 100644 index 3ef68c0d87..0000000000 Binary files a/sound/piano/G#1.ogg and /dev/null differ diff --git a/sound/piano/G#2.ogg b/sound/piano/G#2.ogg deleted file mode 100644 index 4d92169365..0000000000 Binary files a/sound/piano/G#2.ogg and /dev/null differ diff --git a/sound/piano/G#3.ogg b/sound/piano/G#3.ogg deleted file mode 100644 index 21a03c7805..0000000000 Binary files a/sound/piano/G#3.ogg and /dev/null differ diff --git a/sound/piano/G#4.ogg b/sound/piano/G#4.ogg deleted file mode 100644 index 070ad2b453..0000000000 Binary files a/sound/piano/G#4.ogg and /dev/null differ diff --git a/sound/piano/G#5.ogg b/sound/piano/G#5.ogg deleted file mode 100644 index 233256500f..0000000000 Binary files a/sound/piano/G#5.ogg and /dev/null differ diff --git a/sound/piano/G#6.ogg b/sound/piano/G#6.ogg deleted file mode 100644 index 3c387fcfab..0000000000 Binary files a/sound/piano/G#6.ogg and /dev/null differ diff --git a/sound/piano/G#7.ogg b/sound/piano/G#7.ogg deleted file mode 100644 index 4ba6c8b658..0000000000 Binary files a/sound/piano/G#7.ogg and /dev/null differ diff --git a/sound/piano/G#8.ogg b/sound/piano/G#8.ogg deleted file mode 100644 index b847ab1c86..0000000000 Binary files a/sound/piano/G#8.ogg and /dev/null differ diff --git a/sound/piano/Gb1.ogg b/sound/piano/Gb1.ogg deleted file mode 100644 index d53e3ea9d8..0000000000 Binary files a/sound/piano/Gb1.ogg and /dev/null differ diff --git a/sound/piano/Gb2.ogg b/sound/piano/Gb2.ogg deleted file mode 100644 index 0ceea3ecc8..0000000000 Binary files a/sound/piano/Gb2.ogg and /dev/null differ diff --git a/sound/piano/Gb3.ogg b/sound/piano/Gb3.ogg deleted file mode 100644 index 53b56c5017..0000000000 Binary files a/sound/piano/Gb3.ogg and /dev/null differ diff --git a/sound/piano/Gb4.ogg b/sound/piano/Gb4.ogg deleted file mode 100644 index c982d7beaf..0000000000 Binary files a/sound/piano/Gb4.ogg and /dev/null differ diff --git a/sound/piano/Gb5.ogg b/sound/piano/Gb5.ogg deleted file mode 100644 index 787c19bed8..0000000000 Binary files a/sound/piano/Gb5.ogg and /dev/null differ diff --git a/sound/piano/Gb6.ogg b/sound/piano/Gb6.ogg deleted file mode 100644 index d5a5dbb2d1..0000000000 Binary files a/sound/piano/Gb6.ogg and /dev/null differ diff --git a/sound/piano/Gb7.ogg b/sound/piano/Gb7.ogg deleted file mode 100644 index c6f9271680..0000000000 Binary files a/sound/piano/Gb7.ogg and /dev/null differ diff --git a/sound/piano/Gb8.ogg b/sound/piano/Gb8.ogg deleted file mode 100644 index 85c0b70754..0000000000 Binary files a/sound/piano/Gb8.ogg and /dev/null differ diff --git a/sound/piano/Gn1.ogg b/sound/piano/Gn1.ogg deleted file mode 100644 index d2829a4c0b..0000000000 Binary files a/sound/piano/Gn1.ogg and /dev/null differ diff --git a/sound/piano/Gn2.ogg b/sound/piano/Gn2.ogg deleted file mode 100644 index e657124c71..0000000000 Binary files a/sound/piano/Gn2.ogg and /dev/null differ diff --git a/sound/piano/Gn3.ogg b/sound/piano/Gn3.ogg deleted file mode 100644 index c1e88555f1..0000000000 Binary files a/sound/piano/Gn3.ogg and /dev/null differ diff --git a/sound/piano/Gn4.ogg b/sound/piano/Gn4.ogg deleted file mode 100644 index bbae7fa3e8..0000000000 Binary files a/sound/piano/Gn4.ogg and /dev/null differ diff --git a/sound/piano/Gn5.ogg b/sound/piano/Gn5.ogg deleted file mode 100644 index 556cd6085a..0000000000 Binary files a/sound/piano/Gn5.ogg and /dev/null differ diff --git a/sound/piano/Gn6.ogg b/sound/piano/Gn6.ogg deleted file mode 100644 index 6bf8c36013..0000000000 Binary files a/sound/piano/Gn6.ogg and /dev/null differ diff --git a/sound/piano/Gn7.ogg b/sound/piano/Gn7.ogg deleted file mode 100644 index 0637492985..0000000000 Binary files a/sound/piano/Gn7.ogg and /dev/null differ diff --git a/sound/piano/Gn8.ogg b/sound/piano/Gn8.ogg deleted file mode 100644 index 85f89a198e..0000000000 Binary files a/sound/piano/Gn8.ogg and /dev/null differ diff --git a/sound/violin/A#1.mid b/sound/violin/A#1.mid deleted file mode 100644 index 693b73f542..0000000000 Binary files a/sound/violin/A#1.mid and /dev/null differ diff --git a/sound/violin/A#2.mid b/sound/violin/A#2.mid deleted file mode 100644 index 40da5f3da1..0000000000 Binary files a/sound/violin/A#2.mid and /dev/null differ diff --git a/sound/violin/A#3.mid b/sound/violin/A#3.mid deleted file mode 100644 index 5bab6ccd63..0000000000 Binary files a/sound/violin/A#3.mid and /dev/null differ diff --git a/sound/violin/A#4.mid b/sound/violin/A#4.mid deleted file mode 100644 index dce830448e..0000000000 Binary files a/sound/violin/A#4.mid and /dev/null differ diff --git a/sound/violin/A#5.mid b/sound/violin/A#5.mid deleted file mode 100644 index fda796e27b..0000000000 Binary files a/sound/violin/A#5.mid and /dev/null differ diff --git a/sound/violin/A#6.mid b/sound/violin/A#6.mid deleted file mode 100644 index 9e5da684f4..0000000000 Binary files a/sound/violin/A#6.mid and /dev/null differ diff --git a/sound/violin/A#7.mid b/sound/violin/A#7.mid deleted file mode 100644 index 215c56cbe7..0000000000 Binary files a/sound/violin/A#7.mid and /dev/null differ diff --git a/sound/violin/A#8.mid b/sound/violin/A#8.mid deleted file mode 100644 index 4b55c34691..0000000000 Binary files a/sound/violin/A#8.mid and /dev/null differ diff --git a/sound/violin/B#1.mid b/sound/violin/B#1.mid deleted file mode 100644 index d83b176edd..0000000000 Binary files a/sound/violin/B#1.mid and /dev/null differ diff --git a/sound/violin/B#2.mid b/sound/violin/B#2.mid deleted file mode 100644 index cddff75625..0000000000 Binary files a/sound/violin/B#2.mid and /dev/null differ diff --git a/sound/violin/B#3.mid b/sound/violin/B#3.mid deleted file mode 100644 index 8bd7ec2fa9..0000000000 Binary files a/sound/violin/B#3.mid and /dev/null differ diff --git a/sound/violin/B#4.mid b/sound/violin/B#4.mid deleted file mode 100644 index 4c7ab84b57..0000000000 Binary files a/sound/violin/B#4.mid and /dev/null differ diff --git a/sound/violin/B#5.mid b/sound/violin/B#5.mid deleted file mode 100644 index d7f990b2d6..0000000000 Binary files a/sound/violin/B#5.mid and /dev/null differ diff --git a/sound/violin/B#6.mid b/sound/violin/B#6.mid deleted file mode 100644 index e124ccb8e2..0000000000 Binary files a/sound/violin/B#6.mid and /dev/null differ diff --git a/sound/violin/B#7.mid b/sound/violin/B#7.mid deleted file mode 100644 index 231c9e428d..0000000000 Binary files a/sound/violin/B#7.mid and /dev/null differ diff --git a/sound/violin/B#8.mid b/sound/violin/B#8.mid deleted file mode 100644 index 981943c08f..0000000000 Binary files a/sound/violin/B#8.mid and /dev/null differ diff --git a/sound/violin/C#1.mid b/sound/violin/C#1.mid deleted file mode 100644 index 88dba85145..0000000000 Binary files a/sound/violin/C#1.mid and /dev/null differ diff --git a/sound/violin/C#2.mid b/sound/violin/C#2.mid deleted file mode 100644 index b510926b45..0000000000 Binary files a/sound/violin/C#2.mid and /dev/null differ diff --git a/sound/violin/C#3.mid b/sound/violin/C#3.mid deleted file mode 100644 index 9954bbe478..0000000000 Binary files a/sound/violin/C#3.mid and /dev/null differ diff --git a/sound/violin/C#4.mid b/sound/violin/C#4.mid deleted file mode 100644 index 2c5ff74db0..0000000000 Binary files a/sound/violin/C#4.mid and /dev/null differ diff --git a/sound/violin/C#5.mid b/sound/violin/C#5.mid deleted file mode 100644 index e5850a3fd0..0000000000 Binary files a/sound/violin/C#5.mid and /dev/null differ diff --git a/sound/violin/C#6.mid b/sound/violin/C#6.mid deleted file mode 100644 index 217c0ad014..0000000000 Binary files a/sound/violin/C#6.mid and /dev/null differ diff --git a/sound/violin/C#7.mid b/sound/violin/C#7.mid deleted file mode 100644 index ec32bdbf90..0000000000 Binary files a/sound/violin/C#7.mid and /dev/null differ diff --git a/sound/violin/C#8.mid b/sound/violin/C#8.mid deleted file mode 100644 index 555bce3db0..0000000000 Binary files a/sound/violin/C#8.mid and /dev/null differ diff --git a/sound/violin/Cb1.mid b/sound/violin/Cb1.mid deleted file mode 100644 index a00f09dfb0..0000000000 Binary files a/sound/violin/Cb1.mid and /dev/null differ diff --git a/sound/violin/Cb2.mid b/sound/violin/Cb2.mid deleted file mode 100644 index 4085711bf1..0000000000 Binary files a/sound/violin/Cb2.mid and /dev/null differ diff --git a/sound/violin/Cb3.mid b/sound/violin/Cb3.mid deleted file mode 100644 index f647983ef0..0000000000 Binary files a/sound/violin/Cb3.mid and /dev/null differ diff --git a/sound/violin/Cb4.mid b/sound/violin/Cb4.mid deleted file mode 100644 index 24f22f09ee..0000000000 Binary files a/sound/violin/Cb4.mid and /dev/null differ diff --git a/sound/violin/Cb5.mid b/sound/violin/Cb5.mid deleted file mode 100644 index 057e97c5e0..0000000000 Binary files a/sound/violin/Cb5.mid and /dev/null differ diff --git a/sound/violin/Cb6.mid b/sound/violin/Cb6.mid deleted file mode 100644 index 887e65fc13..0000000000 Binary files a/sound/violin/Cb6.mid and /dev/null differ diff --git a/sound/violin/Cb7.mid b/sound/violin/Cb7.mid deleted file mode 100644 index 99668bc192..0000000000 Binary files a/sound/violin/Cb7.mid and /dev/null differ diff --git a/sound/violin/Cb8.mid b/sound/violin/Cb8.mid deleted file mode 100644 index 53ea61d1b2..0000000000 Binary files a/sound/violin/Cb8.mid and /dev/null differ diff --git a/sound/violin/Cb9.mid b/sound/violin/Cb9.mid deleted file mode 100644 index 1e8c3afadf..0000000000 Binary files a/sound/violin/Cb9.mid and /dev/null differ diff --git a/sound/violin/D#1.mid b/sound/violin/D#1.mid deleted file mode 100644 index 829e6fcf18..0000000000 Binary files a/sound/violin/D#1.mid and /dev/null differ diff --git a/sound/violin/D#2.mid b/sound/violin/D#2.mid deleted file mode 100644 index 66029b340c..0000000000 Binary files a/sound/violin/D#2.mid and /dev/null differ diff --git a/sound/violin/D#3.mid b/sound/violin/D#3.mid deleted file mode 100644 index c982375941..0000000000 Binary files a/sound/violin/D#3.mid and /dev/null differ diff --git a/sound/violin/D#4.mid b/sound/violin/D#4.mid deleted file mode 100644 index 016ed4f1ed..0000000000 Binary files a/sound/violin/D#4.mid and /dev/null differ diff --git a/sound/violin/D#5.mid b/sound/violin/D#5.mid deleted file mode 100644 index ddb511795d..0000000000 Binary files a/sound/violin/D#5.mid and /dev/null differ diff --git a/sound/violin/D#6.mid b/sound/violin/D#6.mid deleted file mode 100644 index b7242b9ab9..0000000000 Binary files a/sound/violin/D#6.mid and /dev/null differ diff --git a/sound/violin/D#7.mid b/sound/violin/D#7.mid deleted file mode 100644 index 773538340a..0000000000 Binary files a/sound/violin/D#7.mid and /dev/null differ diff --git a/sound/violin/D#8.mid b/sound/violin/D#8.mid deleted file mode 100644 index 4ad074e173..0000000000 Binary files a/sound/violin/D#8.mid and /dev/null differ diff --git a/sound/violin/E#1.mid b/sound/violin/E#1.mid deleted file mode 100644 index 3f130ee126..0000000000 Binary files a/sound/violin/E#1.mid and /dev/null differ diff --git a/sound/violin/E#2.mid b/sound/violin/E#2.mid deleted file mode 100644 index f67c2d0a26..0000000000 Binary files a/sound/violin/E#2.mid and /dev/null differ diff --git a/sound/violin/E#3.mid b/sound/violin/E#3.mid deleted file mode 100644 index bb393382d6..0000000000 Binary files a/sound/violin/E#3.mid and /dev/null differ diff --git a/sound/violin/E#4.mid b/sound/violin/E#4.mid deleted file mode 100644 index a96520c595..0000000000 Binary files a/sound/violin/E#4.mid and /dev/null differ diff --git a/sound/violin/E#5.mid b/sound/violin/E#5.mid deleted file mode 100644 index d1378af197..0000000000 Binary files a/sound/violin/E#5.mid and /dev/null differ diff --git a/sound/violin/E#6.mid b/sound/violin/E#6.mid deleted file mode 100644 index 7abe40bd82..0000000000 Binary files a/sound/violin/E#6.mid and /dev/null differ diff --git a/sound/violin/E#7.mid b/sound/violin/E#7.mid deleted file mode 100644 index df278c20d6..0000000000 Binary files a/sound/violin/E#7.mid and /dev/null differ diff --git a/sound/violin/E#8.mid b/sound/violin/E#8.mid deleted file mode 100644 index 35254cd5b2..0000000000 Binary files a/sound/violin/E#8.mid and /dev/null differ diff --git a/sound/violin/F#1.mid b/sound/violin/F#1.mid deleted file mode 100644 index d18668e891..0000000000 Binary files a/sound/violin/F#1.mid and /dev/null differ diff --git a/sound/violin/F#2.mid b/sound/violin/F#2.mid deleted file mode 100644 index 302f0c6fdc..0000000000 Binary files a/sound/violin/F#2.mid and /dev/null differ diff --git a/sound/violin/F#3.mid b/sound/violin/F#3.mid deleted file mode 100644 index 1f592fc903..0000000000 Binary files a/sound/violin/F#3.mid and /dev/null differ diff --git a/sound/violin/F#4.mid b/sound/violin/F#4.mid deleted file mode 100644 index 45854126f9..0000000000 Binary files a/sound/violin/F#4.mid and /dev/null differ diff --git a/sound/violin/F#5.mid b/sound/violin/F#5.mid deleted file mode 100644 index fb1e1da339..0000000000 Binary files a/sound/violin/F#5.mid and /dev/null differ diff --git a/sound/violin/F#6.mid b/sound/violin/F#6.mid deleted file mode 100644 index bfa896bb78..0000000000 Binary files a/sound/violin/F#6.mid and /dev/null differ diff --git a/sound/violin/F#7.mid b/sound/violin/F#7.mid deleted file mode 100644 index a27763c1d4..0000000000 Binary files a/sound/violin/F#7.mid and /dev/null differ diff --git a/sound/violin/F#8.mid b/sound/violin/F#8.mid deleted file mode 100644 index aaab80a727..0000000000 Binary files a/sound/violin/F#8.mid and /dev/null differ diff --git a/sound/violin/Fb1.mid b/sound/violin/Fb1.mid deleted file mode 100644 index c89b3f36b4..0000000000 Binary files a/sound/violin/Fb1.mid and /dev/null differ diff --git a/sound/violin/Fb2.mid b/sound/violin/Fb2.mid deleted file mode 100644 index 3db6af1aa4..0000000000 Binary files a/sound/violin/Fb2.mid and /dev/null differ diff --git a/sound/violin/Fb3.mid b/sound/violin/Fb3.mid deleted file mode 100644 index 5f601f3ac4..0000000000 Binary files a/sound/violin/Fb3.mid and /dev/null differ diff --git a/sound/violin/Fb4.mid b/sound/violin/Fb4.mid deleted file mode 100644 index f1abc8109d..0000000000 Binary files a/sound/violin/Fb4.mid and /dev/null differ diff --git a/sound/violin/Fb5.mid b/sound/violin/Fb5.mid deleted file mode 100644 index 2ec1b2e512..0000000000 Binary files a/sound/violin/Fb5.mid and /dev/null differ diff --git a/sound/violin/Fb6.mid b/sound/violin/Fb6.mid deleted file mode 100644 index b8bdf7fee0..0000000000 Binary files a/sound/violin/Fb6.mid and /dev/null differ diff --git a/sound/violin/Fb7.mid b/sound/violin/Fb7.mid deleted file mode 100644 index 51f5f1bcdb..0000000000 Binary files a/sound/violin/Fb7.mid and /dev/null differ diff --git a/sound/violin/Fb8.mid b/sound/violin/Fb8.mid deleted file mode 100644 index 47928f3847..0000000000 Binary files a/sound/violin/Fb8.mid and /dev/null differ diff --git a/sound/violin/G#1.mid b/sound/violin/G#1.mid deleted file mode 100644 index b1b3885685..0000000000 Binary files a/sound/violin/G#1.mid and /dev/null differ diff --git a/sound/violin/G#2.mid b/sound/violin/G#2.mid deleted file mode 100644 index e827cfc635..0000000000 Binary files a/sound/violin/G#2.mid and /dev/null differ diff --git a/sound/violin/G#3.mid b/sound/violin/G#3.mid deleted file mode 100644 index 57e1f76c97..0000000000 Binary files a/sound/violin/G#3.mid and /dev/null differ diff --git a/sound/violin/G#4.mid b/sound/violin/G#4.mid deleted file mode 100644 index 59e95a6d99..0000000000 Binary files a/sound/violin/G#4.mid and /dev/null differ diff --git a/sound/violin/G#5.mid b/sound/violin/G#5.mid deleted file mode 100644 index 9bd3436287..0000000000 Binary files a/sound/violin/G#5.mid and /dev/null differ diff --git a/sound/violin/G#6.mid b/sound/violin/G#6.mid deleted file mode 100644 index 3c90af807e..0000000000 Binary files a/sound/violin/G#6.mid and /dev/null differ diff --git a/sound/violin/G#7.mid b/sound/violin/G#7.mid deleted file mode 100644 index b51afd323c..0000000000 Binary files a/sound/violin/G#7.mid and /dev/null differ diff --git a/sound/violin/G#8.mid b/sound/violin/G#8.mid deleted file mode 100644 index d3f5c898d4..0000000000 Binary files a/sound/violin/G#8.mid and /dev/null differ