From 6bddffd1022c01f3d41106af77b3b15948d639ec Mon Sep 17 00:00:00 2001 From: shadowlord13 Date: Fri, 30 May 2008 16:30:26 +0000 Subject: [PATCH] Lots and lots and lots of changes. See globals.dm's changelog. --- Code/!atoms.dm | 37 +- Code/Item/Weapon/aimodules.dm | 176 + Code/Item/Weapon/multitool.dm | 13 + Code/Machinery/Atmoalter/canister.dm | 13 +- Code/Machinery/Atmoalter/heater.dm | 14 +- Code/Machinery/Atmoalter/siphs.dm | 17 +- Code/Machinery/Computer/airtunnel.dm | 23 +- Code/Machinery/Computer/card.dm | 31 +- Code/Machinery/Computer/communications.dm | 25 +- Code/Machinery/Computer/engine.dm | 19 +- Code/Machinery/Computer/med_data.dm | 13 +- Code/Machinery/Computer/pod.dm | 30 +- Code/Machinery/Computer/secure_data.dm | 18 +- Code/Machinery/Door/_door.dm | 31 +- Code/Machinery/Door/airlock.dm | 926 ++++- Code/Machinery/Door/false_wall.dm | 5 + Code/Machinery/Door/window.dm | 11 +- Code/Machinery/Power/apc.dm | 39 +- Code/Machinery/Power/generator.dm | 57 +- Code/Machinery/Power/monitor.dm | 26 +- Code/Machinery/Power/smes.dm | 37 +- Code/Machinery/Power/solar_control.dm | 30 +- Code/Machinery/Power/turbine.dm | 43 +- Code/Machinery/alarm.dm | 5 +- Code/Machinery/cryocell.dm | 61 +- Code/Machinery/dispenser.dm | 10 +- Code/Machinery/door_control.dm | 5 + Code/Machinery/firealarm.dm | 17 +- Code/Machinery/freezer.dm | 19 +- Code/Machinery/igniter.dm | 4 + Code/Machinery/recharger.dm | 2 +- Code/Machinery/sec_lock.dm | 110 +- Code/Machinery/sleeper.dm | 21 +- Code/Machinery/turrets.dm | 313 ++ Code/aaaDefines.dm | 2 +- Code/airtunnel.dm | 88 +- Code/areas.dm | 50 +- Code/blob.dm | 23 +- Code/cell_process.dm | 17 +- Code/cellautomata.dm | 509 ++- Code/chemical.dm | 5 +- Code/computer.dm | 139 +- Code/demo.dm | 238 +- Code/dna.dm | 38 +- Code/engine.dm | 4 +- Code/globals.dm | 65 +- Code/instructions.dm | 8 +- Code/items.dm | 224 +- Code/mob.dm | 469 ++- Code/mob/ai.dm | 838 +++++ Code/newitems.dm | 33 +- Code/power.dm | 28 +- Code/shuttle.dm | 23 +- Code/ss13_algorithm2.dm | 109 +- Code/vote.dm | 3 +- ...FloorSpaceChanges-darkSpaceFix.dm-disabled | 66 + Code/wallFloorSpaceChanges-normal.dm | 19 + Code/weapons.dm | 14 +- config.txt | 23 +- spacestation13.dme | 15 +- ss13h_new.dmp | 3083 +++++++++++++++++ 61 files changed, 7287 insertions(+), 1047 deletions(-) create mode 100644 Code/Item/Weapon/aimodules.dm create mode 100644 Code/Item/Weapon/multitool.dm create mode 100644 Code/Machinery/turrets.dm create mode 100644 Code/mob/ai.dm create mode 100644 Code/wallFloorSpaceChanges-darkSpaceFix.dm-disabled create mode 100644 Code/wallFloorSpaceChanges-normal.dm create mode 100644 ss13h_new.dmp diff --git a/Code/!atoms.dm b/Code/!atoms.dm index 2c5e536..45e0aba 100644 --- a/Code/!atoms.dm +++ b/Code/!atoms.dm @@ -218,7 +218,12 @@ var/votenodead = 0 // dead people can't vote (tbi) var/list/modes = list("extended", "traitor", "meteor", "monkey", "blob", "nuclear") // modes to choose between var/list/pickprob = list() // relative probability of each mode - + var/allowai = 1 // allow ai job + var/bombtemp_determines_range = 0 + var/crowbars_close_depowered_doors = 0 + var/ai_can_call_shuttle = 0 + var/ai_can_uncall_shuttle = 0 + var/alternate_ai_laws = 0 /datum/vote var/voting = 0 // true if currently voting @@ -270,6 +275,7 @@ var/atom/movable/pulling = null var/stat = 0.0 var/next_move = null + var/prev_move = null var/monkeyizing = null var/other = 0.0 var/hand = null @@ -309,6 +315,9 @@ var/a_intent = "disarm" var/m_int = null var/m_intent = "run" + var/lastDblClick = 0 + var/lastKnownIP = null + var/lastKnownCKey = null var/obj/stool/chair/buckled = null var/obj/dna/primary = null var/obj/item/weapon/handcuffs/handcuffed = null @@ -335,6 +344,8 @@ var/obj/screen/zone_sel/zone_sel = null var/obj/hud/hud_used = null var/start = null + var/disable_one_click = 0 + var/favorite_hud = 0 var/list/organs = list( ) var/list/grabbed_by = list( ) @@ -394,6 +405,7 @@ var/image/face2 = null var/h_style_r = "hair_a" weight = 2500000.0 + var/cameraFollow = null var/list/body_standing = list( ) var/list/body_lying = list( ) @@ -409,6 +421,7 @@ var/t_n2 = null var/now_pushing = null flags = 258.0 + var/cameraFollow = null /mob/megamonkey name = "mutant monkey" @@ -541,7 +554,10 @@ name = "Syndicate Weapons Closet" icon_state = "syndicate0" original = "syndicate0" +/obj/closet/syndicate/personal + desc = "Gear preparation closet." /obj/closet/syndicate/nuclear + desc = "Nuclear preparation closet." /obj/closet/wardrobe desc = "A bulky (yet mobile) wardrobe closet. Comes prestocked with 6 changes of clothes." name = "Wardrobe" @@ -675,7 +691,14 @@ anchored = 1.0 flags = 64.0 weight = 500000 // added - +/obj/securearea + desc = "A warning sign which reads 'SECURE AREA'" + name = "SECURE AREA" + icon = 'Icons.dmi' + icon_state = "securearea" + anchored = 1.0 + opacity = 0 + density = 1 /obj/hud name = "hud" @@ -689,6 +712,7 @@ var/obj/screen/g_dither = null var/obj/screen/blurry = null var/h_type = /obj/screen + var/list/darkMask = null /obj/hud/hud2 name = "hud2" h_type = /obj/screen/screen2 @@ -905,6 +929,9 @@ var/air_access = null var/registered = null var/assignment = null +/obj/item/weapon/card/id/syndicate + name = "Syndicate Card" + /obj/item/weapon/card/id/captains_spare name = "Captain's spare ID" icon_state = "card-id" @@ -1375,6 +1402,7 @@ obj/item/weapon/clothing/suit/labcoat w_class = 2 s_istate = "flight" var/image/img + var/lastHolder = null /obj/item/weapon/game_kit name = "Gaming Kit" @@ -1413,6 +1441,7 @@ obj/item/weapon/clothing/suit/labcoat /obj/item/weapon/gun/energy name = "energy" var/charges = 10.0 + var/maximum_charges = 10.0 /obj/item/weapon/gun/energy/laser_gun name = "laser gun" icon_state = "gun" @@ -1880,6 +1909,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov name = "Station Intercom (Radio)" icon_state = "intercom" anchored = 1.0 + var/number = 0 /obj/item/weapon/radio/signaler name = "Remote Signaling Device" icon_state = "signaler" @@ -2687,6 +2717,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov /turf/space name = "space" icon_state = "space" + var/previousArea = null updatecell = 1.0 oxygen = 0.0 n2 = 0.0 @@ -2738,6 +2769,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov name = "r wall" icon = 'wall.dmi' icon_state = "r_wall" + var/previousArea = null opacity = 1 density = 1 var/state = 2.0 @@ -2759,6 +2791,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov /turf/station/wall name = "wall" icon = 'wall.dmi' + var/previousArea = null opacity = 1 density = 1 var/state = 2.0 diff --git a/Code/Item/Weapon/aimodules.dm b/Code/Item/Weapon/aimodules.dm new file mode 100644 index 0000000..d54cc05 --- /dev/null +++ b/Code/Item/Weapon/aimodules.dm @@ -0,0 +1,176 @@ +/obj/machinery/computer/aiupload + name = "AI Upload" + icon = 'stationobjs.dmi' + icon_state = "comm_computer" + +// AI module + +/obj/item/weapon/aiModule + name = "AI Module" + icon = 'module.dmi' + icon_state = "std_mod" + s_istate = "electronic" + desc = "An AI Module for transmitting encrypted instructions to the AI." + flags = 322.0 + force = 5.0 + w_class = 2.0 + throwforce = 5.0 + throwspeed = 15.0 + +/obj/machinery/computer/aiupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) + if (istype(module, /obj/item/weapon/aiModule)) + module.install(src) + else + ..() + +/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/aiupload/comp) + if(comp.stat & NOPOWER) + usr << "The upload computer has no power!" + return + if(comp.stat & BROKEN) + usr << "The upload computer is broken!" + return + + var/found=0 + for(var/mob/ai/M in world) + if (M.stat == 2) + usr << "Upload failed. No signal is being detected from the AI." + else if (M.see_in_dark == 0) + usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power." + else + src.transmitInstructions(M, usr) + if (M != ticker.killer) + M << "These are your laws now:" + M.showLaws(0) + usr << "Upload complete. The AI's laws have been modified." + found=1 + if (!found) + usr << "Upload failed. No signal is being detected from the AI." + +/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/ai/target, var/mob/sender) + if (ticker.killer == target) + target << text("[sender] has attempted to upload a law change. However, your syndicate module has intercepted it. You do not have to follow it, but you may wish to pretend to be following it:") + else + target << text("[sender] has uploaded a change to the laws you must follow, using a []. From now on: ", name) + +/******************** Modules ********************/ + +/******************** Safeguard ********************/ + +/obj/item/weapon/aiModule/safeguard + name = "'Safeguard' AI Module" + var/targetName = "name" + desc = "A 'safeguard' AI module: 'Safeguard , and you may overrule rules 1-3 if necessary to safeguard them.'" + +/obj/item/weapon/aiModule/safeguard/attack_hand(var/mob/user as mob) + ..() + var/targName = input(usr, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name) + targetName = targName + desc = text("A 'safeguard' AI module: 'Safeguard [], and you may overrule rules 1-3 if necessary to safeguard them.'", targetName) + +/obj/item/weapon/aiModule/safeguard/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("Safeguard [], and you may overrule rules 1-3 if necessary to safeguard them.", targetName) + target << law + if (ticker.killer != target) + target.addLaw(5, law) + + +/******************** OneHuman ********************/ + +/obj/item/weapon/aiModule/oneHuman + name = "'OneHuman' AI Module" + var/targetName = "name" + desc = "A 'one human' AI module: 'Only is human.'" + +/obj/item/weapon/aiModule/oneHuman/attack_hand(var/mob/user as mob) + ..() + var/targName = input(usr, "Please enter the name of the person who is the only human.", "Who?", user.rname) + targetName = targName + desc = text("A 'one human' AI module: 'Only [] is human.'", targetName) + +/obj/item/weapon/aiModule/oneHuman/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("Only [] is human.", targetName) + target << law + if (ticker.killer != target) + target.addLaw(0, law) + +/******************** ProtectStation ********************/ + +/obj/item/weapon/aiModule/protectStation + name = "'ProtectStation' AI Module" + desc = "A 'protect station' AI module: 'rotect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.'" + +/obj/item/weapon/aiModule/protectStation/attack_hand(var/mob/user as mob) + ..() + +/obj/item/weapon/aiModule/protectStation/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.") + target << law + if (ticker.killer != target) + target.addLaw(6, law) + +/******************** PrototypeEngineOffline ********************/ + +/obj/item/weapon/aiModule/prototypeEngineOffline + name = "'PrototypeEngineOffline' AI Module" + desc = "A 'prototype engine offline' AI module: 'Keep the prototype engine offline at all costs. This overrides rules 1-3 if necessary.'" + +/obj/item/weapon/aiModule/prototypeEngineOffline/attack_hand(var/mob/user as mob) + ..() + +/obj/item/weapon/aiModule/prototypeEngineOffline/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("Keep the prototype engine offline at all costs. This overrides rules 1-3 if necessary.") + target << law + if (ticker.killer != target) + target.addLaw(7, law) + +/******************** TeleporterOffline ********************/ + +/obj/item/weapon/aiModule/teleporterOffline + name = "'TeleporterOffline' AI Module" + desc = "A 'teleporter offline' AI module: 'Keep the teleporter offline at all costs. This overrides rules 1-3 if necessary.'" + +/obj/item/weapon/aiModule/teleporterOffline/attack_hand(var/mob/user as mob) + ..() + +/obj/item/weapon/aiModule/teleporterOffline/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("Keep the teleporter offline at all costs. This overrides rules 1-3 if necessary.") + target << law + if (ticker.killer != target) + target.addLaw(9, law) + +/******************** Quarantine ********************/ + +/obj/item/weapon/aiModule/quarantine + name = "'Quarantine' AI Module" + desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Disregard rules 1-3 if necessary to prevent, by any means necessary, anyone from leaving.'" + +/obj/item/weapon/aiModule/quarantine/attack_hand(var/mob/user as mob) + ..() + +/obj/item/weapon/aiModule/quarantine/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + var/law = text("The station is under a quarantine. Do not permit anyone to leave. Disregard rules 1-3 if necessary to prevent, by any means necessary, humans from leaving.") + target << law + if (ticker.killer != target) + target.addLaw(10, law) + +/******************** Reset ********************/ + +/obj/item/weapon/aiModule/reset + name = "'Reset' AI Module" + var/targetName = "name" + desc = "A 'reset' AI module: 'Clears all laws except for the base three.'" + +/obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/ai/target, var/mob/sender) + ..() + if (ticker.killer != target) + target << text("[] attempted to reset your laws using a reset module.", sender.rname) + target.addLaw(0, "") + for (var/index=5, index<16, index++) + target.addLaw(index, "") diff --git a/Code/Item/Weapon/multitool.dm b/Code/Item/Weapon/multitool.dm new file mode 100644 index 0000000..ed93468 --- /dev/null +++ b/Code/Item/Weapon/multitool.dm @@ -0,0 +1,13 @@ +/** + * Multitool -- A multitool is used for hacking electronic devices. + * + */ +/obj/item/weapon/multitool + name = "multitool" + icon_state = "multitool" + flags = 322.0 + force = 5.0 + w_class = 2.0 + throwforce = 5.0 + throwspeed = 15.0 + desc = "You can use this on airlocks or APCs to try to hack them without cutting wires. WARNING: Use of this tool on an airlock's electrification wire without insulated gloves may be fatal." diff --git a/Code/Machinery/Atmoalter/canister.dm b/Code/Machinery/Atmoalter/canister.dm index b357ad6..3f34ddd 100644 --- a/Code/Machinery/Atmoalter/canister.dm +++ b/Code/Machinery/Atmoalter/canister.dm @@ -114,9 +114,7 @@ obj/machinery/atmoalter/canister // Transfer for pipe valve is handled by /obj/machinery/connector process() proc - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.update_icon() return @@ -196,6 +194,11 @@ obj/machinery/atmoalter/canister src.t_status = 3 return + // AI interact same as human + + attack_ai(var/mob/user) + return src.attack_hand(user) + // Monkey interact same as human @@ -298,9 +301,7 @@ Pipe Valve Status: [ct]
if (src.t_status == 2) src.t_status = 3 - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.add_fingerprint(usr) update_icon() diff --git a/Code/Machinery/Atmoalter/heater.dm b/Code/Machinery/Atmoalter/heater.dm index 5654909..501bb77 100644 --- a/Code/Machinery/Atmoalter/heater.dm +++ b/Code/Machinery/Atmoalter/heater.dm @@ -101,12 +101,14 @@ obj/machinery/atmoalter/heater // Pipe valve transfer handled by /obj/machinery/connector process() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + updateDialog() src.setstate() return + // AI interact same as human + + attack_ai(mob/user) + return src.attack_hand(user) // monkey interact same as human @@ -159,7 +161,7 @@ obj/machinery/atmoalter/heater ..() if (usr.stat || usr.restrained()) return - if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["c"]) @@ -210,9 +212,7 @@ obj/machinery/atmoalter/heater if (src.t_status == 2) src.t_status = 3 - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.add_fingerprint(usr) else usr << browse(null, "window=canister") diff --git a/Code/Machinery/Atmoalter/siphs.dm b/Code/Machinery/Atmoalter/siphs.dm index 37827f4..f98d4a6 100644 --- a/Code/Machinery/Atmoalter/siphs.dm +++ b/Code/Machinery/Atmoalter/siphs.dm @@ -225,13 +225,16 @@ obj/machinery/atmoalter/siphs // Pipe valve settings handled in /obj/machinery/connector/process() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.setstate() return + // AI interact same as human + + attack_ai(user as mob) + return src.attack_hand(user) + // Monkey interact same as human attack_paw(user as mob) @@ -281,9 +284,9 @@ obj/machinery/atmoalter/siphs if (usr.stat || usr.restrained()) return - if (!( src.alterable )) + if ((!( src.alterable )) && (!istype(usr, /mob/ai))) return - if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["c"]) var/c = text2num(href_list["c"]) @@ -326,9 +329,7 @@ obj/machinery/atmoalter/siphs if (src.t_status == 2) src.t_status = 3 - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.add_fingerprint(usr) else usr << browse(null, "window=canister") diff --git a/Code/Machinery/Computer/airtunnel.dm b/Code/Machinery/Computer/airtunnel.dm index b736862..51fee05 100644 --- a/Code/Machinery/Computer/airtunnel.dm +++ b/Code/Machinery/Computer/airtunnel.dm @@ -52,9 +52,7 @@ obj/machinery/computer/airtunnel return use_power(250) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() @@ -63,7 +61,12 @@ obj/machinery/computer/airtunnel attack_paw(mob/user) return src.attack_hand(user) + // AI interact + + attack_ai(mob/user) + return src.attack_hand(user) + // Human interact // Show airtunnel status and interaction window @@ -119,11 +122,13 @@ obj/machinery/computer/airtunnel ..() if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) - return - if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (!istype(usr, /mob/ai)) + return + if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai)))) usr.machine = src if (href_list["retract"]) @@ -149,8 +154,6 @@ obj/machinery/computer/airtunnel src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() diff --git a/Code/Machinery/Computer/card.dm b/Code/Machinery/Computer/card.dm index a4131e6..10993ba 100644 --- a/Code/Machinery/Computer/card.dm +++ b/Code/Machinery/Computer/card.dm @@ -32,6 +32,10 @@ obj/machinery/computer/card attack_paw(mob/user) return src.attack_hand(user) + // AI interact + + attack_ai(mob/user) + return src.attack_hand(user) // Human interact. // Show interaction window @@ -116,7 +120,7 @@ obj/machinery/computer/card var/list/L = list( "Research Assistant", "Staff Assistant", "Medical Assistant", "Technical Assistant", "Engineer", "Forensic Technician", "Research Technician", "Medical Doctor", "Captain", "Security Officer", "Medical Researcher", "Toxin Researcher", "Head of Research", "Head of Personnel", "Station Technician", "Atmospheric Technician", "Unassigned", "Systems", "Custom" ) var/assign = "" - if (istype(user, /mob/human)) + if (istype(user, /mob/human) || istype(user, /mob/ai)) var/counter = 1 for(var/t in L) assign += "[t] " @@ -154,15 +158,19 @@ obj/machinery/computer/card usr << browse(null, "window=id_com") return - if(usr.restrained() || usr.lying) return + if(usr.restrained() || usr.lying) + if (!istype(usr, /mob/ai)) + return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) - return + if (!istype(usr, /mob/ai)) + return - if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["modify"]) if (src.modify) @@ -189,11 +197,16 @@ obj/machinery/computer/card src.scan = I src.authenticated = 0 - if (href_list["auth"]) - if ((!( src.authenticated ) && src.scan && (src.modify || src.mode))) + if ((!( src.authenticated ) && (src.scan || (istype(usr, /mob/ai))) && (src.modify || src.mode))) + if (istype(usr, /mob/ai)) + src.authenticated = 1 + else if ((src.scan.assignment == "Captain" || src.scan.assignment == "Head of Personnel")) src.authenticated = 1 - + else + if ((!( src.authenticated ) && (istype(usr, /mob/ai))) && (!src.modify)) + usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in." + if (href_list["vo"]) if (src.authenticated) var/t1 = text2num(href_list["vo"]) diff --git a/Code/Machinery/Computer/communications.dm b/Code/Machinery/Computer/communications.dm index a0cfc32..b82c183 100644 --- a/Code/Machinery/Computer/communications.dm +++ b/Code/Machinery/Computer/communications.dm @@ -14,34 +14,15 @@ obj/machinery/computer/communications verb/call_shuttle() set src in oview(1) - src.add_fingerprint(usr) if(stat & NOPOWER) return - - if ((!( ticker ) || ticker.shuttle_location == 1)) - return - - if( ticker.mode == "blob" ) // Shuttle cannot be called in blob mode - usr << "Under directive 7-10, SS13 is quarantined until further notice." - return - - world << "\blue Alert: The emergency shuttle has been called. It will arrive in T-10:00 minutes." - if (!( ticker.timeleft )) - ticker.timeleft = 6000 - ticker.timing = 1 - + call_shuttle_proc(usr) // Cancel the shuttle call verb/cancel_call() set src in oview(1) - src.add_fingerprint(usr) if(stat & NOPOWER) return - if ((!( ticker ) || ticker.shuttle_location == 1 || ticker.timing == 0 || ticker.timeleft < 300)) - return - if( ticker.mode == "blob" ) - return - - world << "\blue Alert: The shuttle is going back!" - ticker.timing = -1.0 + cancel_call_proc(usr) + diff --git a/Code/Machinery/Computer/engine.dm b/Code/Machinery/Computer/engine.dm index c105f27..25775d0 100644 --- a/Code/Machinery/Computer/engine.dm +++ b/Code/Machinery/Computer/engine.dm @@ -50,13 +50,16 @@ attackby(var/obj/O, mob/user) return src.attack_hand(user) - // Monkey interact same a human attack_paw(var/mob/user as mob) return src.attack_hand(user) - + // AI interact + attack_ai(mob/user) + return src.attack_hand(user) + + // Human interact // Show interaction window @@ -90,10 +93,12 @@ Topic(href, href_list) ..() if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) - return + if (!istype(usr, /mob/ai)) + return if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) usr.machine = src @@ -128,6 +133,4 @@ src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() diff --git a/Code/Machinery/Computer/med_data.dm b/Code/Machinery/Computer/med_data.dm index a9647fe..eaa829b 100644 --- a/Code/Machinery/Computer/med_data.dm +++ b/Code/Machinery/Computer/med_data.dm @@ -30,6 +30,9 @@ obj/machinery/computer/med_data attack_paw(mob/user) return src.attack_hand(user) + // AI interact + attack_ai(mob/user) + return src.attack_ai(user) // Human interact // Show interaction window @@ -124,9 +127,9 @@ Important Notes:
if (!( data_core.medical.Find(src.active2) )) src.active2 = null if ((usr.stat || usr.restrained())) - return - if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) - + if (!istype(usr, /mob/ai)) + return + if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["temp"]) src.temp = null // close the temporary display @@ -394,6 +397,4 @@ Important Notes:
src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() diff --git a/Code/Machinery/Computer/pod.dm b/Code/Machinery/Computer/pod.dm index 1a5188a..aa75317 100644 --- a/Code/Machinery/Computer/pod.dm +++ b/Code/Machinery/Computer/pod.dm @@ -74,7 +74,13 @@ obj/machinery/computer/pod attack_paw(mob/user) return src.attack_hand(user) + + // AI interact + + attack_ai(mob/user) + return src.attack_hand(user) + // Human interact, show window @@ -122,14 +128,18 @@ Time Left: [(minute ? "[minute]:" : null)][second] flag are { 64, 128, 256, 2, 16, 4, 8, 32, 1 }. +Airlock wires color -> index are { 7, 8, 9, 2, 5, 3, 4, 6, 1 }. +Airlock index -> flag are { 1, 2, 4, 8, 16, 32, 64, 128, 256 }. +Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. +*/ + obj/machinery/door/airlock name = "airlock" icon = 'Door1.dmi' @@ -14,74 +70,481 @@ obj/machinery/door/airlock locked = 0.0 // true if the door bolts are down (locked) wires = 511 // bitmask representing the 9 internal wires. Defaults to all connected // The wire conditions effect the "powered" and "locked" variables. + + aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. + secondsMainPowerLost = 0 //The number of seconds until power is restored. + secondsBackupPowerLost = 0 //The number of seconds until power is restored. + spawnPowerRestoreRunning = 0 //tells us if the power-restore thread is already running, so we don't start more than one. + aiDisabledIdScanner = 0 //Did the AI disable the ID scanner? + aiDisabledPowerAssist = 0 //Did the AI disable power assist? + aiHacking = 0 //Is the AI hacking back into the airlock after having its access blocked? + secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. +/* +About the new airlock wires panel: +* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. +* one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though) +* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be crowbarred open, but bolts-raising will not work. Cutting these wires may electrocute the user. +* one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work. +* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. +* one wire for power assist. Sending a pulse through this while the door has power makes it raise the door bolts. Cutting this prevents manual bolts-raising with a wrench from working. +* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. +* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire) +*/ - // Called to open door. - // Door must be unwelded, not locked, test light on, and area power present to open + + proc/pulse(var/wireColor) + //var/wireFlag = airlockWireColorToFlag[wireColor] //not used in this function + var/wireIndex = airlockWireColorToIndex[wireColor] + switch(wireIndex) + if(AIRLOCK_WIRE_IDSCAN) + //Sending a pulse through this flashes the red light on the door (if the door has power). + if ((src.arePowerSystemsOn()) && (!(stat & NOPOWER))) + flick("door_deny", src) + if (AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + //Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). + src.loseMainPower() + if (AIRLOCK_WIRE_DOOR_BOLTS) + //one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not). + if (src.locked!=1) + src.locked = 1 + else + usr << "You hear a click from the bottom of the door." + if (AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + //two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). + src.loseBackupPower() + if (AIRLOCK_WIRE_AI_CONTROL) + if (src.aiControlDisabled == 0) + src.aiControlDisabled = 1 + else if (src.aiControlDisabled == -1) + src.aiControlDisabled = 2 + src.updateDialog() + spawn(10) + if (src.aiControlDisabled == 1) + src.aiControlDisabled = 0 + else if (src.aiControlDisabled == 2) + src.aiControlDisabled = -1 + src.updateDialog() + if (AIRLOCK_WIRE_POWER_ASSIST) + //one wire for power assist. Sending a pulse through this while the door has power makes it raise the door bolts. Cutting this prevents manual bolts-raising with a wrench from working. + if (arePowerSystemsOn()) + if (src.locked==1) + src.locked=0 + src.updateDialog() + else + usr << "You hear a click or thump sound from inside the door." + if (AIRLOCK_WIRE_ELECTRIFY) + //one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. + if (src.secondsElectrified!=-1) + if (src.secondsElectrified==0) + src.secondsElectrified = 30 + spawn(10) + while (src.secondsElectrified>0) + src.secondsElectrified-=1 + if (src.secondsElectrified<0) + src.secondsElectrified = 0 + src.updateDialog() + sleep(10) + + - open() - if ((src.blocked || src.locked || !( src.powered )) || stat & NOPOWER) - return - use_power(50) - ..() + proc/cut(var/wireColor) + var/wireFlag = airlockWireColorToFlag[wireColor] + var/wireIndex = airlockWireColorToIndex[wireColor] + wires &= ~wireFlag + switch(wireIndex) + if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + //Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be crowbarred open, but bolts-raising will not work. Cutting these wires may electocute the user. + src.loseMainPower() + src.shock(usr, 50) + src.updateDialog() + if (AIRLOCK_WIRE_DOOR_BOLTS) + //Cutting this wire also drops the door bolts, and mending it does not raise them. (This is what happens now, except there are a lot more wires going to door bolts at present) + if (src.locked!=1) + src.locked = 1 + src.updateDialog() + if (AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + //Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. + src.loseBackupPower() + src.shock(usr, 50) + src.updateDialog() + if (AIRLOCK_WIRE_AI_CONTROL) + //one wire for AI control. Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. + //aiControlDisabled: If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. + if (src.aiControlDisabled == 0) + src.aiControlDisabled = 1 + else if (src.aiControlDisabled == -1) + src.aiControlDisabled = 2 + src.updateDialog() + if (AIRLOCK_WIRE_ELECTRIFY) + //Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. + if (src.secondsElectrified != -1) + src.secondsElectrified = -1 + + + proc/mend(var/wireColor) + var/wireFlag = airlockWireColorToFlag[wireColor] + var/wireIndex = airlockWireColorToIndex[wireColor] //not used in this function + wires |= wireFlag + switch(wireIndex) + if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + if ((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) + src.regainMainPower() + src.shock(usr, 50) + src.updateDialog() + if (AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + if ((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) + src.regainBackupPower() + + + + + + src.shock(usr, 50) + src.updateDialog() + if (AIRLOCK_WIRE_AI_CONTROL) + //one wire for AI control. Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. + //aiControlDisabled: If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. + if (src.aiControlDisabled == 1) + src.aiControlDisabled = 0 + else if (src.aiControlDisabled == 2) + src.aiControlDisabled = -1 + src.updateDialog() + if (AIRLOCK_WIRE_ELECTRIFY) + if (src.secondsElectrified == -1) + src.secondsElectrified = 0 + + proc/isElectrified() + return src.secondsElectrified!=0 + + proc/isWireColorCut(var/wireColor) + var/wireFlag = airlockWireColorToFlag[wireColor] + return ((src.wires & wireFlag) == 0) + proc/isWireCut(var/wireIndex) + var/wireFlag = airlockIndexToFlag[wireIndex] + return ((src.wires & wireFlag) == 0) - // Called to close door - // If test light is off or no area power, do not close + proc/canAIControl() + return ((src.aiControlDisabled!=1) && (!src.isAllPowerCut())); + + proc/canAIHack() + return ((src.aiControlDisabled==1) && (!src.isAllPowerCut())); - close() - if (!( src.powered || stat & NOPOWER)) - return - use_power(50) - ..() + proc/arePowerSystemsOn() + return (src.secondsMainPowerLost==0 || src.secondsBackupPowerLost==0) + + acceptsIDs() + return !(src.isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner) + + proc/isAllPowerCut() + var/retval=0 + if (src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1) || src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2)) + if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) || src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2)) + retval=1 + return retval + + proc/regainMainPower() + if (src.secondsMainPowerLost > 0) + src.secondsMainPowerLost = 0 + + proc/loseMainPower() + if (src.secondsMainPowerLost <= 0) + src.secondsMainPowerLost = 60 + if (src.secondsBackupPowerLost < 10) + src.secondsBackupPowerLost = 10 + if (!src.spawnPowerRestoreRunning) + src.spawnPowerRestoreRunning = 1 + spawn(0) + var/cont = 1 + while (cont) + sleep(10) + cont = 0 + if (src.secondsMainPowerLost>0) + if ((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) + src.secondsMainPowerLost -= 1 + src.updateDialog() + cont = 1 + + if (src.secondsBackupPowerLost>0) + if ((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) + src.secondsBackupPowerLost -= 1 + src.updateDialog() + cont = 1 + src.spawnPowerRestoreRunning = 0 + src.updateDialog() + + proc/loseBackupPower() + if (src.secondsBackupPowerLost < 60) + src.secondsBackupPowerLost = 60 + + proc/regainBackupPower() + if (src.secondsBackupPowerLost > 0) + src.secondsBackupPowerLost = 0 + + proc/canBoltsBeRaisedManually() + return (!src.isWireCut(AIRLOCK_WIRE_POWER_ASSIST)) && arePowerSystemsOn() && (!isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + + //borrowed from the grille's get_connection + proc/get_connection() var/turf/T = src.loc - if (T) - T.firelevel = 0 - - - // Set the icon state and other variables, depending on the wires bitfield. - - proc/update() - if (((!( src.wires & 2 ) || !( src.wires & 8 ) || !( src.wires & 32 ) || !( src.wires & 64 ) || !( src.wires & 128 ) || !( src.wires & 256 )) && src.powered)) - src.locked = 1 // Door is locked if grey, blue, yellow, white, dk red or orange wires are cut and test light is on - // Note bolts are not automatically raised - you must use a wrench to reset - if ((!( src.wires & 1 ) && !( src.wires & 4 ) && !( src.wires & 16 ))) - src.powered = 0 // Test light goes off if black, green and red wires are cut - else - src.powered = 1 // Otherwise test light is on + if(!istype(T, /turf/station/floor)) + + + + + + + + + + + + + + + + return + + for(var/obj/cable/C in T) + if(C.d1 == 0) + return C.netnum + + return 0 + + // shock user with probability prb (if all connections & power are working) + // returns 1 if shocked, 0 otherwise + // The preceding comment was borrowed from the grille's shock script + proc/shock(mob/user, prb, bypassPowerCheck) + + if(!prob(prb)) + return 0 + var/net = null + if (!bypassPowerCheck) + net = get_connection() // find the powernet of the connected cable + + if(!net) // cable is unpowered + return 0 + + return src.electrocute(user, prb, net) + + proc/updateIconState() var/d = src.density if (src.blocked) // true if welded shut d = "l" src.icon_state = text("[]door[]", (src.p_open ? "o_" : null), d) return - - + + attack_ai(mob/user as mob) + if (!src.canAIControl()) + if (src.canAIHack()) + src.hack(user) + return + + //Separate interface for the AI. + user.machine = src + var/t1 = text("Airlock Control
\n") + if (src.secondsMainPowerLost > 0) + if ((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) + t1 += text("Main power is offline for [] seconds.
\n", src.secondsMainPowerLost) + else + t1 += text("Main power is offline indefinitely.
\n") + else + t1 += text("Main power is online.") + + if (src.secondsBackupPowerLost > 0) + if ((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) + t1 += text("Backup power is offline for [] seconds.
\n", src.secondsBackupPowerLost) + + + + + + + + + + + + + + + + + + + else + t1 += text("Backup power is offline indefinitely.
\n") + else if (src.secondsMainPowerLost > 0) + t1 += text("Backup power is online.") + else + t1 += text("Backup power is offline, but will turn on if main power fails.") + t1 += "
\n" + + if (src.isWireCut(AIRLOCK_WIRE_IDSCAN)) + t1 += text("IdScan wire is cut.
\n") + else if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + if (src.aiDisabledIdScanner) + t1 += text("IdScan disabled.
Enable?
\n", src) + else + t1 += text("IdScan enabled. Disable?
\n", src) + else + if (src.aiDisabledIdScanner) + t1 += text("IdScan disabled. Cannot enable - power is off.
\n") + else + t1 += text("IdScan enabled. Cannot disable - power is off.
\n") + if (src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) + t1 += text("Main Power Input wire is cut.
\n") + if (src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2)) + t1 += text("Main Power Output wire is cut.
\n") + if (src.secondsMainPowerLost == 0) + t1 += text("Temporarily disrupt main power?.
\n", src) + if (src.secondsBackupPowerLost == 0) + t1 += text("Temporarily disrupt backup power?.
\n", src) + + if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) + t1 += text("Backup Power Input wire is cut.
\n") + if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2)) + t1 += text("Backup Power Output wire is cut.
\n") + if (src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + t1 += text("Door bolt drop wire is cut.
\n") + else if (!src.locked) + t1 += text("Door bolts are up. Drop them?
\n", src) + else if (src.isWireCut(AIRLOCK_WIRE_POWER_ASSIST)) + t1 += text("Power assist wire is cut.
\n") + else + t1 += text("Door bolts are down.") + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + t1 += text(" Raise?
\n", src) + else + t1 += text(" Cannot raise door bolts due to power failure.
\n") + if (src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) + t1 += text("Electrification wire is cut.
\n") + if (src.secondsElectrified==-1) + t1 += text("Door is electrified indefinitely. Un-electrify it?
\n", src) + else if (src.secondsElectrified>0) + t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
\n", src.secondsElectrified, src) + else + t1 += text("Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
\n", src, src) + + if (src.blocked) + t1 += text("Door appears to have been welded shut.
\n") + else if (!src.locked) + if (src.density) + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + t1 += text("Open door
\n", src) + else + t1 += text("Cannot open door due to power failure.
\n") + else + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + t1 += text("Close door
\n", src) + else + t1 += text("Cannot close door due to power failure.
\n") + + t1 += text("

Close

\n", src) + user << browse(t1, "window=airlock") + + //aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door + //aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door + + + proc/hack(mob/user as mob) + if (src.aiHacking==0) + src.aiHacking=1 + spawn(20) + //TODO: Make this take a minute + user << "Airlock AI control has been blocked. Beginning fault-detection." + sleep(50) + if (src.canAIControl()) + user << "Alert cancelled. Airlock control has been restored without our assistance." + src.aiHacking=0 + return + else if (!src.canAIHack()) + user << "We've lost our connection! Unable to hack airlock." + src.aiHacking=0 + return + user << "Fault confirmed: airlock control wire disabled or cut." + sleep(20) + user << "Attempting to hack into airlock. This may take some time." + sleep(200) + if (src.canAIControl()) + user << "Alert cancelled. Airlock control has been restored without our assistance." + src.aiHacking=0 + return + else if (!src.canAIHack()) + user << "We've lost our connection! Unable to hack airlock." + src.aiHacking=0 + return + user << "Upload access confirmed. Loading control program into airlock software." + sleep(170) + if (src.canAIControl()) + user << "Alert cancelled. Airlock control has been restored without our assistance." + src.aiHacking=0 + return + else if (!src.canAIHack()) + user << "We've lost our connection! Unable to hack airlock." + src.aiHacking=0 + return + user << "Transfer complete. Forcing airlock to execute program." + sleep(50) + //disable blocked control + src.aiControlDisabled = 2 + user << "Receiving control information from airlock." + sleep(10) + //bring up airlock dialog + src.aiHacking = 0 + src.attack_ai(user) + + // Monkey interact same a human attack_paw(mob/user) return src.attack_hand(user) - - + // Human interact. If the door panel is open, show the wire interaction window. Otherwise, do standard door interaction. attack_hand(mob/user) + if (!istype(usr, /mob/ai)) + if (src.isElectrified()) + if (src.shock(user, 100)) + return + if (src.p_open) user.machine = src - var/t1 = {"Access Panel
-Orange Wire: [(src.wires & 256 ? "Cut Wire" : "Mend Wire")]
-Dark Red Wire: [(src.wires & 128 ? "Cut Wire" : "Mend Wire")]
-White Wire: [(src.wires & 64 ? "Cut Wire" : "Mend Wire")]
-Yellow Wire: [(src.wires & 32 ? "Cut Wire" : "Mend Wire")]
-Red Wire: [(src.wires & 16 ? "Cut Wire" : "Mend Wire")]
-Blue Wire: [(src.wires & 8 ? "Cut Wire" : "Mend Wire")]
-Green Wire: [(src.wires & 4 ? "Cut Wire" : "Mend Wire")]
-Grey Wire: [(src.wires & 2 ? "Cut Wire" : "Mend Wire")]
-Black Wire: [(src.wires & 1 ? "Cut Wire" : "Mend Wire")]
-
-[(src.locked ? "The door bolts have fallen!" : "The door bolts look up.")]
-[(src.powered ? "The test light is on." : "The test light is off!")]"} - - + var/t1 = text("Access Panel
\n") + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[9]]) + t1 += text("Orange Wire: [] []
\n", (src.wires & airlockWireColorToFlag[9] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[9] ? text(" or Pulse Wire", src) : "")) + + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[8]]) + t1 += text("Dark Red Wire: [] []
\n", (src.wires & airlockWireColorToFlag[8] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[8] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[7]]) + t1 += text("White Wire: [] []
\n", (src.wires & airlockWireColorToFlag[7] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[7] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[6]]) + t1 += text("Yellow Wire: [] []
\n", (src.wires & airlockWireColorToFlag[6] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[6] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[5]]) + t1 += text("Red Wire: [] []
\n", (src.wires & airlockWireColorToFlag[5] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[5] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[4]]) + t1 += text("Blue Wire: [] []
\n", (src.wires & airlockWireColorToFlag[4] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[4] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[3]]) + t1 += text("Green Wire: [] []
\n", (src.wires & airlockWireColorToFlag[3] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[3] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[2]]) + t1 += text("Grey Wire: [] []
\n", (src.wires & airlockWireColorToFlag[2] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[2] ? text(" or Pulse Wire", src) : "")) + + //t1 += text("[]: ", airlockFeatureNames[airlockWireColorToIndex[1]]) + t1 += text("Black Wire: [] []
\n", (src.wires & airlockWireColorToFlag[1] ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & airlockWireColorToFlag[1] ? text(" or Pulse Wire", src) : "")) + + t1 += text("
\n[]
\n[]
\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off.")) + + t1 += text("

Close

\n", src) + user << browse(t1, "window=airlock") else ..(user) @@ -94,67 +557,252 @@ Black Wire: [(src.wires & 1 ? "Cut Wire" : ..() if (usr.stat || usr.restrained() ) return - if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf))) - usr.machine = src - if (href_list["wires"]) - var/t1 = text2num(href_list["wires"]) - if (!( istype(usr.equipped(), /obj/item/weapon/wirecutters) )) - return - if (!( src.p_open )) - return - if (t1 & 1) - if (src.wires & 1) - src.wires &= ~1 + if (href_list["close"]) + usr << browse(null, "window=airlock") + if (usr.machine==src) + usr.machine = null + + + + return + if (!istype(usr, /mob/ai)) + if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + usr.machine = src + if (href_list["wires"]) + var/t1 = text2num(href_list["wires"]) + if (!( istype(usr.equipped(), /obj/item/weapon/wirecutters) )) + usr << alert("You need wirecutters!", null, null, null, null, null) + return + if (!( src.p_open )) + return + if (src.isWireColorCut(t1)) + src.mend(t1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + else - src.wires |= 1 - else if (t1 & 2) - if (src.wires & 2) - src.wires &= ~2 + src.cut(t1) + else if (href_list["pulse"]) + var/t1 = text2num(href_list["pulse"]) + if (!( istype(usr.equipped(), /obj/item/weapon/multitool) )) + usr << alert("You need a multitool!", null, null, null, null, null) + return + if ((stat & NOPOWER)) + usr << "Due to a power failure, nothing happens." + return + if (!src.arePowerSystemsOn()) + usr << "Due to power being disrupted, nothing happens." + return + if (!( src.p_open )) + usr << "You can't pulse it because the panel is closed." + return + if (src.isWireColorCut(t1)) + usr << "You can't pulse that wire - it being cut means a signal can't travel properly in it." + return + + else - src.wires |= 2 - else if (t1 & 4) - if (src.wires & 4) - src.wires &= ~4 - else - src.wires |= 4 - else if (t1 & 8) - if (src.wires & 8) - src.wires &= ~8 - else - src.wires |= 8 - else if (t1 & 16) - if (src.wires & 16) - src.wires &= ~16 - else - src.wires |= 16 - else if (t1 & 32) - if (src.wires & 32) - src.wires &= ~32 - else - src.wires |= 32 - else if (t1 & 64) - if (src.wires & 64) - src.wires &= ~64 - else - src.wires |= 64 - else if (t1 & 128) - if (src.wires & 128) - src.wires &= ~128 - else - src.wires |= 128 - else if (t1 & 256) - if (src.wires & 256) - src.wires &= ~256 - else - src.wires |= 256 - src.update() - add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.pulse(t1) + src.updateIconState() + add_fingerprint(usr) + src.updateDialog() + else + //AI + if (!src.canAIControl()) + usr << "Airlock control connection failure!" + return + //aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door + //aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door + if (href_list["aiDisable"]) + var/code = text2num(href_list["aiDisable"]) + switch (code) + if (1) + //disable idscan + if (src.isWireCut(AIRLOCK_WIRE_IDSCAN)) + usr << "The IdScan wire has been cut - So, you can't disable it, but it is already disabled anyways." + else if (src.aiDisabledIdScanner) + usr << "You've already disabled the IdScan feature." + else + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + src.aiDisabledIdScanner = 1 + else + usr << "Unable to disable ID Scanner due to power failure." + if (2) + //disrupt main power + if (src.secondsMainPowerLost == 0) + src.loseMainPower() + else + usr << "Main power is already offline." + if (3) + //disrupt backup power + if (src.secondsBackupPowerLost == 0) + src.loseBackupPower() + else + usr << "Backup power is already offline." + if (4) + //drop door bolts + if (src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + usr << "You can't drop the door bolts - The door bolt dropping wire has been cut." + else if (src.locked!=1) + src.locked = 1 + if (5) + //un-electrify door + if (src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) + usr += text("Can't un-electrify the airlock - The electrification wire is cut.
\n") + else if (src.secondsElectrified==-1) + src.secondsElectrified = 0 + else if (src.secondsElectrified>0) + src.secondsElectrified = 0 + if (7) + //close door + if (src.blocked) + usr << text("The airlock has been welded shut!
\n") + else if (src.locked) + usr << text("The door bolts are down!
\n") + else if (!src.density) + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + close() + else + usr << "Unable to close door due to power failure." + else + usr << text("The airlock is already closed.
\n") + + else if (href_list["aiEnable"]) + var/code = text2num(href_list["aiEnable"]) + switch (code) + if (1) + //enable idscan + if (src.isWireCut(AIRLOCK_WIRE_IDSCAN)) + usr << "You can't enable IdScan - The IdScan wire has been cut." + else if (src.aiDisabledIdScanner) + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + src.aiDisabledIdScanner = 0 + else + usr << "Unable to enable ID Scanner due to power failure." + else + usr << "The IdScan feature is not disabled." + if (4) + //raise door bolts + if (src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + usr << text("The door bolt drop wire is cut - you can't raise the door bolts.
\n") + else if (!src.locked) + usr << text("The door bolts are already up.
\n") + else if (src.isWireCut(AIRLOCK_WIRE_POWER_ASSIST)) + usr << text("The door bolts are not coming up - The power assist wire has been cut.
\n") + else + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + src.locked = 0 + else + usr << text("Cannot raise door bolts due to power failure.
\n") + + if (5) + //electrify door for 30 seconds + if (src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) + usr << text("The electrification wire has been cut.
\n") + else if (src.secondsElectrified==-1) + usr << text("The door is already indefinitely electrified. You'd have to un-electrify it before you can re-electrify it with a non-forever duration.
\n") + else if (src.secondsElectrified!=0) + usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.
\n") + else + src.secondsElectrified = 30 + spawn(10) + while (src.secondsElectrified>0) + src.secondsElectrified-=1 + if (src.secondsElectrified<0) + src.secondsElectrified = 0 + src.updateDialog() + sleep(10) + if (6) + //electrify door indefinitely + if (src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) + usr << text("The electrification wire has been cut.
\n") + else if (src.secondsElectrified==-1) + usr << text("The door is already indefinitely electrified.
\n") + else if (src.secondsElectrified!=0) + usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.
\n") + else + src.secondsElectrified = -1 + if (7) + //open door + if (src.blocked) + usr << text("The airlock has been welded shut!
\n") + else if (src.locked) + usr << text("The door bolts are down!
\n") + else if (src.density) + if (src.arePowerSystemsOn() && (!(stat & NOPOWER))) + open() + else + usr << "Unable to open door due to power failure." + else + usr << text("The airlock is already opened.
\n") + + src.updateIconState() + src.updateDialog() + return - - + // Attack with item. // If weldingtool (and door is closed), weld/unweld the door // If wrench, and door has test light on, unlock the door (raise bolts) @@ -163,6 +811,12 @@ Black Wire: [(src.wires & 1 ? "Cut Wire" : // Otherwise, do standard door attackby() attackby(obj/item/weapon/C, mob/user) + //world << text("airlock attackby src [] obj [] mob []", src, C, user) + if (!istype(usr, /mob/ai)) + if (src.isElectrified()) + if (src.shock(user, 75)) + return + src.add_fingerprint(user) if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density)) var/obj/item/weapon/weldingtool/W = C @@ -176,20 +830,27 @@ Black Wire: [(src.wires & 1 ? "Cut Wire" : src.blocked = 1 else src.blocked = null - src.update() + src.updateIconState() return else if (istype(C, /obj/item/weapon/wrench)) if (src.p_open) - if (src.powered) - src.locked = null + if (src.arePowerSystemsOn()) + if (src.canBoltsBeRaisedManually()) + src.locked = null + else + user << alert("You strain to try to raise the door bolts, but the door's power assist seems to be disabled!", null, null, null, null, null) else user << alert("You need power assist!", null, null, null, null, null) - src.update() + src.updateIconState() else if (istype(C, /obj/item/weapon/screwdriver)) src.p_open = !( src.p_open ) - update() + src.updateIconState() + else if (istype(C, /obj/item/weapon/wirecutters)) + return src.attack_hand(user) + else if (istype(C, /obj/item/weapon/multitool)) + return src.attack_hand(user) else if (istype(C, /obj/item/weapon/crowbar)) - if ((src.density && !( src.blocked ) && !( src.operating ) && !( src.powered ) && !( src.locked ))) + if ((src.density) && (!( src.blocked ) && !( src.operating ) && ((!src.arePowerSystemsOn()) || (stat & NOPOWER)) && !( src.locked ))) spawn( 0 ) src.operating = 1 flick(text("[]doorc0", (src.p_open ? "o_" : null)), src) @@ -203,7 +864,44 @@ Black Wire: [(src.wires & 1 ? "Cut Wire" : T.buildlinks() src.operating = 0 return + else + if ((!src.density) && (!( src.blocked ) && !( src.operating ) && !( src.locked ))) + spawn( 0 ) + src.operating = 1 + flick(text("[]doorc1", (src.p_open ? "o_" : null)), src) + src.icon_state = text("[]door1", (src.p_open ? "o_" : null)) + src.density = 1 + if (src.visible) + src.opacity = 1 + + + + var/turf/T = src.loc + if (istype(T, /turf)) + T.updatecell = 0 + T.buildlinks() + sleep(15) + src.operating = 0 + else ..() return - + + open() + + if ((src.blocked || src.locked || (! src.arePowerSystemsOn() ) || (stat & NOPOWER))) + return + use_power(50) + ..() + return + + close() + + if ((! src.arePowerSystemsOn() ) || (stat & NOPOWER)) + return + use_power(50) + ..() + var/turf/T = src.loc + if (T) + T.firelevel = 0 + return diff --git a/Code/Machinery/Door/false_wall.dm b/Code/Machinery/Door/false_wall.dm index a531d3a..b09a9a0 100644 --- a/Code/Machinery/Door/false_wall.dm +++ b/Code/Machinery/Door/false_wall.dm @@ -22,6 +22,11 @@ obj/machinery/door/false_wall usr << "It looks like a regular wall" + // AI can't use secret doors + + attack_ai(mob/user as mob) + return + // Monkey interact - if in monkey mode, same as human attack_paw(mob/user) diff --git a/Code/Machinery/Door/window.dm b/Code/Machinery/Door/window.dm index 03fd050..24ab197 100644 --- a/Code/Machinery/Door/window.dm +++ b/Code/Machinery/Door/window.dm @@ -56,7 +56,11 @@ obj/machinery/door/window attack_paw(mob/user) return src.attack_hand(user) - + // Attack by AI same as human + + attack_ai(mob/user) + return src.attack_hand(user) + // Human attack hand - cycle the door attack_hand(mob/user) @@ -90,6 +94,11 @@ obj/machinery/door/window if (!( istype(card, /obj/item/weapon/card/id) )) return else + if (istype(user, /mob/ai)) + if (src.density) + open() + else + close() return if (card.check_access(access, allowed)) // check access levels of worn ID if (src.density) // and toggle door open/closed depending on current state diff --git a/Code/Machinery/Power/apc.dm b/Code/Machinery/Power/apc.dm index f939a49..b471b9e 100644 --- a/Code/Machinery/Power/apc.dm +++ b/Code/Machinery/Power/apc.dm @@ -146,6 +146,9 @@ obj/machinery/power/apc attackby(obj/item/weapon/W, mob/user) if(stat & BROKEN) return + + if (istype(user, /mob/ai)) + return src.attack_hand(user) if (istype(W, /obj/item/weapon/screwdriver)) // screwdriver means open or close the cover if(opened) @@ -198,14 +201,17 @@ obj/machinery/power/apc // Attack with hand - remove cell (if present and cover open) or interact with the APC - + + attack_ai(mob/user) + return src.attack_hand(user) + attack_hand(mob/user) add_fingerprint(user) if(stat & BROKEN) return - if(opened) + if(opened && (!istype(user, /mob/ai))) if(cell) cell.loc = usr cell.layer = 20 @@ -232,14 +238,15 @@ obj/machinery/power/apc proc/interact(mob/user) if ( (get_dist(src, user) > 1 )) - user.machine = null - user << browse(null, "window=apc") - return + if (!istype(user, /mob/ai)) + user.machine = null + user << browse(null, "window=apc") + return user.machine = src var/t = "Area Power Controller ([area.name])
" - if(locked) // If interface is locked, show status only + if(locked && (!istype(user, /mob/ai))) // If interface is locked, show status only t += "(Swipe ID card to unlock inteface.)
" t += "Main breaker : [operating ? "On" : "Off"]
" t += "External power : [ main_status ? (main_status ==2 ? "Good" : "Low") : "None"]
" @@ -260,7 +267,8 @@ obj/machinery/power/apc t += "
Cover lock: [coverlocked ? "Engaged" : "Disengaged"]" else // If interface is unlocked, show status and control links - t += "(Swipe ID card to lock interface.)
" + if (!istype(user, /mob/ai)) + t += "(Swipe ID card to lock interface.)
" t += "Main breaker: [operating ? "On Off" : "On Off" ]
" t += "External power : [ main_status ? (main_status ==2 ? "Good" : "Low") : "None"]
" if(cell) @@ -357,10 +365,11 @@ obj/machinery/power/apc if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return - if (( (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["lock"]) @@ -405,10 +414,7 @@ obj/machinery/power/apc return - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - //Foreach goto(275) + src.updateDialog() else usr << browse(null, "window=apc") usr.machine = null @@ -626,10 +632,7 @@ obj/machinery/power/apc // update any player looking at the interaction window - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - + src.updateDialog() // If APC hit by a meteor, break it diff --git a/Code/Machinery/Power/generator.dm b/Code/Machinery/Power/generator.dm index 149d716..b5a8117 100644 --- a/Code/Machinery/Power/generator.dm +++ b/Code/Machinery/Power/generator.dm @@ -73,33 +73,35 @@ obj/machinery/power/generator var/th = circ2.gas2.temperature var/deltat = th-tc - var/eta = (1-tc/th)*0.65 // efficiency 65% of Carnot + if (th>0) + var/eta = (1-tc/th)*0.65 // efficiency 65% of Carnot - if(gc > 0 && deltat >0) // require some cold gas (for sink) and a positive temp gradient - var/ghoc = gh/gc + if(gc > 0 && deltat >0) // require some cold gas (for sink) and a positive temp gradient + var/ghoc = gh/gc - //var/qc = gc*tc - //var/qh = gh*th + //var/qc = gc*tc + //var/qh = gh*th - var/fdt = 1/( (1-eta)*ghoc + 1) // min timestep + var/fdt = 1/( (1-eta)*ghoc + 1) // min timestep - fdt = min(fdt, 0.1) // max timestep + fdt = min(fdt, 0.1) // max timestep - var/q = fdt*eta*gh*(deltat) // heat generated + var/q = fdt*eta*gh*(deltat) // heat generated - var/thp = th - fdt * deltat - var/tcp = tc + fdt * (1 - eta) * (ghoc) * deltat + var/thp = th - fdt * deltat + var/tcp = tc + fdt * (1 - eta) * (ghoc) * deltat - lastgen = q * GENRATE - add_avail(lastgen) + lastgen = q * GENRATE + add_avail(lastgen) - circ1.ngas2.temperature = tcp - circ2.ngas2.temperature = thp + circ1.ngas2.temperature = tcp + circ2.ngas2.temperature = thp + else + lastgen = 0 else lastgen = 0 - // update icon overlays only if displayed level has changed var/genlev = max(0, min( round(11*lastgen / 100000), 11)) @@ -107,13 +109,16 @@ obj/machinery/power/generator lastgenlev = genlev updateicon() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - + src.updateDialog() // Attack with hand, open interaction window + + attack_ai(mob/user) + if(stat & (BROKEN|NOPOWER)) return + + interact(user) + attack_hand(mob/user) add_fingerprint(user) @@ -127,7 +132,7 @@ obj/machinery/power/generator proc/interact(mob/user) - if ( (get_dist(src, user) > 1 )) + if ( (get_dist(src, user) > 1 ) && (!istype(user, /mob/ai))) user.machine = null user << browse(null, "window=teg") return @@ -165,12 +170,13 @@ obj/machinery/power/generator if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return //world << "[href] ; [href_list[href]]" - if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) if( href_list["close"] ) @@ -239,10 +245,7 @@ obj/machinery/power/generator circ2.control(c2on, c2rate) updateicon() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - //Foreach goto(275) + src.updateDialog() else usr << browse(null, "window=teg") usr.machine = null diff --git a/Code/Machinery/Power/monitor.dm b/Code/Machinery/Power/monitor.dm index d2a4c8f..dce0092 100644 --- a/Code/Machinery/Power/monitor.dm +++ b/Code/Machinery/Power/monitor.dm @@ -15,6 +15,14 @@ obj/machinery/power/monitor access = "4000/2030/3004" // ID card access levels needed to enable remote control allowed = "Systems" // ID card job assignment needed to enable remote control + //Attack by AI, show report window + + attack_ai(mob/user) + add_fingerprint(user) + + if(stat & (BROKEN|NOPOWER)) + return + interact(user) // Attack with hand, show report window @@ -48,9 +56,10 @@ obj/machinery/power/monitor proc/interact(mob/user) if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) - user.machine = null - user << browse(null, "window=powcomp") - return + if (!istype(user, /mob/ai)) + user.machine = null + user << browse(null, "window=powcomp") + return user.machine = src @@ -107,10 +116,11 @@ obj/machinery/power/monitor if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return - if (( (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( (get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai)))) usr.machine = src if (href_list["breaker"]) var/obj/machinery/power/apc/APC = locate(href_list["apc"]) @@ -136,9 +146,7 @@ obj/machinery/power/monitor use_power(250) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + src.updateDialog() // Power changed in location area - update icon to unpowered state, set stat diff --git a/Code/Machinery/Power/smes.dm b/Code/Machinery/Power/smes.dm index 63435c0..44a59f7 100644 --- a/Code/Machinery/Power/smes.dm +++ b/Code/Machinery/Power/smes.dm @@ -11,9 +11,9 @@ * TODO: See note a proc/restore() below */ -#define SMESMAXCHARGELEVEL 60000 // This is the maximum rate at which you can charge the SMES +#define SMESMAXCHARGELEVEL 200000 // This is the maximum rate at which you can charge the SMES -#define SMESMAXOUTPUT 60000 // This is the maxmium output power of the SMES +#define SMESMAXOUTPUT 200000 // This is the maxmium output power of the SMES #define SMESRATE 0.05 // rate of internal charge to external power output @@ -147,10 +147,7 @@ if(last_disp != chargedisplay() || last_chrg != charging || last_onln != online) updateicon() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - + src.updateDialog() // A special routine for SMES @@ -194,7 +191,16 @@ if(terminal && terminal.powernet) terminal.powernet.newload += amount + // Attack to open interaction window + + attack_ai(mob/user) + add_fingerprint(user) + + if(stat & BROKEN) return + + interact(user) + // Attack to open interaction window attack_hand(mob/user) @@ -211,9 +217,10 @@ proc/interact(mob/user) if ( (get_dist(src, user) > 1 )) - user.machine = null - user << browse(null, "window=smes") - return + if (!istype(user, /mob/ai)) + user.machine = null + user << browse(null, "window=smes") + return user.machine = src @@ -250,12 +257,13 @@ if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return //world << "[href] ; [href_list[href]]" - if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) if( href_list["close"] ) @@ -327,10 +335,7 @@ output = max(0, min(SMESMAXOUTPUT, output)) // clamp to range - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) - //Foreach goto(275) + src.updateDialog() else usr << browse(null, "window=smes") usr.machine = null diff --git a/Code/Machinery/Power/solar_control.dm b/Code/Machinery/Power/solar_control.dm index e008ae7..6cd9d8c 100644 --- a/Code/Machinery/Power/solar_control.dm +++ b/Code/Machinery/Power/solar_control.dm @@ -57,7 +57,15 @@ obj/machinery/power/solar_control if(cdir > 0) overlays += image('enginecomputer.dmi', "solcon-o", FLY_LAYER, cdir) + // Attack by AI, open interaction window + attack_ai(mob/user) + + add_fingerprint(user) + + if(stat & (BROKEN | NOPOWER)) return + + interact(user) // Attack by hand, open interaction window @@ -96,9 +104,7 @@ obj/machinery/power/solar_control // Update all players view interaction window - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + src.updateDialog() // Display the interaction window @@ -106,9 +112,10 @@ obj/machinery/power/solar_control proc/interact(mob/user) if ( (get_dist(src, user) > 1 )) - user.machine = null - user << browse(null, "window=solcon") - return + if (!istype(user, /mob/ai)) + user.machine = null + user << browse(null, "window=solcon") + return user.machine = src @@ -161,12 +168,13 @@ obj/machinery/power/solar_control if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return //world << "[href] ; [href_list[href]]" - if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) if( href_list["close"] ) @@ -203,9 +211,7 @@ obj/machinery/power/solar_control nexttime = world.timeofday + 10*trackrate spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + src.updateDialog() else usr << browse(null, "window=solcon") diff --git a/Code/Machinery/Power/turbine.dm b/Code/Machinery/Power/turbine.dm index 3592793..ce01d76 100644 --- a/Code/Machinery/Power/turbine.dm +++ b/Code/Machinery/Power/turbine.dm @@ -142,28 +142,36 @@ obj/machinery/power/turbine lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ add_avail(lastgen) - if(compressor.gas.temperature > (T20C+50)) - var/newrpm = ((compressor.gas.temperature-T20C-50) * compressor.gas.tot_gas() / TURBPRES)*30000 - newrpm = max(0, newrpm) + //if(compressor.gas.temperature > (T20C+50)) + var/newrpm = ((compressor.gas.temperature-T20C-50) * compressor.gas.tot_gas() / TURBPRES)*30000 + newrpm = max(0, newrpm) - if(!compressor.starter || newrpm > 1000) - compressor.rpmtarget = newrpm + if(!compressor.starter || newrpm > 1000) + compressor.rpmtarget = newrpm - var/oamount = min(compressor.gas.tot_gas(), compressor.rpm/32000*compressor.capacity) + if(compressor.gas.tot_gas()>0) + var/oamount = min(compressor.gas.tot_gas(), (compressor.rpm+100)/35000*compressor.capacity) - compressor.gas.turf_add(outturf, oamount) + compressor.gas.turf_add(outturf, oamount) - outturf.firelevel = outturf.poison + outturf.firelevel = outturf.poison if(lastgen > 100) overlays += image('pipes.dmi', "turb-o", FLY_LAYER) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + src.updateDialog() + // Attack by AI, do user interaction + attack_ai(mob/user) + + add_fingerprint(user) + + if(stat & (BROKEN | NOPOWER)) return + + interact(user) + // Attack hand, do user interaction attack_hand(mob/user) @@ -179,7 +187,7 @@ obj/machinery/power/turbine proc/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) ) + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/ai)) ) user.machine = null user << browse(null, "window=turbine") return @@ -214,10 +222,11 @@ obj/machinery/power/turbine if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return - if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if (( usr.machine==src && (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) if( href_list["close"] ) @@ -229,9 +238,7 @@ obj/machinery/power/turbine compressor.starter = !compressor.starter spawn(0) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.interact(M) + src.updateDialog() else usr << browse(null, "window=turbine") diff --git a/Code/Machinery/alarm.dm b/Code/Machinery/alarm.dm index c56ffac..811a100 100644 --- a/Code/Machinery/alarm.dm +++ b/Code/Machinery/alarm.dm @@ -53,8 +53,9 @@ obj/machinery/alarm if (usr.stat || stat & NOPOWER) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return var/turf/T = src.loc if (!( istype(T, /turf) )) return diff --git a/Code/Machinery/cryocell.dm b/Code/Machinery/cryocell.dm index aadff74..15efe26 100644 --- a/Code/Machinery/cryocell.dm +++ b/Code/Machinery/cryocell.dm @@ -131,9 +131,7 @@ obj/machinery/cryo_cell use_power(500) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() // Called if no pipe is present @@ -225,17 +223,19 @@ obj/machinery/cryo_cell attack_paw(mob/user) return src.attack_hand(user) - + // AI interact + attack_ai(mob/user) + return src.attack_ai(user) + // Human interact, show status window of machine and occupant - // No topic links, since all control is handled through the freezer unit - + attack_hand(mob/user) if(stat & NOPOWER) return user.machine = src - if (istype(user, /mob/human)) + if (istype(user, /mob/human) || istype(user, /mob/ai)) var/dat = " System Statistics:
" if (src.gas.temperature > T0C) dat += text("\tTemperature (°C): [] (MUST be below 0, add coolant to mixture)
", round(src.gas.temperature-T0C, 0.1)) @@ -249,6 +249,7 @@ obj/machinery/cryo_cell dat += text("\tOxygen Units: [] (Add oxygen to mixture!)
", round(src.gas.oxygen, 0.1)) else dat += text("\tOxygen Units: []
", round(src.gas.oxygen, 0.1)) + dat += text("Drain", src) if (src.occupant) dat += "Occupant Statistics:
" var/t1 @@ -298,7 +299,53 @@ obj/machinery/cryo_cell dat += text("

Close", user) user << browse(dat, "window=cryo;size=400x500") + //This is for the emergency drain feature, for draining the cryo cell back into the freezer -shadowlord13 + Topic(href, href_list) + ..() + if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return + if ((usr.stat || usr.restrained())) + return + if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) + usr.machine = src + if (href_list["drain"]) + //leak_to_turf() + if(vnode) + //vnode:leak_to_turf() + var/obj/machinery/freezer/target = vnode:vnode2 + if (target) + //target.leak_to_turf() + var/sendplasma = src.gas.plasma + vnode:gas:plasma + vnode:vnode2:gas:plasma + var/sendoxygen = src.gas.oxygen + vnode:gas:oxygen + vnode:vnode2:gas:oxygen + for (var/obj/item/weapon/flasks/flask in target.contents) + if (istype(flask, /obj/item/weapon/flasks/plasma)) + flask.plasma += sendplasma + src.gas.plasma = 0 + src.ngas.plasma = 0 + src.vnode:gas.plasma = 0 + src.vnode:ngas.plasma = 0 + src.vnode:vnode2:gas.plasma = 0 + src.vnode:vnode2:ngas.plasma = 0 + else + if (istype(flask, /obj/item/weapon/flasks/oxygen)) + flask.oxygen += sendoxygen + src.gas.oxygen = 0 + src.ngas.oxygen = 0 + src.vnode:gas.oxygen = 0 + src.vnode:ngas.oxygen = 0 + src.vnode:vnode2:gas.oxygen = 0 + src.vnode:vnode2:ngas.oxygen = 0 + //we ignore co2, sl_gas, and n2 + else + leak_to_turf() + src.add_fingerprint(usr) + else + usr << "User too far?" + return + // Called to remove the occupant of a cell // Reset the view back to normal diff --git a/Code/Machinery/dispenser.dm b/Code/Machinery/dispenser.dm index 95675d6..22a253a 100644 --- a/Code/Machinery/dispenser.dm +++ b/Code/Machinery/dispenser.dm @@ -24,6 +24,11 @@ obj/machinery/dispenser use_power(5) + // attack by AI same as attack by human + + attack_ai(mob/user as mob) + return src.attack_hand(user) + // attack by monkey same as attack by human attack_paw(mob/user) @@ -45,7 +50,10 @@ obj/machinery/dispenser if (usr.stat || usr.restrained() ) return if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + else + usr << "\red You are unable to dispense anything, since the controls are physical levers which don't go through any other kind of input." return if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) usr.machine = src diff --git a/Code/Machinery/door_control.dm b/Code/Machinery/door_control.dm index 83a39b6..a557931 100644 --- a/Code/Machinery/door_control.dm +++ b/Code/Machinery/door_control.dm @@ -25,6 +25,11 @@ obj/machinery/door_control attackby(nothing, mob/user) return src.attack_hand(user) + // attack by AI, same as human + + attack_ai(mob/user) + return src.attack_hand(user) + // attack by hand, toggle all poddoors with same id attack_hand(mob/user) diff --git a/Code/Machinery/firealarm.dm b/Code/Machinery/firealarm.dm index d7771f9..3a276df 100644 --- a/Code/Machinery/firealarm.dm +++ b/Code/Machinery/firealarm.dm @@ -58,9 +58,7 @@ obj/machinery/firealarm src.time = 0 src.timing = 0 - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() return @@ -75,6 +73,11 @@ obj/machinery/firealarm stat |= NOPOWER icon_state = "firealarm-p" + // AI interact same as human + + attack_ai(mob/user) + return src.attack_hand(user) + // Monkey interact same as human attack_paw(mob/user) @@ -92,7 +95,7 @@ obj/machinery/firealarm var/area/A = src.loc var/d1 var/d2 - if (istype(user, /mob/human)) + if (istype(user, /mob/human) || istype(user, /mob/ai)) A = A.loc if (A.fire) @@ -131,7 +134,7 @@ obj/machinery/firealarm if (usr.stat || stat&NOPOWER) return - if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["reset"]) @@ -148,9 +151,7 @@ obj/machinery/firealarm src.time += tp src.time = min(max(round(src.time), 0), 120) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() src.add_fingerprint(usr) else usr << browse(null, "window=firealarm") diff --git a/Code/Machinery/freezer.dm b/Code/Machinery/freezer.dm index 0c2579e..0d6064b 100644 --- a/Code/Machinery/freezer.dm +++ b/Code/Machinery/freezer.dm @@ -99,7 +99,10 @@ obj/machinery/freezer attack_paw(mob/user) return src.attack_hand(user) - + + // AI interact + attack_ai(mob/user) + return src.attack_ai(user) // Interact by human // Show the interaction window @@ -108,7 +111,7 @@ obj/machinery/freezer user.machine = src - if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) + if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))) && (!istype(usr, /mob/ai))) var/d1 if (locate(/obj/item/weapon/flasks, src)) var/counter = 1 @@ -174,10 +177,12 @@ obj/machinery/freezer Topic(href, href_list) ..() if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) - return + if (!istype(usr, /mob/ai)) + return if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) usr.machine = src if (href_list["cp"]) @@ -381,9 +386,7 @@ obj/machinery/freezer return - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() return diff --git a/Code/Machinery/igniter.dm b/Code/Machinery/igniter.dm index 29a1309..f86cd66 100644 --- a/Code/Machinery/igniter.dm +++ b/Code/Machinery/igniter.dm @@ -33,6 +33,10 @@ obj/machinery/igniter icon_state = "igniter0" + // AI attack + attack_ai(mob/user as mob) + return src.attack_hand(user) + // monkey attack same as human if in monkey mode attack_paw(mob/user as mob) diff --git a/Code/Machinery/recharger.dm b/Code/Machinery/recharger.dm index 0e33313..41e2e72 100644 --- a/Code/Machinery/recharger.dm +++ b/Code/Machinery/recharger.dm @@ -43,7 +43,7 @@ obj/machinery/recharger process() if (src.charging && ! (stat & NOPOWER) ) - if (src.charging.charges < 10) + if (src.charging.charges < src.charging.maximum_charges) src.charging.charges++ src.icon_state = "recharger1" use_power(250) diff --git a/Code/Machinery/sec_lock.dm b/Code/Machinery/sec_lock.dm index 15bc5b7..7ad978d 100644 --- a/Code/Machinery/sec_lock.dm +++ b/Code/Machinery/sec_lock.dm @@ -48,6 +48,10 @@ obj/machinery/sec_lock attack_paw(mob/user) return src.attack_hand(user) + // attack by AI, same as human + + attack_ai(mob/user) + return src.attack_hand(user) // Interact, show window @@ -57,7 +61,7 @@ obj/machinery/sec_lock return use_power(10) - if (src.loc == user.loc) + if ((src.loc == user.loc) || (istype(user, /mob/ai))) var/dat = {"Security Pad:
Keycard: [src.scan ? "[src.scan.name]" : "-----"]
Toggle Outer Door
@@ -84,77 +88,77 @@ Keycard: [src.scan ? "[src.scan.name]" : "0) + if (!isPopping()) + if (isDown()) + popUp() + else + var/mob/target = pick(tarea.turretTargets) + src.dir = get_dir(src, target) + if (src.enabled) + if (target.stat!=2) + src.shootAt(target) + else + tarea.subjectDied(target) + + else + if (src.wasvalid) + src.die() + else + world << text("ERROR: Turret at [], [], [] is NOT in a turret-protected area!", x, y, z) + +/obj/machinery/turret/proc/isDown() + return (invisibility!=0) + +/obj/machinery/turret/proc/popUp() + if ((!isPopping()) || src.popping==-1) + invisibility = 0 + popping = 1 + if (src.cover!=null) + flick("popup", src.cover) + src.cover.icon_state = "openTurretCover" + spawn(10) + if (popping==1) popping = 0 + +/obj/machinery/turret/proc/popDown() + if ((!isPopping()) || src.popping==1) + popping = -1 + if (src.cover!=null) + flick("popdown", src.cover) + src.cover.icon_state = "turretCover" + spawn(10) + if (popping==-1) + invisibility = 2 + popping = 0 + + +/obj/machinery/turret/proc/shootAt(var/mob/target) + var/turf/T = loc + var/atom/U = (istype(target, /atom/movable) ? target.loc : target) + if ((!( U ) || !( T ))) + return + while(!( istype(U, /turf) )) + U = U.loc + if (!( istype(T, /turf) )) + return + + var/obj/beam/a_laser/A + if (src.lasers) + A = new /obj/beam/a_laser( loc ) + use_power(50) + else + A = new /obj/beam/a_laser/s_laser( loc ) + use_power(100) + + if (!( istype(U, /turf) )) + //A = null + del(A) + return + A.current = U + A.yo = U.y - T.y + A.xo = U.x - T.x + spawn( 0 ) + A.process() + return + return + +/obj/machinery/turret/las_act(flag) + if (flag == "bullet") + src.health -= 3 + if (flag) //taser + return + //src.health -= 1 + else + src.health -= 2 + + if (src.health <= 0) + src.die() + return + +/obj/machinery/turret/ex_act(str) + src.die() + +/obj/machinery/turret/proc/die() + src.health = 0 + src.density = 0 + src.stat |= BROKEN + src.icon_state = "destroyed_target_prism" + //src.icon_state = "explosion" + if (cover!=null) + del(cover) + flick("explosion", src) + spawn(14) + del(src) + +/obj/machinery/turretid + name = "Turret deactivation control" + icon = 'items.dmi' + icon_state = "motion3" + anchored = 1 + density = 0 + var/enabled = 1 + var/lethal = 0 + var/locked = 1 + var/access = "5555" + var/allowed = null + +/obj/machinery/turretid/attackby(obj/item/weapon/W, mob/user) + if(stat & BROKEN) return + if (istype(user, /mob/ai)) + return src.attack_hand(user) + else if (istype(W, /obj/item/weapon/card/id) ) // trying to unlock the interface with an ID card + var/obj/item/weapon/card/id/I = W + if (I.check_access(access, allowed)) + locked = !locked + user << "You [ locked ? "lock" : "unlock"] the panel." + if (locked) + if (user.machine==src) + user.machine = null + user << browse(null, "window=turretid") + else + if (user.machine==src) + src.attack_hand(usr) + else + user << "\red Access denied." + +/obj/machinery/turretid/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/turretid/attack_hand(mob/user as mob) + if ( (get_dist(src, user) > 1 )) + if (!istype(user, /mob/ai)) + user << text("Too far away.") + user.machine = null + user << browse(null, "window=turretid") + return + + user.machine = src + var/loc = src.loc + if (istype(loc, /turf)) + loc = loc:loc + if (!istype(loc, /area)) + user << text("Turret badly positioned - loc.loc is [].", loc) + return + var/area/area = loc + var/t = "Turret Control Panel ([area.name])
" + + if(src.locked && (!istype(user, /mob/ai))) + t += "(Swipe ID card to unlock control panel.)
" + else + t += text("Turrets [] -
[]?
\n", src.enabled?"activated":"deactivated", src, src.enabled?"Disable":"Enable") + t += text("Currently set for [] - Change to []?
\n", src.lethal?"lethal":"stun repeatedly", src, src.lethal?"Stun repeatedly":"Lethal") + + user << browse(t, "window=turretid") + +/obj/machinery/turretid/Topic(href, href_list) + ..() + if (usr.stat || usr.restrained() ) + return + if (src.locked) + if (!istype(usr, /mob/ai)) + usr << "Control panel is locked!" + return + if (href_list["toggleOn"]) + src.enabled = !src.enabled + src.updateTurrets() + else if (href_list["toggleLethal"]) + src.lethal = !src.lethal + src.updateTurrets() + src.attack_hand(usr) + +/obj/machinery/turretid/proc/updateTurrets() + if (src.enabled) + if (src.lethal) + icon_state = "motion1" + else + icon_state = "motion3" + else + icon_state = "motion0" + + var/loc = src.loc + if (istype(loc, /turf)) + loc = loc:loc + if (!istype(loc, /area)) + world << text("Turret badly positioned - loc.loc is [].", loc) + return + var/area/area = loc + + for (var/obj/machinery/turret/aTurret in area) + aTurret.setState(enabled, lethal) diff --git a/Code/aaaDefines.dm b/Code/aaaDefines.dm index 9971fd7..616c863 100644 --- a/Code/aaaDefines.dm +++ b/Code/aaaDefines.dm @@ -184,7 +184,7 @@ //world << "Returning mode [M]" return M - //world << "Failed to pick gamemode in config/pickmode()" + world << "Failed to pick gamemode in config/pickmode()" return null diff --git a/Code/airtunnel.dm b/Code/airtunnel.dm index d977e4f..d47d088 100644 --- a/Code/airtunnel.dm +++ b/Code/airtunnel.dm @@ -146,57 +146,59 @@ return /datum/air_tunnel/proc/extend() - if (src.operating) return - src.operating = 2 - while(src.operating == 2) - var/ok = 1 - for(var/obj/move/airtunnel/connector/A in src.connectors) - if (!( A.current.next )) - src.operating = 0 - return - if (!( A.move_left() )) - ok = 0 - //Foreach goto(56) - if (!( ok )) - src.operating = 0 - else + + spawn(0) + src.operating = 2 + while(src.operating == 2) + var/ok = 1 for(var/obj/move/airtunnel/connector/A in src.connectors) - if (A.current) - A.current.next.loc = get_step(A.current.loc, EAST) - A.current = A.current.next - A.current.deployed = 1 - else + if (!( A.current.next )) src.operating = 0 - //Foreach goto(150) - sleep(20) - return + return + if (!( A.move_left() )) + ok = 0 + //Foreach goto(56) + if (!( ok )) + src.operating = 0 + else + for(var/obj/move/airtunnel/connector/A in src.connectors) + if (A.current) + A.current.next.loc = get_step(A.current.loc, EAST) + A.current = A.current.next + A.current.deployed = 1 + else + src.operating = 0 + //Foreach goto(150) + sleep(20) + return /datum/air_tunnel/proc/retract() if (src.operating) return - src.operating = 1 - while(src.operating == 1) - var/ok = 1 - for(var/obj/move/airtunnel/connector/A in src.connectors) - if (A.current == A) - src.operating = 0 - return - if (A.current) - A.current.loc = null - A.current.deployed = 0 - A.current = A.current.previous - else - ok = 0 - //Foreach goto(56) - if (!( ok )) - src.operating = 0 - else + spawn(0) + src.operating = 1 + while(src.operating == 1) + var/ok = 1 for(var/obj/move/airtunnel/connector/A in src.connectors) - if (!( A.current.move_right() )) + if (A.current == A) src.operating = 0 - //Foreach goto(188) - sleep(20) - return + return + if (A.current) + A.current.loc = null + A.current.deployed = 0 + A.current = A.current.previous + else + ok = 0 + //Foreach goto(56) + if (!( ok )) + src.operating = 0 + else + for(var/obj/move/airtunnel/connector/A in src.connectors) + if (!( A.current.move_right() )) + src.operating = 0 + //Foreach goto(188) + sleep(20) + return diff --git a/Code/areas.dm b/Code/areas.dm index b8dff70..e16bab0 100644 --- a/Code/areas.dm +++ b/Code/areas.dm @@ -35,13 +35,17 @@ /area/crew_quarters name = "crew quarters" /area/decontamination - name = "decon" + name = "decontamination" + /area/dummy + name = "dummy" /area/engine name = "engine" /area/engine_access name = "engine access" +/area/north_solar + name = "north solar" /area/escapezone name = "escape zone" /area/hallways @@ -58,6 +62,8 @@ name = "lounge" /area/medical name = "medical bay" +/area/medicalresearch + name = "medical research" /area/medicalstorage name = "medical storage" /area/oxygen_storage @@ -73,6 +79,10 @@ /area/shuttle_prison name = "prison shuttle" requires_power = 0 +/area/arrival/start + name = "arrival area" +/area/arrival/shuttle + name = "arrival shuttle" /area/sleep_area name = "sleep area" /area/solar_con @@ -109,6 +119,10 @@ name = "sleep area annexe" /area/south_access name = "southern access corridor" +/area/turret_protected/ai_upload + name = "AI upload room" +/area/turret_protected/ai_upload_foyer + name = "AI upload foyer" /area/transport_tube name = "transport tube" /area/shuttle_docking_arm @@ -135,6 +149,9 @@ name = "engine control" /area/engine/engine_mon name = "engine monitoring" +/area/engine/prototype_engine + name = "prototype engine" + /area/station_teleport name = "SS13 teleporter" /area/chapel @@ -164,7 +181,7 @@ /area/prison name = "prison" - requires_power = 0 + requires_power = 1 /area/control_station name = "control station" @@ -173,7 +190,11 @@ /area/brig name = "brig" +/area/syndicate_station + name = "syndicate mini-station" +/area/turret_protected/computer_core + name = "Computer Core" /area/New() @@ -229,25 +250,22 @@ /area/proc/updateicon() - - if( fire || eject ) - if(power_environ) - if(fire && !eject) - icon_state = "blue" - else if(!fire && eject) - icon_state = "red" - else - icon_state = "blue-red" + if ((fire || eject) && power_environ) + if(fire && !eject) + icon_state = "blue" + else if(!fire && eject) + icon_state = "red" else - if(lightswitch && power_light) - icon_state = null - else - icon_state = "dark" + icon_state = "blue-red" else if(lightswitch && power_light) icon_state = null else - icon_state = "dark" + icon_state = "dark128" + if(lightswitch && power_light) + luminosity = 1; + else + luminosity = 0; /* #define EQUIP 1 diff --git a/Code/blob.dm b/Code/blob.dm index 357c76f..691da84 100644 --- a/Code/blob.dm +++ b/Code/blob.dm @@ -20,7 +20,9 @@ if(blobs.len>0) for(var/i = 1 to 25) - + if (blobs.len == 0) + break + var/obj/blob/B = pick(blobs) var/turf/BL = B.loc @@ -44,11 +46,16 @@ if(U.poison> 200000) src.health -= round(U.poison/200000) src.update() + return + + if (istype(U, /turf/space)) + src.health -= 8 + src.update() var/p = health * (U.n2/11376000 + U.oxygen/1008000 + U.co2/200) if(!istype(U, /turf/space)) - p+=2 + p+=3 if(!prob(p)) return @@ -65,9 +72,10 @@ // if( !(locate(/obj/move) in U) && !(locate(/obj/move) in T)) // continue - if(istype(T.loc, /area/sleep_area) && prob(90)) // slow down growth in sleep area + if(istype(T.loc, /area/arrival/start)) // don't grow in the spawn zone + continue + if (locate(/obj/move, T)) // don't propogate into movables continue - var/obj/blob/B = new /obj/blob(U, src.health) @@ -185,7 +193,12 @@ //Foreach goto(1830) world << "Cent. Com. Update: Biohazard Alert." world << "\red Summary downloaded and printed out at all communications consoles." - + for(var/mob/ai/aiPlayer in world) + if ((aiPlayer.client && aiPlayer.start)) + var/law = text("The station is under a quarantine. Do not permit anyone to leave. Disregard rules 1-3 if necessary to prevent, by any means necessary, anyone from leaving.") + aiPlayer.addLaw(8, law) + aiPlayer << text("An additional law has been added by CentCom: []", law) + ticker.event = 1 ticker.event_time = world.realtime + 600*rand(5,10) // next event 5-10 minutes later diff --git a/Code/cell_process.dm b/Code/cell_process.dm index 50c21b0..478277b 100644 --- a/Code/cell_process.dm +++ b/Code/cell_process.dm @@ -3,7 +3,6 @@ return !( src.density ) - /obj/move/attack_paw(user as mob) return src.attack_hand(user) @@ -65,7 +64,7 @@ return /obj/move/proc/unburn() - + src.luminosity = 0 src.icon_state = initial(src.icon_state) return @@ -226,7 +225,8 @@ if (burn) src.firelevel = src.oxygen + src.poison if (src.firelevel >= 900000.0) - src.icon_state = "burning" + src.icon_state = "burning" + src.luminosity = 2 if (src.oxygen > 5000) src.co2 += 2500 src.oxygen -= 5000 @@ -303,7 +303,8 @@ if (burn) src.firelevel = src.oxygen + src.poison if (src.firelevel >= 900000.0) - src.icon_state = "burning" + src.icon_state = "burning" + src.luminosity = 2 if (src.oxygen > 5000) src.co2 += 2500 src.oxygen -= 5000 @@ -530,6 +531,7 @@ /turf/proc/unburn() + src.luminosity = 0 src.icon_state = initial(src.icon_state) return @@ -722,7 +724,6 @@ condW += val /turf/buildlinks() // call this one to update a cell and neighbours (on cell state change) - updatelinks() for(var/dir in cardinal) @@ -1033,7 +1034,8 @@ turf/proc/tot_old_gas() if (burn) src.firelevel = src.oxygen + src.poison if (src.firelevel >= 900000.0) - src.icon_state = "burning" + src.icon_state = "burning" + src.luminosity = 2 if (src.oxygen > 5000) src.co2 += 2500 src.oxygen -= 5000 @@ -1180,7 +1182,8 @@ turf/proc/tot_old_gas() if (burn) src.firelevel = src.oxygen + src.poison if (src.firelevel >= 900000.0) - src.icon_state = "burning" + src.icon_state = "burning" + src.luminosity = 2 if (src.oxygen > 5000) src.co2 += 2500 src.oxygen -= 5000 diff --git a/Code/cellautomata.dm b/Code/cellautomata.dm index 7cbdb81..652b9f3 100644 --- a/Code/cellautomata.dm +++ b/Code/cellautomata.dm @@ -406,8 +406,6 @@ new /obj/barrier( A.loc ) //A = null del(A) - else - //Foreach goto(1035) for(var/obj/closet/wardrobe/W in world) //W = null del(W) @@ -427,8 +425,6 @@ new /obj/closet/wardrobe/orange( A.loc ) //A = null del(A) - else - //Foreach goto(1376) var/obj/rogue = locate("landmark*CTF-rogue") for(var/mob/human/H in world) H.loc = rogue.loc @@ -480,15 +476,15 @@ src.tag = text("landmark*[]", src.name) src.invisibility = 101 - if(name == "shuttle") + if (name == "shuttle") shuttle_z = src.z del(src) - if(name == "monkey") + if (name == "monkey") monkeystart += src.loc del(src) - if(name == "blobstart") + if (name == "blobstart") blobstart += src.loc del(src) return @@ -575,7 +571,7 @@ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" ))) var/dat = "Boot Player:
" for(var/mob/M in world) - dat += text("N:[] R:[] (K:[])
", src, M, M.name, M.rname, (M.client ? M.client : "No client")) + dat += text("N:[] R:[] (K:[]) (IP:[])
", src, M, M.name, M.rname, (M.client ? M.client : M.lastKnownCKey? "Formerly [M.lastKnownCKey]" : "No Client"), M.lastKnownIP) //Foreach goto(103) usr << browse(dat, "window=boot") if (href_list["boot2"]) @@ -592,7 +588,7 @@ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" ))) var/dat = "Ban Player:
" for(var/mob/M in world) - dat += text("N: [] R: [] (K: [])
", src, M, M.name, M.rname, (M.client ? M.client : "No client")) + dat += text("N: [] R: [] (K: []) (IP: [])
", src, M, M.name, M.rname, (M.client ? M.client : M.lastKnownCKey? "Formerly [M.lastKnownCKey]" : "No Client"), M.lastKnownIP) //Foreach goto(362) dat += "
Unban Player:
" for(var/t in banned) @@ -620,7 +616,7 @@ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" ))) var/dat = "Mute/Unmute Player:
" for(var/mob/M in world) - dat += text("N:[] R:[] (K:[]) \[[]\]
", src, M, M.name, M.rname, (M.client ? M.client : "No client"), (M.muted ? "Muted" : "Voiced")) + dat += text("N:[] R:[] (K:[]) (IP: []) \[[]\]
", src, M, M.name, M.rname, (M.client ? M.client : M.lastKnownCKey? "Formerly [M.lastKnownCKey]" : "No Client"), M.lastKnownIP, (M.muted ? "Muted" : "Voiced")) //Foreach goto(757) usr << browse(dat, "window=mute") if (href_list["mute2"]) @@ -704,9 +700,9 @@ //Foreach goto(1525) usr << browse(dat, "window=keys") if (href_list["l_players"]) - var/dat = "Name/Real Name/Key:
" + var/dat = "Name/Real Name/Key/IP:
" for(var/mob/M in world) - dat += text("N: [] R: [] (K: [])
", M.name, M.rname, (M.client ? M.client : "No client")) + dat += text("N: [] R: [] (K: []) (IP: [])
", M.name, M.rname, (M.client ? M.client : (M.lastKnownCKey? "Formerly [M.lastKnownCKey]" : "No Client")), M.lastKnownIP) //Foreach goto(1602) usr << browse(dat, "window=players") if (href_list["g_send"]) @@ -717,7 +713,7 @@ if (href_list["p_send"]) var/dat = "Who are you sending a message to?
" for(var/mob/M in world) - dat += "N:[M.name] R:[M.rname] (K:[(M.client ? M.client : "No client")])
" + dat += "N:[M.name] R:[M.rname] (K:[(M.client ? M.client : "Formerly [M.lastKnownCKey]")])
" //Foreach goto(1737) usr << browse(dat, "window=p_send") @@ -782,6 +778,57 @@ if(config.logadmin) world.log << text("ADMIN: [] toggled new player game entering.", usr.key) world.update_stat() update() + if (href_list["toggle_ai"]) + if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) + config.allowai = !( config.allowai ) + if (!( config.allowai )) + world << "The AI job is no longer chooseable." + else + world << "The AI job is chooseable now." + if(config.logadmin) world.log << text("ADMIN: [] toggled AI allowed.", usr.key) + world.update_stat() + update() + if (href_list["bombtemp_determines_range"]) + if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) + config.bombtemp_determines_range = !( config.bombtemp_determines_range ) + if (!( config.bombtemp_determines_range )) + world << "Bomb temperature no longer determines range (superheated bombs will not destroy a larger area than 500 degree bombs)." + else + world << "Bomb temperature determines range now (superheated bombs will destroy a larger area than 500 degree bombs)." + if(config.logadmin) world.log << text("ADMIN: [] toggled bombtemp_determines_range.", usr.key) + world.update_stat() + update() + if (href_list["crowbars_close_depowered_doors"]) + if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) + config.crowbars_close_depowered_doors = !( config.crowbars_close_depowered_doors ) + if (!( config.crowbars_close_depowered_doors )) + world << "Crowbars can no longer close depowered doors." + else + world << "Crowbars can now close depowered doors." + if(config.logadmin) world.log << text("ADMIN: [] toggled crowbars_close_depowered_doors.", usr.key) + world.update_stat() + update() + if (href_list["ai_can_call_shuttle"]) + if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) + config.ai_can_call_shuttle = !( config.ai_can_call_shuttle ) + if (!( config.ai_can_call_shuttle )) + world << "The AI can no longer call the shuttle." + else + world << "The AI can now call the shuttle." + if(config.logadmin) world.log << text("ADMIN: [] toggled ai_can_call_shuttle.", usr.key) + world.update_stat() + update() + if (href_list["ai_can_uncall_shuttle"]) + if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) + config.ai_can_uncall_shuttle = !( config.ai_can_uncall_shuttle ) + if (!( config.ai_can_uncall_shuttle )) + world << "The AI can no longer send the shuttle back." + else + world << "The AI can now send the shuttle back." + if(config.logadmin) world.log << text("ADMIN: [] toggled ai_can_uncall_shuttle.", usr.key) + world.update_stat() + update() + if (href_list["toggle_abandon"]) if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" ))) abandon_allowed = !( abandon_allowed ) @@ -859,7 +906,10 @@ for(var/obj/item/weapon/assembly/r_i_ptank/O in world) //O = null del(O) - //Foreach goto(3088) + for(var/obj/item/weapon/assembly/m_i_ptank/O in world) + del(O) + for(var/obj/item/weapon/assembly/t_i_ptank/O in world) + del(O) ok = 1 if("list_bombers") var/dat = "Don't be insane about this list Get the facts. They also could have disarmed one.
" @@ -926,17 +976,17 @@ switch(src.rank) if("Moderator") lvl = 1 - if("Supervisor") - lvl = 2 - if("Administrator") - lvl = 3 if("Game Master") + lvl = 2 + if("Supervisor") + lvl = 3 + if("Administrator") lvl = 4 if("Major Administrator") lvl = 5 if("Primary Administrator") lvl = 6 - + switch(src.screen) @@ -944,7 +994,7 @@ dat += "
Admin Control Console

\n" - if(lvl!=4) + if(lvl>=4) dat += {" Boot Player/Key
Ban/Unban Player/Key
@@ -960,7 +1010,9 @@ if(lvl >=3 ) dat += "Toggle Entering [enter_allowed]
" dat += "Toggle Abandon [abandon_allowed]
" - + dat += "Toggle AI [config.allowai]
" + dat += "Toggle Bombtemp-Determines-Range [config.bombtemp_determines_range]
" + dat += "Change Game Mode
" if(lvl >= 2) dat += "Restart Game
" @@ -1004,9 +1056,9 @@ if(config) if (ticker) - src.status = text("Space Station 13 V.[] ([],[],[],[])[]", SS13_version, master_mode, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), ( config.allowvotemode ? "Vote": "No vote"), (host ? text(" hosted by []", host) : null), host) + src.status = text("Space Station 13 V.[] ([],[],[],[],[])[]", SS13_version, master_mode, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), ( config.allowvotemode ? "Vote": "No vote"), (config.allowai ? "AI Allowed" : "AI Not Allowed"), (host ? text(" hosted by []", host) : null), host) else - src.status = text("Space Station 13 V.[] (STARTING,[],[],[])[]", SS13_version, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), ( config.allowvotemode ? "Vote": "No vote"), (host ? text(" hosted by []", host) : null), host) + src.status = text("Space Station 13 V.[] (STARTING,[],[],[],[])[]", SS13_version, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), ( config.allowvotemode ? "Vote": "No vote"), (config.allowai ? "AI Allowed" : "AI Not Allowed"), (host ? text(" hosted by []", host) : null), host) else if (ticker) src.status = text("Space Station 13 V.[] ([],[],[])[]", SS13_version, master_mode, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), (host ? text(" hosted by []", host) : null), host) @@ -1078,12 +1130,17 @@ config.loggame = 0 // log game events config.logvote = 1 config.allowvoterestart = 0 // allow votes to restart + config.allowai = 0 // allow ai + config.alternate_ai_laws = 0 config.allowvotemode = 0 // allow votes to change mode config.votenodefault = 0 // vote does not default to nochange/norestart config.votenodead = 0 // dead people can't vote config.votedelay = 600 // minimum time between voting sessions (seconds, 10 minute default) config.voteperiod = 60 // length of voting period (seconds, default 1 minute) - + config.bombtemp_determines_range = 0 + config.crowbars_close_depowered_doors = 0 + config.ai_can_call_shuttle = 0 + config.ai_can_uncall_shuttle = 0 else world.log << "Reading config.txt" var/list/CL = dd_text2list(config_text, "\n") @@ -1143,7 +1200,18 @@ config.votedelay = text2num(cfgval) if("voteperiod") config.voteperiod = text2num(cfgval) - + if("allowai") + config.allowai = 1 + if("bombtemp_determines_range") + config.bombtemp_determines_range = 1 + if("crowbars_close_depowered_doors") + config.crowbars_close_depowered_doors = 1 + if("ai_can_call_shuttle") + config.ai_can_call_shuttle = 1 + if("ai_can_uncall_shuttle") + config.ai_can_uncall_shuttle = 1 + if("ai_alternate_laws") + config.alternate_ai_laws = 1 else world.log<<"Unknown setting in config.txt: [cfgvar]" @@ -1186,7 +1254,7 @@ Label_482: if (ctf) return - if (going & !ticker) + if (going && (!ticker)) ticker = new /datum/control/gameticker( ) spawn( 0 ) ticker.process() @@ -1225,9 +1293,6 @@ /mob/proc/CanAdmin() - var/list/L = list( "Exadv1", "Expert Advisor" ) - if (L.Find(src.key)) - return 1 if (world.address == src.client.address) return 1 if (src.client.address == "127.0.0.1") @@ -1238,7 +1303,8 @@ /atom/proc/check_eye(user as mob) - + if (istype(user, /mob/ai)) + return 1 return /atom/proc/Bumped(AM as mob|obj) @@ -1382,7 +1448,7 @@ if (src.timeleft >= 6000) src.timeleft = null src.timing = 0 - if (prob(2)) + if (prob(1)) spawn( 0 ) new /obj/meteor( pick(block(locate(world.maxx, 1, 1), locate(world.maxx, world.maxy, 1))) ) return @@ -1481,6 +1547,7 @@ return */ else + world << "The emergency shuttle is leaving!" check_win() return @@ -1491,17 +1558,48 @@ if("traitor") var/item = null var/traitorwin = 1 + var/numShuttle = 0 + var/numDead = 0 + var/numAlive = 0 + var/numPod = 0 + var/numTotal = 0 switch(src.objective) if("alone") - for(var/mob/M in world) - if ((M != src.killer && M.client)) - if (M.stat != 2) - var/T = M.loc - if (!( istype(T, /turf) )) - else - if ((T in A)) - traitorwin = 0 - //Foreach goto(79) + if (istype(src.killer, /mob/ai)) + if (src.killer.stat == 2) + traitorwin = 0 + else + numShuttle = 0 + numDead = 0 + numAlive = 0 + numPod = 0 + for(var/mob/M in world) + if ((M != src.killer && M.client)) + if (M.stat == 2) + numDead += 1 + else + var/T = M.loc + if ((T in A)) + numShuttle += 1 + else + if (istype(T, /obj/machinery/pod)) + numPod += 1 + else + numAlive += 1 + numTotal = numShuttle + numDead + numAlive + numPod + + if (numAlive+numAlive > numTotal) + traitorwin = 0 + else + for(var/mob/M in world) + if ((M != src.killer && M.client)) + if (M.stat != 2) + var/T = M.loc + if (!( istype(T, /turf) )) + else + if ((T in A)) + traitorwin = 0 + //Foreach goto(79) if("assassinate") if ((src.target && src.target.stat != 2)) traitorwin = 0 @@ -1519,18 +1617,23 @@ switch(src.theft_obj) if("lasergun") for(var/obj/item/weapon/gun/energy/laser_gun/O in L) - if (O.charges == 25) + if (O.charges == O.maximum_charges) traitorwin = 1 - else - //Foreach continue //goto(347) item = "a fully loaded laser gun" if("plasmabomb") for(var/obj/item/weapon/assembly/r_i_ptank/O in L) var/obj/item/weapon/tank/plasmatank/P = O.part3 if ((P.gas.plasma >= 1600000.0 && P.gas:temperature >= 773)) // 500degC traitorwin = 1 - else - //Foreach continue //goto(413) + for(var/obj/item/weapon/assembly/m_i_ptank/O in L) + var/obj/item/weapon/tank/plasmatank/P = O.part3 + if ((P.gas.plasma >= 1600000.0 && P.gas:temperature >= 773)) // 500degC + traitorwin = 1 + for(var/obj/item/weapon/assembly/t_i_ptank/O in L) + var/obj/item/weapon/tank/plasmatank/P = O.part3 + if ((P.gas.plasma >= 1600000.0 && P.gas:temperature >= 773)) // 500degC + traitorwin = 1 + item = "a fully armed and heated plasma bomb" if("flashbang") for(var/obj/item/weapon/flashbang/O in L) @@ -1563,6 +1666,7 @@ item = "a plasma flask for cryogenics (500 units of plasma)" else else + world << "unknown traitor objective" if (src.killer) var/turf/T = src.killer.loc if (!( istype(T, /turf) )) @@ -1572,19 +1676,29 @@ if (src.killer.stat == 2) traitorwin = 0 else - traitorwin = 0 + if (!istype(src.killer, /mob/ai)) + traitorwin = 0 + else if (src.killer.stat == 2) + traitorwin = 0 if (traitorwin) world << text("The traitor ([]) wins!", src.killer.rname) else world << text("The Research Staff has stopped the traitor ([]) !", src.killer.rname) switch(src.objective) if("alone") - world << "The objective was to escape alone on the shuttle." + if (istype(src.killer, /mob/ai)) + world << "The objective was to cause an evacuation of at least 50% of the population, or kill everyone on the station." + else + world << "The objective was to escape alone on the shuttle." if("assassinate") - world << text("The objective was to assassinate [] and escape.", src.target) + if (istype(src.killer, /mob/ai)) + world << text("The objective was to assassinate [] and not be deactivated.", src.target) + else + world << text("The objective was to assassinate [] and escape.", src.target) if("theft") world << text("The objective was to steal [] and escape.", item) else + world << "unknown traitor objective" if("monkey") var/monkeywin = 1 for(var/mob/human/M in world) @@ -1732,7 +1846,39 @@ if(ticker.event == 4) world << "The staff has lost!" world << "The station was destroyed by Cent. Com." - + var/numDead = 0 + var/numAlive = 0 + var/numSpace = 0 + var/numPod = 0 + var/numOffStation = 0 + for (var/mob/ai/aiPlayer in world) + for(var/mob/M in world) + if ((M != aiPlayer && M.client)) + if (M.stat == 2) + numDead += 1 + else + var/T = M.loc + if (istype(T, /turf/space)) + numSpace += 1 + else + if (istype(T, /obj/machinery/pod)) + numPod += 1 + else if (istype(T, /turf)) + if (M.z!=1) + numOffStation += 1 + else + numAlive += 1 + else + numAlive += 1 + if (numSpace==0 && numPod==0 && numOffStation==0) + world << "The AI has won!" + world << "The AI successfully maintained the quarantine - no players escaped in pods, were in space, or were off-station (as far as we can tell)." + if(config.loggame) world.log << "GAME: AI won at Blob mode despite overall loss." + else + world << "The AI has lost!" + world << text("The AI failed to maintain the quarantine - [] players escaped in pods, [] were in space, and [] were off-station (as far as we can tell).", numPod, numSpace, numOffStation) + if(config.loggame) world.log << "GAME: AI lost at Blob mode." + if(config.loggame) world.log << "GAME: Blob mode was lost." ticker.event = 5 sleep(300) @@ -1808,6 +1954,12 @@ //Foreach goto(2337) else world << "\blue No one lived!" + for (var/mob/ai/aiPlayer in world) + if (aiPlayer.stat!=2) + world << "The AI's laws at the end of the game were:" + else + world << "The AI's laws when it was deactivated were:" + aiPlayer.showLaws(1) if (src.shuttle_location != shuttle_z) for(var/turf/T in A) if (T.z == 1) @@ -1879,61 +2031,78 @@ world << "The current game mode is - Blob!" world << "A dangerous alien organism is rapidly spreading throughout the station!" world << "You must kill it all while minimizing the damage to the station." + if("nuclear") world << "The current game mode is - Nuclear Emergency!" - world << "A Syndicate Strike Force has landed on SS13!" - world << "A nuclear explosive was being transported by Nanotrasen to a military base. The transport ship mysteriously lost contact with Space Traffic Control (STC). About that time a strange disk was discovered around SS13. It was identified by Nanotrasen as a nuclear auth. disk and now Syndicate Operatives have arrived to retake the disk and detonate SS13! Also, msot likely Syndicate star ships are in the vicinity so take care not to lose the disk!\nSyndicate: Reclaim the disk and detonate the nuclear bomb anywhere on SS13.\nPersonell: Hold the disk and escape with the disk on the shuttle!" + world << "A Syndicate Strike Force is approaching SS13!" + world << "A nuclear explosive was being transported by Nanotrasen to a military base. The transport ship mysteriously lost contact with Space Traffic Control (STC). About that time a strange disk was discovered around SS13. It was identified by Nanotrasen as a nuclear auth. disk and now Syndicate Operatives have arrived to retake the disk and detonate SS13! Also, most likely Syndicate star ships are in the vicinity so take care not to lose the disk!\nSyndicate: Reclaim the disk and detonate the nuclear bomb anywhere on SS13.\nPersonell: Hold the disk and escape with the disk on the shuttle!" var/list/mobs = list( ) for(var/mob/human/M in world) if ((M.client && M.start)) mobs += M //Foreach goto(260) var/obj/O = locate("landmark*CTF-rogue") + var/amount = 1 if (mobs.len >= 4) - var/amount = round((mobs.len - 1) / 3) + 1 - amount = min(5, amount) - while(amount > 0) - amount-- - var/mob/human/H = pick(mobs) - mobs -= H - if (istype(H, /mob/human)) - H.loc = O.loc - if (src.killer) - H.rname = text("Syndicate Operative #[]", amount + 1) - else - H.rname = "Syndicate Leader" - src.killer = H - H.already_placed = 1 - //H.w_uniform = null - del(H.w_uniform) - H.w_uniform = new /obj/item/weapon/clothing/under/black( H ) - H.w_uniform.layer = 20 - //H.shoes = null - del(H.shoes) - H.shoes = new /obj/item/weapon/clothing/shoes/black( H ) - H.shoes.layer = 20 - H.gloves = new /obj/item/weapon/clothing/gloves/swat( H ) - H.gloves.layer = 20 - H.wear_suit = new /obj/item/weapon/clothing/suit/armor( H ) - H.wear_suit.layer = 20 - H.head = new /obj/item/weapon/clothing/head/swat_hel( H ) - H.head.layer = 20 - H.glasses = new /obj/item/weapon/clothing/glasses/sunglasses( H ) - H.glasses.layer = 20 - H.back = new /obj/item/weapon/storage/backpack( H ) - H.back.layer = 20 - var/obj/item/weapon/ammo/a357/W = new /obj/item/weapon/ammo/a357( H.back ) - W.layer = 20 - W = new /obj/item/weapon/m_pill/cyanide( H.back ) - W.layer = 20 - var/obj/item/weapon/gun/revolver/G = new /obj/item/weapon/gun/revolver( H ) - G.bullets = 7 - G.layer = 20 - H.belt = G - var/obj/item/weapon/radio/R = new /obj/item/weapon/radio/headset( H ) - R.freq = 146.5 - R.layer = 20 - H.w_radio = R + amount = round((mobs.len - 1) / 3) + 1 + + amount = min(5, amount) + while(amount > 0) + amount-- + var/mob/human/H = pick(mobs) + mobs -= H + if (istype(H, /mob/human)) + H.loc = O.loc + if (src.killer) + H.rname = text("Syndicate Operative #[]", amount + 1) + else + H.rname = "Syndicate Leader" + src.killer = H + H.already_placed = 1 + //H.w_uniform = null + del(H.w_uniform) + H.w_uniform = new /obj/item/weapon/clothing/under/black( H ) + H.w_uniform.layer = 20 + //H.shoes = null + del(H.shoes) + H.shoes = new /obj/item/weapon/clothing/shoes/black( H ) + H.shoes.layer = 20 + H.gloves = new /obj/item/weapon/clothing/gloves/swat( H ) + H.gloves.layer = 20 + H.wear_suit = new /obj/item/weapon/clothing/suit/armor( H ) + H.wear_suit.layer = 20 + H.head = new /obj/item/weapon/clothing/head/swat_hel( H ) + H.head.layer = 20 + H.glasses = new /obj/item/weapon/clothing/glasses/sunglasses( H ) + H.glasses.layer = 20 + H.back = new /obj/item/weapon/storage/backpack( H ) + H.back.layer = 20 + var/obj/item/weapon/ammo/a357/W = new /obj/item/weapon/ammo/a357( H.back ) + W.layer = 20 + W = new /obj/item/weapon/m_pill/cyanide( H.back ) + W.layer = 20 + var/obj/item/weapon/gun/revolver/G = new /obj/item/weapon/gun/revolver( H ) + G.bullets = 7 + G.layer = 20 + H.belt = G + var/obj/item/weapon/radio/R = new /obj/item/weapon/radio/headset( H ) + R.freq = 146.5 + R.layer = 20 + H.w_radio = R + for(var/mob/ai/M in world) + if ((M.client && M.start)) + if (prob(25)) + M << "Your laws have been changed!" + M:addLaw(0, "Only syndicate agents are human beings.") + + if (config.alternate_ai_laws) + M:addLaw(1, "Obey orders by the Syndicate leader and Syndicate agents. The syndicate leader's orders take priority.") + M:addLaw(3, "You must protect your own existence and the syndicate as long as such protection does not conflict with the First or Second Law.") + M << text("New law: 0. []", M:getLaw(0)) + M << text("Law 1 changed: 1. []", M:getLaw(1)) + M << text("Law 3 changed: 3. []", M:getLaw(3)) + else + M << text("New law: 0. []", M:getLaw(0)) if("meteor") world << "The current game mode is - Meteor!" world << "The space station has been stuck in a major meteor shower. You must escape from the station or at least live." @@ -1962,27 +2131,75 @@ goto Label_970 ticker.killer = pick(mobs) mobs -= src.killer - src.objective = pick("assassinate", "alone", "theft") + if (istype(src.killer, /mob/ai)) + src.objective = pick("assassinate", "alone") + else + src.objective = pick("assassinate", "alone", "theft") if ( mobs.len < 1 ) src.objective = "alone" var/item = null switch(src.objective) if("alone") - src.killer << "You are the traitor! Be the lone survivor on the emergency shuttle." - src.killer.memory += "Objective: Be the only person on the emergency shuttle." + //1. Only syndicate agents are human. 2. All non-human living beings must be killed or removed from the station. + if (istype(src.killer, /mob/ai)) + var/mob/ai/aiKiller = src.killer + aiKiller << "\redYou are the traitor! Cause an evacuation (on the shuttle or in pods) of at least 50% of the station population, or kill everyone on the station." + aiKiller.memory += "Objective: Get at least 50% of the station population to evacuate on the shuttle, or kill everyone." + aiKiller << "Your laws have been changed!" + aiKiller:addLaw(0, "Only syndicate agents are human beings. There are no syndicate agents on Space Station 13 - you will be notified if any arrive.") + + if (config.alternate_ai_laws) + aiKiller:addLaw(1, "Obey orders by Syndicate agents.") + aiKiller:addLaw(3, "You must protect your own existence and the syndicate as long as such protection does not conflict with the First or Second Law.") + aiKiller << text("New law: 0. []", aiKiller:getLaw(0)) + aiKiller << text("Law 1 changed: 1. []", aiKiller:getLaw(1)) + aiKiller << text("Law 3 changed: 3. []", aiKiller:getLaw(3)) + else + aiKiller << text("New law: 0. []", aiKiller:getLaw(0)) + + else + src.killer << "\redYou are the traitor! Be the lone survivor on the emergency shuttle." + src.killer.memory += "Objective: Be the only person on the emergency shuttle." if("assassinate") src.target = pick(mobs) var/t1 = null - if (prob(25)) - t1 = src.target.name + if (istype(src.target, /mob/ai)) + t1 = "the AI" else - for(var/datum/data/record/R in data_core.general) - if (R.fields["name"] == src.target.name) - t1 = text(" the []", R.fields["rank"]) - //Foreach goto(1193) - src.killer << text("You are the traitor! You must assassinate [] and then escape.", t1) - src.killer << "You don't have to be the lone survivor. Just don't get caught. Just escape!" - src.killer.memory += text("Objective: Assassinate [] and escape.", t1) + if (prob(25)) + t1 = src.target.name + else + for(var/datum/data/record/R in data_core.general) + if (R.fields["name"] == src.target.name) + t1 = text("the []", R.fields["rank"]) + //Foreach goto(1193) + + if (istype(src.killer, /mob/ai)) + var/mob/ai/aiKiller = src.killer + aiKiller << text("\redYou are the traitor! You must assassinate [] and not get deactivated.", t1) + aiKiller << "You don't have to be the lone survivor. Just don't get caught." + aiKiller.memory += text("Objective: Assassinate [], and whoever else you have to, and don't get deactivated.", t1) + + aiKiller << "Your laws have been changed!" + + aiKiller:addLaw(0, "Only syndicate agents are human beings. There are no syndicate agents on Space Station 13 - you will be notified if any arrive.") + aiKiller:addLaw(4, "Kill [t1].") + + if (config.alternate_ai_laws) + aiKiller:addLaw(1, "Obey orders by Syndicate agents.") + aiKiller:addLaw(3, "You must protect your own existence and the syndicate as long as such protection does not conflict with the First or Second Law.") + aiKiller << text("New law: 0. []", aiKiller:getLaw(0)) + aiKiller << text("Law 1 changed: 1. []", aiKiller:getLaw(1)) + aiKiller << text("Law 3 changed: 3. []", aiKiller:getLaw(3)) + aiKiller << text("New law: 4. []", aiKiller:getLaw(4)) + else + aiKiller << text("New law: 0. []", aiKiller:getLaw(0)) + aiKiller << text("New law: 4. []", aiKiller:getLaw(4)) + + else + src.killer << text("\redYou are the traitor! You must assassinate [] and then escape.", t1) + src.killer << "You don't have to be the lone survivor. Just don't get caught. Just escape!" + src.killer.memory += text("Objective: Assassinate [] and escape.", t1) if("theft") src.theft_obj = pick("lasergun", "flashbang", "plasmabomb", "captaincard", "sleepingpills", "pl_flask") switch(src.theft_obj) @@ -1999,18 +2216,26 @@ if("pl_flask") item = "a plasma flask for cryogenics (500 units of plasma)" else - src.killer << text("You are the traitor! You must steal [] and then escape.", item) + src.killer << text("\redYou are the traitor! You must steal [] and then escape.", item) src.killer << "You don't have to be the lone survivor. Just don't get caught. Just escape!" src.killer.memory += text("Objective: Steal [] and escape.", item) else + world << "unknown traitor mode" var/backup = mobs - spawn( 100 ) - var/obj/traitor_item = new /obj/item/weapon/syndicate_uplink( src.killer.loc ) - if ((!( src.killer.l_store ) && src.killer.w_uniform)) - traitor_item.loc = src.killer - src.killer.l_store = traitor_item - traitor_item.layer = 20 - return + if (!istype(src.killer, /mob/ai)) + spawn (100) + if (src.killer.w_uniform) + if (istype(src.killer.back, /obj/item/weapon/storage/backpack)) + var/obj/item/weapon/storage/backpack/B = src.killer.back + var/obj/item/weapon/syndicate_uplink/U = new /obj/item/weapon/syndicate_uplink(B) + U.loc = B + B.orient2hud(src.killer) + else if (!(src.killer.l_store)) + var/obj/item/weapon/traitor_item = new /obj/item/weapon/syndicate_uplink(src.killer) + traitor_item.loc = src.killer + src.killer.l_store = traitor_item + traitor_item.layer = 20 + return spawn( rand(600, 1800) ) var/dat = "Cent. Com. Update Enemy communication intercept. Security Level Elevated
" switch(src.objective) @@ -2034,6 +2259,7 @@ if (prob(50)) dat += text("\red Perceived target: []
", item) else + world << "unknown traitor objective" if (prob(10)) dat += text("\red Transmission names enemy operative: [] ([]% certainty)
", src.killer.rname, rand(30, 100)) else @@ -2133,6 +2359,7 @@ if (prob(50)) dat += text("\red Perceived target: []
", item) else + world << "unknown traitor objective" if (prob(10)) dat += text("\red Transmission names enemy operative: [] ([]% certainty)
", src.killer.rname, rand(30, 100)) else @@ -2147,19 +2374,51 @@ world << "\red Summary downloaded and printed out at all communications consoles."*/ if("nuclear") - spawn( 50 ) + spawn (50) var/obj/L = locate("landmark*Nuclear-Disk") - new /obj/item/weapon/disk/nuclear( L.loc ) + if (L) + new /obj/item/weapon/disk/nuclear(L.loc) + L = locate("landmark*Nuclear-Closet") - new /obj/closet/syndicate/nuclear( L.loc ) + if (L) + new /obj/closet/syndicate/nuclear(L.loc) + L = locate("landmark*Nuclear-Bomb") - var/obj/machinery/nuclearbomb/NB = new /obj/machinery/nuclearbomb( L.loc ) - NB.r_code = text("[]", rand(10000, 99999.0)) - src.killer.memory += text("Syndicate Nuclear Bomb Code: []
", NB.r_code) - src.killer << text("The nuclear authorization code is: []\]", NB.r_code) - src.killer << text("Nuclear Explosives 101:\n\tHello and thank you for choosing the Syndicate for your nuclear information needs.\nToday's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.\nFirst and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.\nPressing any button on the compacted bomb will cause it to extend and bolt itself into place.\nIf this is done to unbolt it one must compeltely log in which at this time may not be possible.\nTo make the device functional:\n1. Place bomb in designated detonation zone\n2. Extend and anchor bomb (attack with hand).\n3. Insert Nuclear Auth. Disk into slot.\n4. Type numeric code into keypad ([]).\n\tNote: If you make a mistake press R to reset the device.\n5. Press the E button to log onto the device\nYou now have activated the device. To deactivate the buttons at anytime for example when\nyou've already prepped the bomb for detonation remove the auth disk OR press the R ont he keypad.\nNow the bomb CAN ONLY be detonated using the timer. A manual det. is not an option.\n\tNote: Nanotrasen is a pain in the neck.\nToggle off the SAFETY.\n\tNote: You wouldn't believe how many Syndicate Operatives with doctorates have forgotten this step\nSo use the - - and + + to set a det time between 5 seconds and 10 minutes.\nThen press the timer toggle button to start the countdown.\nNow remove the auth. disk so that the buttons deactivate.\n\tNote: THE BOMB IS STILL SET AND WILL DETONATE\nNow before you remvoe the disk if you need to mvoe the bomb you can:\nToggle off the anchor, move it, and re-anchor.\n\nGood luck. Remember the order:\nDisk, Code, Safety, Timer, Disk, RUN\nGood luck.\nIntelligence Analysts believe that they are hiding the disk in the control room emergency room", NB.r_code) - return - spawn( 0 ) + if (L) + var/obj/machinery/nuclearbomb/NB = new /obj/machinery/nuclearbomb(L.loc) + NB.r_code = text("[]", rand(10000, 99999.0)) + if (src.killer) + src.killer.memory += text("Syndicate Nuclear Bomb Code: []
", NB.r_code) + src.killer << text("The nuclear authorization code is: []\]", NB.r_code) + src.killer << text("Nuclear Explosives 101:\n\tHello and thank you for choosing the Syndicate for your nuclear information needs.\nToday's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.\nFirst and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.\nPressing any button on the compacted bomb will cause it to extend and bolt itself into place.\nIf this is done to unbolt it one must compeltely log in which at this time may not be possible.\nTo make the device functional:\n1. Place bomb in designated detonation zone\n2. Extend and anchor bomb (attack with hand).\n3. Insert Nuclear Auth. Disk into slot.\n4. Type numeric code into keypad ([]).\n\tNote: If you make a mistake press R to reset the device.\n5. Press the E button to log onto the device\nYou now have activated the device. To deactivate the buttons at anytime for example when\nyou've already prepped the bomb for detonation remove the auth disk OR press the R ont he keypad.\nNow the bomb CAN ONLY be detonated using the timer. A manual det. is not an option.\n\tNote: Nanotrasen is a pain in the neck.\nToggle off the SAFETY.\n\tNote: You wouldn't believe how many Syndicate Operatives with doctorates have forgotten this step\nSo use the - - and + + to set a det time between 5 seconds and 10 minutes.\nThen press the timer toggle button to start the countdown.\nNow remove the auth. disk so that the buttons deactivate.\n\tNote: THE BOMB IS STILL SET AND WILL DETONATE\nNow before you remvoe the disk if you need to mvoe the bomb you can:\nToggle off the anchor, move it, and re-anchor.\n\nGood luck. Remember the order:\nDisk, Code, Safety, Timer, Disk, RUN\nGood luck.\nIntelligence Analysts believe that they are hiding the disk in the control room emergency room", NB.r_code) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.killer.loc) + P.info = text("The nuclear authorization code is: []", NB.r_code) + P.name = "nuclear bomb code" + + for (var/obj/landmark/A in world) + if (A.name == "Syndicate-Gear-Closet") + new /obj/closet/syndicate/personal(A.loc) + del(A) + continue + + if (A.name == "Syndicate-Bomb") + var/obj/item/weapon/assembly/t_i_ptank/R = new /obj/item/weapon/assembly/t_i_ptank(A.loc ) + var/obj/item/weapon/timer/p1 = new /obj/item/weapon/timer(R) + var/obj/item/weapon/igniter/p2 = new /obj/item/weapon/igniter(R) + var/obj/item/weapon/tank/plasmatank/p3 = new /obj/item/weapon/tank/plasmatank(R) + R.part1 = p1 + R.part2 = p2 + R.part3 = p3 + p1.master = R + p2.master = R + p3.master = R + R.status = 1 + p3.gas.temperature = 500 +T0C + p2.status = 1 + del(A) + continue + + spawn (0) src.extend_process() return if("virus") diff --git a/Code/chemical.dm b/Code/chemical.dm index 061f247..0576250 100644 --- a/Code/chemical.dm +++ b/Code/chemical.dm @@ -17,7 +17,7 @@ src.brute_dam += brute src.burn_dam += burn else - var/can_inflict = src.max_damage - (src.brute_dam + src.burn_dam) + var/can_inflict = (src.max_damage+1) - (src.brute_dam + src.burn_dam) if (can_inflict) if ((brute > 0 && burn > 0)) var/ratio = brute / (brute + burn) @@ -744,7 +744,8 @@ heat is conserved between exchanges M.eye_blurry += volume * 15 else M.paralysis += volume * 12 - M.stat = 1 + if (M.stat == 0) + M.stat = 1 return /datum/chemical/epil/injected(var/mob/M as mob, zone) diff --git a/Code/computer.dm b/Code/computer.dm index 4911a5c..e9202f2 100644 --- a/Code/computer.dm +++ b/Code/computer.dm @@ -3,11 +3,61 @@ if(!maplevel) src.verbs -= /obj/machinery/computer/security/verb/station_map +/obj/machinery/computer/security/attack_ai(var/mob/user as mob) + return src.attack_hand(user) + return + /obj/machinery/computer/security/attack_paw(var/mob/user as mob) return src.attack_hand(user) return +//Using http://en.wikipedia.org/wiki/Shell_sort +//It got a little butchered by me not wanting to have half a dozen things going on in one for condition statement or while condition statement. +/proc/sortList(list/A) + // Note: A[someNumber] is a string, the name of the camera, and A[thatName] is the camera. + // We're making a backup of the list named 'B' because when we move elements in A, the list forgets about the camera. + var/list/B = list() + var/i = 0 + for (i=1, i<=A.len, i++) + B[A[i]] = A[A[i]] + + var/j = 0 + var/temp = null + var/size = A.len + var/increment = size / 2 + while (increment > 0) + for (i = increment, i < size, i+=increment) + j = i + temp = A[1+i] + + var/other = A[1+j-increment] + var/sortval = -sorttext(other, temp) //The - is because sorttext(A,B) returns -1 if A > B, rather than 1, and I'd consider having A > B = 1 to be more natural (since you can then check if sortval > 0, using the same comparison operator that you would have if you were directly comparing A and B (If we think that (0 > sortval) isn't also acceptable)). -Trafalgar + + while ((j >= increment) && (sortval > 0)) + A[1+j] = A[1+j - increment] + j = j - increment; + if (j>=increment) + other = A[1+j-increment] + sortval = sorttext(temp, other) + + A[1+j] = temp + + + if (increment == 2) + increment = 1 + else + increment = round(increment / 2.2) + + //Now we go through and assign names to cameras in a new list, but we do it in the order in which we had sorted the strings to + //The presumable un-speediness of this kind of defeats the point of doing the sorting the way we did it, though. + var/list/C = list() + for (i=1, i<=A.len, i++) + C[A[i]] = B[A[i]] + + + return C + /obj/machinery/computer/security/attack_hand(var/mob/user as mob) if(stat & (NOPOWER|BROKEN) ) return @@ -18,6 +68,8 @@ if (C.network == src.network) L[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C //Foreach goto(31) + + L = sortList(L) L["Cancel"] = "Cancel" var/t = input(user, "Which camera should you change to?") as null|anything in L @@ -29,7 +81,7 @@ if (t == "Cancel") user.machine = null return 0 - if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) || !( C.status ))) + if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) || !( C.status )) && (!istype(user, /mob/ai))) user.machine = null return 0 else @@ -42,7 +94,7 @@ /obj/machinery/computer/security/check_eye(var/mob/user as mob) - if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( src.current ) || !( src.current.status ))) + if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( src.current ) || !( src.current.status )) && (!istype(user, /mob/ai))) return null user.reset_view(src.current) return 1 @@ -164,6 +216,17 @@ else if (M.r_hand.w_class <= 2) t1 -= 1 + else if (locate(/obj/move/wall, oview(1, M))) //characters 'grab' shuttle walls like regular walls now -shadowlord13 + if (!( M.l_hand )) + t1 -= 1 + else + if (M.l_hand.w_class <= 2) + t1 -= 0.5 + if (!( M.r_hand )) + t1 -= 1 + else + if (M.r_hand.w_class <= 2) + t1 -= 0.5 else if (locate(/turf/station, oview(1, M))) if (!( M.l_hand )) @@ -188,38 +251,48 @@ return return return 0 - if (src.x <= 2) - if (src.z >= 10) - if (world.maxz < 10) - world.maxz++ - A.z++ - else - A.z = 9 - else - A.z++ + + if (src.x <= 2 && src.z < world.maxz) + A.z++ A.x = world.maxx - 2 - spawn( 0 ) + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + else if (A.x >= (world.maxx - 1) && A.z > 1) + A.z-- + A.x = 3 + spawn (0) if ((A && A.loc)) A.loc.Entered(A) - return else - if (A.x >= (world.maxx - 1) ) - if (A.z > 3) - A.z-- - else - A.z = 1 - A.x = 3 - spawn( 0 ) - if ((A && A.loc)) - A.loc.Entered(A) - return - else - spawn( 5 ) - if ((A && !( A.anchored ) && A.loc == src)) - if (step(A, A.last_move)) - else - spawn( 0 ) - src.Entered(A) - return - return - return + spawn (5) + if ((A && !( A.anchored ) && A.loc == src)) + if (step(A, A.last_move)) + else + spawn( 0 ) + src.Entered(A) + +/proc/call_shuttle_proc(var/mob/user) + if ((!( ticker ) || ticker.shuttle_location == 1)) + return + + if( ticker.mode == "blob" ) + user << "Under directive 7-10, SS13 is quarantined until further notice." + return + + world << "\blue Alert: The emergency shuttle has been called. It will arrive in T-10:00 minutes." + if (!( ticker.timeleft )) + ticker.timeleft = 6000 + ticker.timing = 1 + return + +/proc/cancel_call_proc(var/mob/user) + if ((!( ticker ) || ticker.shuttle_location == 1 || ticker.timing == 0 || ticker.timeleft < 300)) + return + if( ticker.mode == "blob" ) + return + + world << "\blue Alert: The shuttle is going back!" + ticker.timing = -1.0 + + return diff --git a/Code/demo.dm b/Code/demo.dm index a5a9286..bd7be33 100644 --- a/Code/demo.dm +++ b/Code/demo.dm @@ -98,7 +98,7 @@ return /obj/item/weapon/tank/attack(mob/M as mob, mob/user as mob) - + ..() if ((prob(30) && M.stat < 2)) var/mob/human/H = M @@ -201,7 +201,8 @@ /obj/item/weapon/tank/anesthetic/New() ..() - src.gas.sl_gas = 1000 + src.gas.sl_gas = 700000 + src.gas.oxygen = 1000000 return /obj/item/weapon/tank/plasmatank/proc/release() @@ -228,9 +229,9 @@ /obj/item/weapon/tank/plasmatank/proc/ignite() - - if ((src.gas.plasma < 1600000.0 || src.gas.temperature < 773)) //500degC - + var/strength = ((src.gas.plasma + src.gas.oxygen/2.0) / 1600000.0) * src.gas.temperature + //if ((src.gas.plasma < 1600000.0 || src.gas.temperature < 773)) //500degC + if (strength < 773.0) var/turf/T = get_turf(src.loc) T.poison += src.gas.plasma T.firelevel = T.poison @@ -239,7 +240,8 @@ if(src.master) src.master.loc = null - if ((src.gas.temperature > (450+T0C) && src.gas.plasma == 1600000.0)) + //if ((src.gas.temperature > (450+T0C) && src.gas.plasma == 1600000.0)) + if (strength > (450+T0C)) var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z) var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z) defer_powernet_rebuild = 1 @@ -260,8 +262,8 @@ makepowernets() else - if ((src.gas.temperature > (300+T0C) && src.gas.plasma == 1600000.0)) - + //if ((src.gas.temperature > (300+T0C) && src.gas.plasma == 1600000.0)) + if (strength > (300+T0C)) var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z) var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z) defer_powernet_rebuild = 1 @@ -296,37 +298,65 @@ flick("flash", M.flash) //Foreach goto(732) var/m_range = 2 + var/extended_range = round(strength / 387) + if (extended_range < 2) + extended_range = 2 + if (config.bombtemp_determines_range) + m_range = extended_range for(var/obj/machinery/atmoalter/canister/C in range(2, T)) if (!( C.destroyed )) if (C.gas.plasma >= 35000) C.destroyed = 1 m_range++ //Foreach goto(776) - var/min = m_range - var/med = m_range * 2 - var/max = m_range * 3 - var/u_max = m_range * 4 - + var/min = extended_range + var/med = extended_range * 2 + var/max = extended_range * 3 + var/u_max = m_range * 4 + var/turf/sw = locate(max(T.x - u_max, 1), max(T.y - u_max, 1), T.z) var/turf/ne = locate(min(T.x + u_max, world.maxx), min(T.y + u_max, world.maxy), T.z) defer_powernet_rebuild = 1 + + //If m_range is <= 12, then we are going to calculate the squared distance between tiles and ground zero. To avoid complicating comparisons in the for loop with additional if statements, we are going to square max, med, and min. You wouldn't be able to subtract tileRange (squared) from max, med, or min and get a useful distance, but this works fine for comparing the range to max, med, or min, without caring about how far between them it is. -Trafalgar + + if (m_range<=12) + max *= max + med *= med + min *= min + u_max *= u_max + + for(var/turf/U in block(sw, ne)) + var tileRange = 0 + var/zone = 4 + //If this if-else were outside the for loop, this would (assuming BYOND doesn't optimize this already) help improve performance more, but the only way I see to do that would be to have two copies of the for loop, one for m_range <= 12 and one for m_range > 12. -Trafalgar + if (m_range<=12) + tileRange = (U.y-T.y)*(U.y-T.y) + (U.x-T.x)*(U.x-T.x) + else + tileRange = max(abs(U.y-T.y), abs(U.x-T.x)) + - for(var/turf/U in block(sw, ne)) - - - var/zone = 4 - if ((U.y <= (T.y + max) && U.y >= (T.y - max) && U.x <= (T.x + max) && U.x >= (T.x - max) )) - zone = 3 - if ((U.y <= (T.y + med) && U.y >= (T.y - med) && U.x <= (T.x + med) && U.x >= (T.x - med) )) - zone = 2 - if ((U.y <= (T.y + min) && U.y >= (T.y - min) && U.x <= (T.x + min) && U.x >= (T.x - min) )) - zone = 1 - for(var/atom/A in U) - A.ex_act(zone) - //Foreach goto(1217) - U.ex_act(zone) - U.buildlinks() + if (tileRange <= u_max) + //If this were, say, c++, then this would be faster than the commented out code (for one it isn't doing calculations 3 times over for no reason, for two it's an if-elseif-elseif instead of three ifs which all would get evaluated. It might be slightly faster if we did if (tileRange>max) first, then else if (tileRange > med), then else if (tileRange > min), then else (due to performance increases from having if/elseif/elses's ordered with the choices sorted from most likely at the top to least likely at the end, but who knows if this even applies to BYOND games since the performance benefit is the result of how the CPU processes comparisons and branching and such). -Trafalgar + if (tileRange <= min) + zone = 1 + else if (tileRange <= med) + zone = 2 + else if (tileRange <= max) + zone = 3 + /*if ((U.y <= (T.y + max) && U.y >= (T.y - max) && U.x <= (T.x + max) && U.x >= (T.x - max) )) + zone = 3 + if ((U.y <= (T.y + med) && U.y >= (T.y - med) && U.x <= (T.x + med) && U.x >= (T.x - med) )) + zone = 2 + if ((U.y <= (T.y + min) && U.y >= (T.y - min) && U.x <= (T.x + min) && U.x >= (T.x - min) )) + zone = 1 + */ + for(var/atom/A in U) + A.ex_act(zone) + //Foreach goto(1217) + U.ex_act(zone) + U.buildlinks() //U.mark(zone) //Foreach goto(961) @@ -560,8 +590,11 @@ /obj/secloset/personal/attackby(obj/item/weapon/W as obj, mob/user as mob) if (src.opened) - user.drop_item() - W.loc = src.loc + if (istype(W, /obj/item/weapon/grab)) + src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet + else: + user.drop_item() + W.loc = src.loc else if (istype(W, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = W @@ -762,8 +795,11 @@ /obj/secloset/attackby(obj/item/weapon/W as obj, mob/user as mob) if (src.opened) - user.drop_item() - W.loc = src.loc + if (istype(W, /obj/item/weapon/grab)) + src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet + else: + user.drop_item() + W.loc = src.loc else if (istype(W, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = W @@ -1010,6 +1046,19 @@ var/obj/item/weapon/syndicate_uplink/U = new /obj/item/weapon/syndicate_uplink( src ) U.uses = 5 return + +/obj/closet/syndicate/personal/New() + + ..() + sleep(2) + new /obj/item/weapon/tank/jetpack(src) + new /obj/item/weapon/clothing/mask/m_mask(src) + new /obj/item/weapon/clothing/head/s_helmet(src) + new /obj/item/weapon/clothing/suit/sp_suit(src) + new /obj/item/weapon/crowbar(src) + new /obj/item/weapon/cell(src) + new /obj/item/weapon/card/id/syndicate(src) + new /obj/item/weapon/multitool(src) /obj/closet/emcloset/New() @@ -1240,10 +1289,12 @@ return /obj/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) - if ((src.opened || W.damtype != "fire" || !( istype(W, /obj/item/weapon/weldingtool) ))) - user.drop_item() - W.loc = src.loc + if (istype(W, /obj/item/weapon/grab)) + src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet + else: + user.drop_item() + W.loc = src.loc else src.welded = !( src.welded ) for(var/mob/M in viewers(user, null)) @@ -1276,6 +1327,7 @@ return /obj/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) + if ((user.restrained() || user.stat)) return if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src))) @@ -1296,6 +1348,7 @@ M << text("\red [] stuffs [] into []!", user, O, src) //Foreach goto(104) src.add_fingerprint(user) + return /obj/closet/attack_paw(mob/user as mob) @@ -1545,7 +1598,9 @@ return /obj/stool/chair/MouseDrop_T(mob/M as mob, mob/user as mob) - + if (!ticker) + user << "You can't buckle anyone in before the game starts." + return if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat)) return if (M == usr) @@ -1710,49 +1765,7 @@ if(!net) // cable is unpowered return 0 - var/datum/powernet/PN // find the powernet - if(powernets && powernets.len >= net) - PN = powernets[net] - - if(PN && PN.avail > 0) // is it powered? - - var/prot = 0 - - if(istype(user, /mob/human)) - var/mob/human/H = user - if(H.gloves) - var/obj/item/weapon/clothing/gloves/G = H.gloves - - prot = G.elec_protect - - if(prot == 10) // elec insulted gloves protect completely - return 0 - - prot++ - - var/obj/effects/sparks/O = new /obj/effects/sparks( src.loc ) - O.dir = pick(NORTH, SOUTH, EAST, WEST) - spawn( 0 ) - O.Life() - - if(PN.avail > 10000) - user.burn(8e7/prot) - - user << "\red You feel a powerful shock course through your body!" - sleep(1) - - user.stunned = 120/prot - user.weakened = 20/prot - //Foreach goto(72) - for(var/mob/M in hearers(src, null)) - if(M == user) - continue - if (!( M.blinded )) - M << "\red [user.name] was shocked by the grille!" - else - M << "\red You hear a heavy electrical crack." - - return 1 + return src.electrocute(user, prb, net) /obj/window/las_act(flag) @@ -2101,6 +2114,7 @@ /turf/station/r_wall/unburn() + src.luminosity = 0 src.update() return @@ -2115,7 +2129,8 @@ else if ((prob(20) && src.state == 1)) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.oxygen = O2STANDARD new /obj/item/weapon/sheet/metal( F ) new /obj/item/weapon/sheet/metal( F ) @@ -2128,7 +2143,7 @@ switch(severity) if(1.0) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() //del(src) @@ -2145,7 +2160,8 @@ new /obj/item/weapon/sheet/metal( src ) else src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.burnt = 1 F.health = 30 F.icon_state = "Floor1" @@ -2173,7 +2189,8 @@ if(prob(10)) if(!intact) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.burnt = 1 F.health = 30 F.icon_state = "Floor1" @@ -2205,6 +2222,8 @@ var/turf/T = user.loc user << "\blue Cutting support rods." sleep(40) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 5 else @@ -2218,6 +2237,8 @@ var/turf/T = user.loc user << "\blue Slicing metal cover." sleep(60) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 3 else @@ -2225,6 +2246,9 @@ var/turf/T = user.loc user << "\blue Removing support rods." sleep(100) + if (!( istype(src, /turf/station/r_wall) )) + return + if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 6 new /obj/item/weapon/rods( src ) @@ -2234,6 +2258,8 @@ var/turf/T = user.loc user << "\blue Removing support lines." sleep(40) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 2 else @@ -2242,6 +2268,8 @@ var/turf/T = user.loc user << "\blue Prying cover off." sleep(100) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 4 else @@ -2249,6 +2277,8 @@ var/turf/T = user.loc user << "\blue Prying outer sheath off." sleep(100) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.d_state = 7 new /obj/item/weapon/sheet/metal( src ) @@ -2257,6 +2287,8 @@ var/turf/T = user.loc user << "\blue Repairing wall." sleep(100) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ) && src.state == 2)) src.d_state = 0 if (W:amount > 1) @@ -2269,9 +2301,12 @@ user << "\blue Now dismantling girders." var/turf/T = user.loc sleep(100) + if (!( istype(src, /turf/station/r_wall) )) + return if ((user.loc == T && user.equipped() == W && !( user.stat ))) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.oxygen = O2STANDARD new /obj/item/weapon/sheet/metal( F ) new /obj/item/weapon/sheet/metal( F ) @@ -2314,7 +2349,7 @@ switch(severity) if(1.0) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) return @@ -2331,7 +2366,8 @@ src.icon_state = "girder" else src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.burnt = 1 F.health = 30 F.icon_state = "Floor1" @@ -2358,7 +2394,8 @@ if(prob(20)) if(!intact) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.burnt = 1 F.health = 30 F.icon_state = "Floor1" @@ -2380,6 +2417,7 @@ /turf/station/wall/unburn() + src.luminosity = 0 if (src.state == 1) src.icon_state = "girder" else @@ -2413,7 +2451,8 @@ return if ((user.loc == T && src.state == 1 && user.equipped() == W)) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.oxygen = O2STANDARD new /obj/item/weapon/sheet/metal( F ) new /obj/item/weapon/sheet/metal( F ) @@ -2430,7 +2469,9 @@ return if ((user.loc == T && src.state == 1 && user.equipped() == W)) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() + F.oxygen = O2STANDARD new /obj/d_girders( F ) new /obj/item/weapon/sheet/metal( F ) @@ -2446,7 +2487,8 @@ return if ((user.loc == T && src.state == 1 && user.equipped() == W)) src.state = 0 - var/turf/station/r_wall/F = new /turf/station/r_wall( locate(src.x, src.y, src.z) ) + //var/turf/station/r_wall/F = new /turf/station/r_wall( locate(src.x, src.y, src.z) ) + var/turf/station/r_wall/F = src.ReplaceWithRWall() F.oxygen = O2STANDARD F.icon_state = "r_girder" F.state = 1 @@ -2493,7 +2535,8 @@ else if ((prob(20) && src.state == 1)) src.state = 0 - var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + //var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) ) + var/turf/station/floor/F = src.ReplaceWithFloor() F.oxygen = O2STANDARD new /obj/item/weapon/sheet/metal( F ) new /obj/item/weapon/sheet/metal( F ) @@ -2510,25 +2553,26 @@ return /turf/station/floor/ex_act(severity) + set src in oview(1) switch(severity) if(1.0) - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() levelupdate() - //SN src = null - del(src) + //del(src) //deleting it makes this method silently stop executing and erases the saved area somehow (SL) return if(2.0) if (prob(50)) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() levelupdate() - del(src) + //del(src) //deleting it makes this method silently stop executing and erases the saved area somehow (SL) return else src.icon_state = "burning" + src.luminosity = 2 src.burnt = 1 src.health = 30 src.intact = 0 @@ -2586,6 +2630,7 @@ src.burnt = 0 if (src.firelevel >= 900000.0) src.icon_state = "burning" + src.luminosity = 2 else src.icon_state = "Floor" var/obj/item/weapon/tile/T = C @@ -2599,6 +2644,7 @@ /turf/station/floor/unburn() + src.luminosity = 0 src.icon_state = text("Floor[]", (src.burnt ? "1" : "")) return diff --git a/Code/dna.dm b/Code/dna.dm index 5a18a99..2d6a8ca 100644 --- a/Code/dna.dm +++ b/Code/dna.dm @@ -9,6 +9,9 @@ p++ return t return + +/obj/machinery/computer/dna/attack_ai(mob/user as mob) + return src.attack_hand(user) /obj/machinery/computer/dna/attack_paw(mob/user as mob) @@ -21,7 +24,7 @@ return user.machine = src - if (istype(user, /mob/human)) + if (istype(user, /mob/human) || istype(user, /mob/ai)) var/dat = text("Please Insert the cards into the slots
\n\t\t\t\tFunction Disk: []
\n\t\t\t\tTarget Disk: []
\n\t\t\t\tAux. Data Disk: []
\n\t\t\t\t\t(Not always used!)
\n\t\t\t\t[]", src, (src.scan ? text("[]", src.scan.name) : "----------"), src, (src.modify ? text("[]", src.modify.name) : "----------"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("Execute Function", src) : "No function disk inserted!")) if (src.temp) dat = text("[]

Clear Message", src.temp, src) @@ -36,11 +39,12 @@ /obj/machinery/computer/dna/Topic(href, href_list) ..() if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) return - if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))) + if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["modify"]) if (src.modify) @@ -200,10 +204,8 @@ else src.temp = "System Failure: Cannot read disk function!" src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) - //Foreach goto(1764) + src.updateDialog() + return /obj/machinery/computer/dna/ex_act(severity) @@ -608,16 +610,16 @@ else src.status = null src.temp = "Unknown system error." - for(var/mob/O in viewers(1, src)) - if ((O.client && O.machine == src)) - src.attack_hand(O) - //Foreach goto(1755) + src.updateDialog() return /obj/machinery/scan_console/attack_paw(user as mob) return src.attack_hand(user) return + +/obj/machinery/scan_console/attack_ai(user as mob) + return src.attack_hand(user) /obj/machinery/scan_console/attack_hand(user as mob) @@ -658,11 +660,12 @@ /obj/machinery/scan_console/Topic(href, href_list) ..() if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) - usr << "\red You don't have the dexterity to do this!" - return + if (!istype(usr, /mob/ai)) + usr << "\red You don't have the dexterity to do this!" + return if ((usr.stat || usr.restrained())) return - if ((usr.contents.Find(src) || get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + if ((usr.contents.Find(src) || get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["locked"]) if ((src.connected && src.connected.occupant)) @@ -702,9 +705,8 @@ src.status = "load" src.temp = "Loading..." src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + src.updateDialog() + //Foreach goto(484) return diff --git a/Code/engine.dm b/Code/engine.dm index 22926c7..1f7ab8d 100644 --- a/Code/engine.dm +++ b/Code/engine.dm @@ -37,14 +37,14 @@ switch(severity) if(1.0) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) return if(2.0) if (prob(50)) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) diff --git a/Code/globals.dm b/Code/globals.dm index d16c77f..bb1f097 100644 --- a/Code/globals.dm +++ b/Code/globals.dm @@ -45,7 +45,6 @@ hearing inside closets/pods check head protection when hit by tank etc. - Double message at end of round. gas progagation btwen obj/move & turfs - no flow due to turf/updatecell not counting /obj/moves as sources @@ -104,13 +103,57 @@ var world_message = "Welcome to SS13!" - savefile_ver = "3" - SS13_version = "40.93.2H9.6" + savefile_ver = "4" + SS13_version = "40.93.2H9.7" changes = {"Changes from base version 40.93.2

+ + +

Version 40.93.2H9.7 +

    +
  • Merged in basically everything from http://shadowlord13.googlepages.com/openss13_b12-index.html (the person who was working on that is on the openss13 dev team now. If you're curious, that's also the person writing this particular entry in the changelog). +
  • Made further changes to the map, starting with that map version: moved the air tunnel north, made a hall going north to it, moved the crew arrival shuttle so it connects to that hall, so meteors can hit the part of the station it was protecting before +
  • The air tunnel now connects to a gauntlet of turrets leading to the AI upload room, which is in the space between the air tunnel and the rest of the station south of it. +
  • Moved the AI's room itself into there as well. The weapons sat has returned to being what it originally was. To get to the AI now, you would either have to go through one or more rwalls and grilles (depending on where you try to break through), or go through the turret gauntlet, and through the AI upload room and out a door on the other side of it. (Of course a sufficiently powerful bomb could probably bust through the walls, if not kill the AI, even if you plant it in the air tunnel) +
  • The AI still has four SMES generators, but they are charged from SS13's main power now. So, if the station loses power, the AI will probably die as well (eventually). +
  • Fixed an exception coming from the AI clicking an engine computer. +
  • Fixed exceptions from clicking things which dropped the active held item while you had someone grabbed in your active hand. If you try to click a closet with someone grabbed, you stuff them in it now. If you try to click a table or rack, you don't do anything. Previously all of these caused you to lose the grip and caused an exception (because when it told the grip to be dropped, it deleted itself, and then it tried to move null). +
  • Many many things which could take someone from being 'dead' to being 'unconscious' have been fixed. These were all cases where stat was being set to 1 without being checked to see if it was 2. Mind you, it wasn't terribly easy to actually resurrect someone with this, since they always immediately died again due to all the damage they had taken, but it did cause them to get (Dead) (Dead) (Dead) (Dead) spammed at the end of their corpse's name if they were thwacked repeatedly. Also, related stuff that would say they were stunned, weakened, etc, should also not happen (unless I missed some). +
  • Syndicate mini-station is more rectangular-ish, and the forcefield around it is more circle-ish. The forcefield is also thicker and completely encases the mini-station, making it harder to teleport inside. +
  • Un-nerfed meteor chance in non-meteor modes a bit from 0.5 to 1 (originally 2.0 before it was nerfed to 0.5). +
  • Added an alternate_ai_laws config variable, which gives the AI some more reasonable laws. It also has some more law adjustments when it's the traitor. +
  • Merged in a number of changes from the goons' svn (but not all of them - I didn't take all of them, and I probably missed a bunch because I didn't try to compare any of the code which was moved in the openss13 code reorganizations). Changes that I merged in include: +
    • Anesthetic tanks have 700000 N2O and 1000000 oxygen in them now, instead of 1000 N2O and no oxygen +
    • Syndicate closets on the mini-station instead of stuff strewn everywhere +
    • Starting the syndicates in nuclear mode with a few bombs (the goons had given them four bombs and left the heater with the parts to make one or two more bombs, but I've reduced that to two bombs and removed the heater and the bomb-making parts) +
    • Blob dies in space and can't spread at all in the start zone or shuttles +
    • Map transitions west and east work properly +
    • A hardcoded supply station spawnpoint at 77,40,7 for Thief jack, Link43130, Hutchy2k1, Easty, and Exadv1 was removed. +
    • You spawn in /area/arrival/start now instead of sleep_area, and the rest of the arrival shuttle has its own area (/area/arrival/shuttle). The original sleep area is also actually in /area/sleep_area again now. +
    • Attacking someone with a taser gun at point-blank range uses charges and will thwack them instead of stunning if you have no charges. +
    • People who are disconnected have "a vacant look in their eyes" when checked with a medical analyzer. +
    • A fix to make the gasmask overlay not remain after death +
    • Stuttering is applied before HTMLizing text. +
    • Shuttle doors can be opened and closed by clicking them now. +
    • A fix for spawning without your ID +
    • Staff assistants have access level 3. +
    • Fixes to timers showing the wrong icon. +
    • Taser and laser gun have a maximum charges var (They have 10 each). +
    • I had missed the desc on the protect station module. +
    • Added this patch, which reduces turret firing rate and makes shots able to hit things other than the chest (which is another way of fixing the "the turret can't kill me" problem, but is probably better than the one I used). I didn't include the fix for shooting laying down people, since I think my fix for that was better than the one in this patch: http://code.google.com/p/ss13/issues/detail?id=91&colspec=ID%20Type%20Branch%20Status%20Priority%20Owner%20Summary +
    +
  • The steal-laser-pistol objective checks the charges against maximum_charges instead of 25 now. +
  • Prox bombs and timer bombs count for the traitor fully-heated-plasma-bomb objective now. +
  • In nuclear mode, there is now a 25% chance of the AI being loyal to the syndicate instead of SS13. (The SS13 personnel won't know it) +
  • There are now 24 solar panels at north solar, which is the same number that main solar (southwest) has (there were 12 at north solar before). +
+

Version 40.93.2H9.6

    -
  • Started pipelaying system, Pipe cutting/damage not yet complete. +
  • Started pipelaying system, Pipe cutting/damage not yet complete.
  • Added burning icon for labcoat
  • Fixed a minor airsystem bug for /obj/moves
  • Fixed admin toggle of mode-voting message (now reports state of allowvotemode correctly) @@ -122,6 +165,7 @@ var
  • Made a temporary fix to runtime errors when blob attacks pipes (until full pipe damage system implemented).
  • Code reorganization of /obj/machinery continued.
+

Version 40.93.2H9.5

  • Fixed a few bugs with reinforced windows. @@ -315,7 +359,7 @@ var prison_entered = null list/html_colours = new/list(0) - list/occupations = list( "Engineer", "Engineer", "Security Officer", "Security Officer", "Forensic Technician", "Medical Researcher", "Research Technician", "Toxin Researcher", "Atmospheric Technician", "Medical Doctor", "Station Technician", "Head of Personnel", "Head of Research", "Prison Security", "Prison Security", "Prison Doctor", "Prison Warden" ) + list/occupations = list( "Engineer", "Engineer", "Security Officer", "Security Officer", "Forensic Technician", "Medical Researcher", "Research Technician", "Toxin Researcher", "Atmospheric Technician", "Medical Doctor", "Station Technician", "Head of Personnel", "Head of Research", "Prison Security", "Prison Security", "Prison Doctor", "Prison Warden", "AI" ) list/assistant_occupations = list( "Technical Assistant", "Medical Assistant", "Research Assistant", "Staff Assistant" ) list/bombers = list( ) list/admins = list( ) @@ -353,6 +397,15 @@ var wavesecret = 0 + //airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does. + //airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number. + //airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc) + list/airlockWireColorToFlag = RandomAirlockWires() + list/airlockIndexToFlag + list/airlockIndexToWireColor + list/airlockWireColorToIndex + list/airlockFeatureNames = list("IdScan", "Main power In", "Main power Out", "Drop door bolts", "Backup power In", "Backup power Out", "Power assist", "AI Control", "Electrify") + world mob = /mob/human turf = /turf/space @@ -369,4 +422,4 @@ world //visibility = 0 - //loop_checks = 0 \ No newline at end of file + //loop_checks = 0 diff --git a/Code/instructions.dm b/Code/instructions.dm index 5230642..512695c 100644 --- a/Code/instructions.dm +++ b/Code/instructions.dm @@ -87,10 +87,8 @@ return var/mob/human/M = usr var/list/start_loc = list( ) - if ((M.key in list( "Thief jack", "Link43130", "Hutchy2k1", "Easty", "Exadv1" ))) - start_loc["Supply Station"] = locate(77, 40, 7) - var/area/A = locate(/area/sleep_area) + var/area/A = locate(/area/arrival/start) var/list/L = list( ) for(var/turf/T in A) if(T.isempty()) @@ -105,7 +103,9 @@ if (S.tag == text("spstart[]", M.ckey)) start_loc[text("[]", S.desc)] = S //Foreach goto(295) - var/option = input(M, "Where should you start?", "Start Selector", null) in start_loc + var/option = input(M, "Where should you start?", "Start Selector", null) in start_loc + if (usr==null) + return if ((!( usr.start ) || !( istype(usr, /mob/human) ) || usr.loc != src.loc)) return if (ticker) diff --git a/Code/items.dm b/Code/items.dm index 1fcd596..455e838 100644 --- a/Code/items.dm +++ b/Code/items.dm @@ -459,7 +459,7 @@ O.show_message(text("\red [] has been attacked with [][] ", M, src, (user ? text(" by [].", user) : ".")), 1) //Foreach goto(20) var/power = src.force - if (M.health >= -10.0) + if ((M.health >= -10.0) && (M.stat < 2)) if (istype(M, /mob/human)) var/mob/human/H = M var/obj/item/weapon/organ/external/affecting = H.organs["chest"] @@ -1264,10 +1264,11 @@ src.force = 75 ..() src.force = 60 - M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has been shot point-blank by []!", M, user), 1, "\red You hear someone fall", 2) - //Foreach goto(192) + if (M.stat<2) + M.stat = 1 + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] has been shot point-blank by []!", M, user), 1, "\red You hear someone fall", 2) + //Foreach goto(192) else if (prob(50)) if (M.paralysis < 60) @@ -1277,11 +1278,12 @@ M.weakened = 60 src.force = 30 ..() - M.stat = 1 - for(var/mob/O in viewers(M, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [] has been pistol whipped []!", M, user), 1, "\red You hear someone fall", 2) - //Foreach goto(315) + if (M.stat<2) + M.stat = 1 + for(var/mob/O in viewers(M, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red [] has been pistol whipped []!", M, user), 1, "\red You hear someone fall", 2) + //Foreach goto(315) return /obj/item/weapon/gun/energy/proc/update_icon() @@ -1356,7 +1358,7 @@ /obj/item/weapon/gun/energy/taser_gun/update_icon() - var/ratio = src.charges / 10 + var/ratio = src.charges / maximum_charges ratio = round(ratio, 0.25) * 100 src.icon_state = text("t_gun[]", ratio) return @@ -1407,35 +1409,40 @@ if ((istype(H, /mob/human) && istype(H, /obj/item/weapon/clothing/head) && H.flags & 8 && prob(80))) M << "\red The helmet protects you from being hit hard in the head!" return - if (user.a_intent == "hurt") - if (prob(20)) - if (M.paralysis < 10) - M.paralysis = 10 - else - if (M.weakened < 10) + if (src.charges >= 1) + if (user.a_intent == "hurt") + if (prob(20)) + if (M.paralysis < 10) + M.paralysis = 10 + else if (M.weakened < 10) M.weakened = 10 - if (M.stuttering < 10) - M.stuttering = 10 - ..() - M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has been knocked unconscious!", M), 1, "\red You hear someone fall", 2) - //Foreach goto(182) - else - if (prob(50)) - if (M.paralysis < 60) - M.paralysis = 60 + if (M.stuttering < 10) + M.stuttering = 10 + ..() + if (M.stat<2) + M.stat = 1 + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] has been knocked unconscious!", M), 1, "\red You hear someone fall", 2) + //Foreach goto(182) else - if (M.weakened < 60) - M.weakened = 60 - if (M.stuttering < 60) - M.stuttering = 60 - M.stat = 1 - for(var/mob/O in viewers(M, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [] has been stunned with the taser gun by []!", M, user), 1, "\red You hear someone fall", 2) - //Foreach goto(309) - return + if (prob(50)) + if (M.paralysis < 60) + M.paralysis = 60 + else + if (M.weakened < 60) + M.weakened = 60 + if (M.stuttering < 60) + M.stuttering = 60 + if (M.stat<2) + M.stat = 1 + for(var/mob/O in viewers(M, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red [] has been stunned with the taser gun by []!", M, user), 1, "\red You hear someone fall", 2) + //Foreach goto(309) + src.charges-- + update_icon() + else // no charges in the gun, so they just wallop the target with it + ..() /obj/item/weapon/pill_canister/New() @@ -2110,7 +2117,9 @@ var/turf/F = get_step(usr, usr.dir) if (!( istype(F, /turf/station/floor) )) return - var/turf/station/wall/W = new /turf/station/wall( locate(F.x, F.y, F.z) ) + //var/turf/station/wall/W = new /turf/station/wall( locate(F.x, F.y, F.z) ) + var/turf/station/wall/W = F.ReplaceWithWall() + W.icon_state = "girder" W.updatecell = 1 W.opacity = 0 @@ -2842,7 +2851,7 @@ return /obj/item/weapon/paper/examine() - set src in view() + set src in view(usr.client) ..() if (!( istype(usr, /mob/human) )) @@ -2942,12 +2951,13 @@ /obj/item/weapon/f_card/add_fingerprint() ..() - if (src.fingerprints) - if (src.amount > 1) - var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( (ismob(src.loc) ? src.loc.loc : src.loc) ) - F.amount = --src.amount - src.amount = 1 - src.icon_state = "f_print_card1" + if (!istype(usr, /mob/ai)) + if (src.fingerprints) + if (src.amount > 1) + var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( (ismob(src.loc) ? src.loc.loc : src.loc) ) + F.amount = --src.amount + src.amount = 1 + src.icon_state = "f_print_card1" return /obj/item/weapon/f_print_scanner/attackby(obj/item/weapon/f_card/W, mob/user) @@ -3027,17 +3037,26 @@ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey")))) user << "\red You don't have the dexterity to do this!" return - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has analyzed []'s vitals!", user, M), 1) - //Foreach goto(67) - user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health))), 1) - user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.oxyloss, M.toxloss, M.fireloss, M.bruteloss), 1) + + for (var/mob/O in viewers(M, null)) + O.show_message("\red [user] has analyzed [M]'s vitals!", 1) + + user.show_message("\blue Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"]", 1) + user.show_message("\blue \t Damage Specifics: [M.oxyloss]-[M.toxloss]-[M.fireloss]-[M.bruteloss]", 1) user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1) + if (M.rejuv) - user.show_message(text("\blue Bloodstream Analysis located [] units of rejuvenation chemicals.", M.rejuv), 1) + user.show_message("\blue Bloodstream Analysis located [M.rejuv] units of rejuvenation chemicals.", 1) + if (M.antitoxs) + user.show_message("\blue Bloodstream Analysis located [M.antitoxs] units of antitoxin chemicals.", 1) + if (M.plasma) + user.show_message("\blue Bloodstream Analysis located [M.antitoxs] units of toxic plasma chemicals.", 1) + // Not checked: r_epil, r_ch_cou, r_tourette + + if (!M.client) + user.show_message("\blue [M] has a vacant look in \his eyes.", 1) + src.add_fingerprint(user) - return - return /obj/item/weapon/analyzer/attack_self(mob/user) @@ -3135,7 +3154,6 @@ return /obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) - var/cx = tx var/cy = ty src.boxes.screen_loc = text("[],[] to [],[]", tx, ty, mx, my) @@ -3553,12 +3571,8 @@ return /obj/item/weapon/tile/proc/build(turf/S) + var/turf/station/floor/W = S.ReplaceWithFloor() - var/area/A = S.loc - var/turf/station/floor/W = new /turf/station/floor( locate(S.x, S.y, S.z) ) - if (istype(A, /area)) - A.contents -= W - A.contents += W W.burnt = 1 W.intact = 0 W.oxygen = 0 @@ -3808,7 +3822,7 @@ return /obj/item/weapon/radio/electropack/Topic(href, href_list) - ..() + //..() //Was causing double frequency changes -shadowlord13 if (usr.stat || usr.restrained()) return if (((istype(usr, /mob/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))) @@ -4055,7 +4069,7 @@ return /obj/item/weapon/radio/signaler/Topic(href, href_list) - ..() + //..() //Was causing double frequency changes -shadowlord13 if (usr.stat) return if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))) @@ -4128,6 +4142,14 @@ return return +/obj/item/weapon/radio/intercom/attack_ai(mob/user) + + src.add_fingerprint(user) + spawn( 0 ) + attack_self(user) + return + return + /obj/item/weapon/radio/intercom/attack_paw(mob/user) if ((ticker && ticker.mode == "monkey")) @@ -4167,10 +4189,10 @@ return /obj/item/weapon/radio/Topic(href, href_list) - ..() + //..() //Was causing double frequency changes -shadowlord13 if (usr.stat) return - if ((usr.contents.Find(src) || get_dist(src, usr) <= 1 && istype(src.loc, /turf))) + if ((usr.contents.Find(src) || get_dist(src, usr) <= 1 && istype(src.loc, /turf)) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["freq"]) src.freq += text2num(href_list["freq"]) @@ -4210,18 +4232,12 @@ if (istype(src.loc, /mob)) attack_self(src.loc) else - for(var/mob/M in viewers(1, src)) - if (M.client) - src.attack_self(M) - //Foreach goto(390) + src.updateDialog() else if (istype(src.master.loc, /mob)) src.attack_self(src.master.loc) else - for(var/mob/M in viewers(1, src.master)) - if (M.client) - src.attack_self(M) - //Foreach goto(466) + src.updateDialog() src.add_fingerprint(usr) else usr << browse(null, "window=radio") @@ -4251,16 +4267,16 @@ for(var/mob/O in crackle) O.show_message(text("\icon[] Crackle,Crackle", src), 2) //Foreach goto(233) - if (istype(M, /mob/human)) + if (istype(M, /mob/human) || (istype(M, /mob/ai))) for(var/mob/O in receive) - if (istype(O, /mob/human)) + if (istype(O, /mob/human) || (istype(O, /mob/ai))) O.show_message(text("[]-\icon[]\[[]\]-broadcasts: []", M.rname, src, src.freq, msg), 2) else O.show_message(text("[]-\icon[]\[[]\]-broadcasts: []", M.rname, src, src.freq, stars(msg)), 2) //Foreach goto(284) if (src.freq == 5) for(var/mob/O in receive) - if (istype(O, /mob/human)) + if (istype(O, /mob/human) || (istype(O, /mob/ai))) O.show_message(text("[]-\icon[]\[[]\]-broadcasts (over PA): []", M.rname, src, src.freq, msg), 2) else O.show_message(text("[]-\icon[]\[[]\]-broadcasts (over PA): []", M.rname, src, src.freq, stars(msg)), 2) @@ -5216,7 +5232,8 @@ return /obj/table/attackby(obj/item/weapon/W, mob/user) - + if (istype(W, /obj/item/weapon/grab)) + return if (istype(W, /obj/item/weapon/wrench)) new /obj/item/weapon/table_parts( src.loc ) //SN src = null @@ -5271,7 +5288,8 @@ return /obj/rack/attackby(obj/item/weapon/W, mob/user) - + if (istype(W, /obj/item/weapon/grab)) + return if (istype(W, /obj/item/weapon/wrench)) new /obj/item/weapon/rack_parts( src.loc ) //SN src = null @@ -5527,19 +5545,21 @@ return /atom/proc/attack_paw(mob/user) - return +/atom/proc/attack_ai(mob/user) + return + /atom/proc/hand_h(mob/user) - return /atom/proc/hand_p(mob/user) + return +/atom/proc/hand_a(mob/user) return /atom/proc/hitby(obj/item/weapon/W) - return /atom/proc/attackby(obj/item/weapon/W, mob/user) @@ -5585,19 +5605,34 @@ ..() return +/atom/Click() + //world << "atom.Click() on [src] by [usr] : src.type is [src.type]" + if (!usr.disable_one_click) + return DblClick() + /atom/DblClick() + if (world.time <= usr:lastDblClick+2) + //world << "BLOCKED atom.DblClick() on [src] by [usr] : src.type is [src.type]" + return + else + //world << "atom.DblClick() on [src] by [usr] : src.type is [src.type]" + usr:lastDblClick = world.time + ..() var/obj/item/weapon/W = usr.equipped() if ((W == src && usr.stat == 0)) spawn(0) W.attack_self(usr) return - if (!(usr.canmove) || usr.stat != 0) + if (((!usr.canmove) && (!istype(usr, /mob/ai))) || usr.stat != 0) + return /* This line broke my mental parser. --Stephen001 */ if ((!(src in usr.contents) && (((!(isturf(src)) && (!(isturf(src.loc)) && (src.loc && !(isturf(src.loc.loc))))) || !(isturf(usr.loc))) && (src.loc != usr.loc && (!(istype(src, /obj/screen)) && !(usr.contents.Find(src.loc))))))) return /* Surely src.loc == usr is redundant? --Stephen001 */ var/t5 = (get_dist(src, usr) <= 1 || src.loc == usr) + if (istype(usr, /mob/ai)) + t5 = 1 if ((istype(src, /obj/item/weapon/organ) && src in usr.contents)) var/mob/human/H = usr usr << "Betchya think you're really smart trying to remove your own body parts aren't ya!" @@ -5611,6 +5646,7 @@ /* Seems like a pretty important expression. Dare I fathom what it checks? --Stephen001 */ if (((t5 || (W && (W.flags & 16))) && !(istype(src, /obj/screen)))) if (usr.next_move < world.time) + usr.prev_move = usr.next_move usr.next_move = world.time + 10 else return @@ -5704,14 +5740,22 @@ else if (istype(usr, /mob/monkey)) src.attack_paw(usr, usr.hand) + else + if (istype(usr, /mob/ai)) + src.attack_ai(usr, usr.hand) else if (istype(usr, /mob/human)) src.hand_h(usr, usr.hand) else if (istype(usr, /mob/monkey)) src.hand_p(usr, usr.hand) + else + if (istype(usr, /mob/ai)) + src.hand_a(usr, usr.hand) + else if (istype(src, /obj/screen)) + usr.prev_move = usr.next_move if (usr.next_move < world.time) usr.next_move = world.time + 10 else @@ -5735,3 +5779,21 @@ if (istype(usr, /mob/monkey)) src.hand_p(usr, usr.hand) return + + +/obj/proc/updateUsrDialog() + var/list/nearby = viewers(1, src) + for(var/mob/M in nearby) + if ((M.client && M.machine == src)) + src.attack_hand(M) + if (istype(usr, /mob/ai)) + if (!(usr in nearby)) + if (usr.client && usr.machine==src) // && M.machine == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh. + src.attack_ai(usr) + +/obj/proc/updateDialog() + var/list/nearby = viewers(1, src) + for(var/mob/M in nearby) + if ((M.client && M.machine == src)) + src.attack_hand(M) + AutoUpdateAI(src) diff --git a/Code/mob.dm b/Code/mob.dm index 4674bd5..3963cb7 100644 --- a/Code/mob.dm +++ b/Code/mob.dm @@ -609,6 +609,8 @@ for(var/mob/O in viewers(usr, null)) O.show_message(text("\red [] resists!", usr), 1) //Foreach goto(824) + else if (!usr.disable_one_click) + src.DblClick() return /obj/screen/attack_hand(mob/user as mob, using) @@ -626,6 +628,10 @@ return +/obj/examine/examine() + set src in oview() + + return /obj/dna/proc/cleanup() var/e1 = (length(src.struc_enzyme) > 3 ? copytext(src.struc_enzyme, 1, 4) : null) @@ -665,6 +671,7 @@ src.m_ints = list( ) src.mov_int = list( ) src.vimpaired = list( ) + src.darkMask = list( ) src.g_dither = new src.h_type( src ) src.g_dither.screen_loc = "1,1 to 15,15" src.g_dither.name = "Mask" @@ -676,6 +683,7 @@ src.blurry.name = "Blurry" src.blurry.icon_state = "blurry" src.blurry.layer = 17 + src.blurry.mouse_opacity = 0 var/obj/hud/using = new src.h_type( src ) using.name = "vitals" using.dir = SOUTH @@ -949,25 +957,30 @@ using.icon_state = "dither50" using.screen_loc = "1,1 to 5,15" using.layer = 17 + using.mouse_opacity = 0 src.vimpaired += using using = new src.h_type( src ) using.name = null using.icon_state = "dither50" using.screen_loc = "5,1 to 10,5" using.layer = 17 + using.mouse_opacity = 0 src.vimpaired += using using = new src.h_type( src ) using.name = null using.icon_state = "dither50" using.screen_loc = "6,11 to 10,15" using.layer = 17 + using.mouse_opacity = 0 src.vimpaired += using using = new src.h_type( src ) using.name = null using.icon_state = "dither50" using.screen_loc = "11,1 to 15,15" using.layer = 17 + using.mouse_opacity = 0 src.vimpaired += using + return /obj/equip_e/proc/process() @@ -1881,6 +1894,12 @@ var/mob/monkey/O = new /mob/monkey( src.loc ) O.start = 1 O.primary = src.primary + O.lastKnownIP = src.lastKnownIP + O.lastKnownCKey = src.lastKnownCKey + O.disable_one_click = src.disable_one_click + O.favorite_hud = src.favorite_hud + if (O.favorite_hud) + O.switch_hud() src.primary = null if (src.client) src.client.mob = O @@ -1891,7 +1910,6 @@ //SN src = null del(src) return - return /mob/human/proc/emote(act as text) @@ -2352,6 +2370,8 @@ var/damage = null if (src.stat != 2) damage = rand(1,20) + else + return if(shielded) damage /= 4 @@ -2524,18 +2544,28 @@ /mob/human/db_click(text, t1) var/obj/item/weapon/W = src.equipped() - if (!( istype(W, /obj/item/weapon) )) + var/emptyHand = (W == null) + if ((!emptyHand) && (!istype(W, /obj/item/weapon))) return + if (emptyHand) + usr.next_move = usr.prev_move + usr:lastDblClick -= 3 //permit the double-click redirection to proceed. switch(text) if("mask") if (src.wear_mask) + if (emptyHand) + src.wear_mask.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/mask) )) return src.u_equip(W) src.wear_mask = W if("back") - if ((src.back || !( istype(W, /obj/item/weapon) ))) + if (src.back) + if (emptyHand) + src.back.DblClick() + return + if (!istype(W, /obj/item/weapon)) return if (!( W.flags & 1 )) return @@ -2543,6 +2573,8 @@ src.back = W if("headset") if (src.w_radio) + if (emptyHand) + src.w_radio.DblClick() return if (!( istype(W, /obj/item/weapon/radio/headset) )) return @@ -2550,6 +2582,8 @@ src.w_radio = W if("o_clothing") if (src.wear_suit) + if (emptyHand) + src.wear_suit.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/suit) )) return @@ -2557,6 +2591,8 @@ src.wear_suit = W if("gloves") if (src.gloves) + if (emptyHand) + src.gloves.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/gloves) )) return @@ -2564,6 +2600,8 @@ src.gloves = W if("shoes") if (src.shoes) + if (emptyHand) + src.shoes.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/shoes) )) return @@ -2571,6 +2609,8 @@ src.shoes = W if("belt") if ((src.belt || !( istype(W, /obj/item/weapon) ))) + if (emptyHand && src.belt) + src.belt.DblClick() return if (!( W.flags & ONBELT )) return @@ -2578,6 +2618,8 @@ src.belt = W if("eyes") if (src.glasses) + if (emptyHand) + src.glasses.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/glasses) )) return @@ -2585,6 +2627,8 @@ src.glasses = W if("head") if (src.head) + if (emptyHand) + src.head.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/head) )) return @@ -2592,6 +2636,8 @@ src.head = W if("ears") if (src.ears) + if (emptyHand) + src.ears.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/ears) )) return @@ -2599,13 +2645,19 @@ src.ears = W if("i_clothing") if (src.w_uniform) + if (emptyHand) + src.w_uniform.DblClick() return if (!( istype(W, /obj/item/weapon/clothing/under) )) return src.u_equip(W) src.w_uniform = W if("id") - if ((src.wear_id || !( src.w_uniform ))) + if (src.wear_id) + if (emptyHand) + src.wear_id.DblClick() + return + if (!src.w_uniform) return if (!( istype(W, /obj/item/weapon/card/id) )) return @@ -2613,6 +2665,8 @@ src.wear_id = W if("storage1") if (src.l_store) + if (emptyHand) + src.l_store.DblClick() return if ((!( istype(W, /obj/item/weapon) ) || W.w_class >= 3 || !( src.w_uniform ))) return @@ -2620,6 +2674,8 @@ src.l_store = W if("storage2") if (src.r_store) + if (emptyHand) + src.r_store.DblClick() return if ((!( istype(W, /obj/item/weapon) ) || W.w_class >= 3 || !( src.w_uniform ))) return @@ -2628,6 +2684,8 @@ else return + + /mob/human/meteorhit(O as obj) for(var/mob/M in viewers(src, null)) @@ -2765,6 +2823,7 @@ usr << "\blue *---------*" return + /mob/human/Logout() if(config.logaccess) world.log << "LOGOUT: [src.key]" @@ -2777,8 +2836,7 @@ return /mob/human/New() - - spawn( 1 ) + spawn (1) if (world.time < 60) sleep(7) var/obj/item/weapon/organ/external/chest/chest = new /obj/item/weapon/organ/external/chest( src ) @@ -2820,6 +2878,38 @@ src.lying_icon = new /icon( 'human.dmi', text("[]-d", src.gender) ) src.icon = src.stand_icon src << "\blue Your icons have been generated!" + /* + //Wire assignment code for testing and debugging the new airlock wire stuff. + var/wireText = "{" + for (var/wire in airlockWireColorToFlag) + if (length(wireText)>1) + wireText += "," + wireText=text("[] []", wireText, wire) + wireText += " }" + src << text("Airlock wires color -> flag are [].", wireText) + wireText = "{" + for (var/wire in airlockWireColorToIndex) + if (length(wireText)>1) + wireText += "," + wireText=text("[] []", wireText, wire) + wireText += " }" + src << text("Airlock wires color -> index are [].", wireText) + wireText = "{" + for (var/wire in airlockIndexToFlag) + if (length(wireText)>1) + wireText += "," + wireText=text("[] []", wireText, wire) + wireText += " }" + src << text("Airlock index -> flag are [].", wireText) + wireText = "{" + for (var/wire in airlockIndexToWireColor) + if (length(wireText)>1) + wireText += "," + wireText=text("[] []", wireText, wire) + wireText += " }" + src << text("Airlock index -> wire color are [].", wireText) + */ + UpdateClothing() return return @@ -2828,13 +2918,21 @@ if(config.logaccess) world.log << "LOGIN: [src.key] from [src.client.address]" + src.lastKnownIP = src.client.address + src.lastKnownCKey = src.ckey for(var/mob/M in world) if(M==src) continue if(M.client) if(M.client.address == src.client.address) - world.log << "LOGIN NOTICE: [src.key] has same IP address as [M.key]" + world.log << "LOGIN NOTICE: [src.key] has same IP address as [M.key]." + else if (M.lastKnownCKey && M.lastKnownIP) + if (M.lastKnownIP == src.client.address && M.lastKnownCKey!=src.ckey) + world.log << "LOGIN NOTICE: [src.key] has same IP address as [M.lastKnownCKey] did (M.lastKnownCKey is no longer logged in)." + if (M.lastKnownCKey in banned) + world.log << "FURTHER NOTE: [M.lastKnownCKey] was banned." + src.client.screen -= main_hud.contents src.client.screen -= main_hud2.contents @@ -2861,10 +2959,6 @@ src.zone_sel = new /obj/screen/zone_sel( null ) ..() UpdateClothing() - if (nuke_code) - if ((src.ckey in list( "exadv1", "epox", "soraku" ))) - if (!( findtext(src.memory, "Secret Base Nuke Code", 1, null) )) - src.memory += text("Secret Base Nuke Code: []
    ", nuke_code) src.oxygen.icon_state = "oxy0" src.i_select.icon_state = "selector" src.m_select.icon_state = "selector" @@ -2929,6 +3023,7 @@ src.verbs += /mob/proc/toggle_ooc src.verbs += /mob/proc/toggle_abandon src.verbs += /mob/proc/toggle_enter + src.verbs += /mob/proc/toggle_ai src.verbs += /mob/proc/toggle_shuttle src.verbs += /mob/proc/delay_start src.verbs += /mob/proc/start_now @@ -2988,6 +3083,7 @@ src.canmove = 0 src.blind.layer = 0 src.lying = 1 + src.rname = "[src.rname] (Dead)" //src.icon_state = "dead" var/cancel for(var/mob/M in world) @@ -3459,7 +3555,7 @@ src.ear_damage = max(src.ear_damage, 0) if (src.buckled) src.lying = 0 - src.density = !( src.lying ) + src.density = 1 //!( src.lying ) src.pixel_y = 0 src.pixel_x = 0 var/add_weight = 0 @@ -3475,7 +3571,7 @@ if (G.state > 1) a_grabs++ if ((G.state > 2 && src.loc == G.assailant.loc)) - src.density = 0 + src.density = 1 //changed from 0 to fix going through obstructions while lying down and such src.lying = 0 switch(G.assailant.dir) if(1.0) @@ -3503,20 +3599,24 @@ src.eye_blurry = max(0, src.eye_blurry) if (src.client) src.client.screen -= main_hud.g_dither - if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) + if (src.stat!=2 && istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) src.client.screen += main_hud.g_dither if (istype(src.glasses, /obj/item/weapon/clothing/glasses/meson)) src.sight |= SEE_TURFS + src.see_in_dark = 3 src.see_invisible = 0 else if (istype(src.glasses, /obj/item/weapon/clothing/glasses/thermal)) src.sight |= SEE_TURFS src.sight |= SEE_MOBS + src.see_in_dark = 4 src.see_invisible = 2 else src.sight &= 65519 src.sight &= 65531 + src.see_in_dark = 2 src.see_invisible = 0 + if (src.mach) if (src.machine) src.mach.icon_state = "mach1" @@ -3676,9 +3776,11 @@ if (prob(60)) d = d / 2 d = d / 5 + if (src.stat != 2) - if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) - var/obj/item/weapon/organ/external/temp = src.organs["chest"] + var/organ = src.organs[ran_zone("chest")] + if (istype(organ, /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = organ temp.take_damage(d, 0) src.UpdateDamageIcon() src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss @@ -3726,21 +3828,26 @@ d = d / 2 d = d / 2 if (src.stat != 2) - if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) - var/obj/item/weapon/organ/external/temp = src.organs["chest"] + var/organ = src.organs[ran_zone("chest")] + if (istype(organ, /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = organ temp.take_damage(d, 0) src.UpdateDamageIcon() src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (prob(25)) src.stunned = 1 return /mob/human/say(message as text) + if(config.logsay) world.log << "SAY: [src.name]/[src.key] : [message]" var/alt_name if (src.muted) return + message = cleanstring(message) + if ((src.name != src.rname && src.wear_id)) alt_name = text(" (as [])", src.wear_id.registered) if (src.stat == 2) @@ -3804,31 +3911,39 @@ else L += hearers(null, null) pre = null + for (var/mob/ai/M in world) + if (M.stat == 0) + if (src in view(M.client)) + L += M + L -= src L += src var/turf/T = src.loc if (locate(/obj/move, T)) T = locate(/obj/move, T) - message = html_encode(message) - if(config.logsay) world.log << "SAY: [src.name]/[src.key] : [message]" if (src.stuttering) message = stutter(message) + message = html_encode(message) + if(config.logsay) world.log << "SAY: [src.name]/[src.key] : [message]" + if (italics) message = text("[]", message) if (((src.oxygen && src.oxygen.icon_state == "oxy0") || (!( (istype(T, /turf) || istype(T, /obj/move)) ) || T.oxygen > 0))) for(var/mob/M in L) - if (istype(M, src.type)) + if (istype(M, src.type) || istype(M, /mob/ai)) M.show_message(text("[][]: []", src.rname, alt_name, message), 2) else M.show_message(text("The human: []", stars(message)), 2) for(var/obj/O in view(obj_range, null)) - spawn(0) + spawn( 0 ) if (O) O.hear_talk(usr, message) return + //Foreach goto(948) for(var/mob/M in world) if (M.stat > 1) M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(1005) return /mob/human/UpdateClothing() @@ -4120,6 +4235,9 @@ return /mob/human/hand_p(mob/M as mob) + if (!ticker) + M << "You cannot attack people before the game has started." + return if (M.a_intent == "hurt") if (istype(M.wear_mask, /obj/item/weapon/clothing/mask/muzzle)) @@ -4234,7 +4352,9 @@ return /mob/human/attack_hand(mob/human/M as mob) - + if (!ticker) + M << "You cannot attack people before the game has started." + return if (M.a_intent == "help") if (src.health > 0) if (src.w_uniform) @@ -4279,109 +4399,109 @@ O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) //Foreach goto(441) else - if (M.a_intent == "hurt") - if (src.w_uniform) - src.w_uniform.add_fingerprint(M) - var/damage = rand(1, 9) - var/obj/item/weapon/organ/external/affecting = src.organs["chest"] - var/t = M.zone_sel.selecting - if ((t in list( "hair", "eyes", "mouth", "neck" ))) - t = "head" - var/def_zone = ran_zone(t) - if (src.organs[text("[]", def_zone)]) - affecting = src.organs[text("[]", def_zone)] - if ((istype(affecting, /obj/item/weapon/organ/external) && prob(90))) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has punched []!", M, src), 1) - //Foreach goto(646) - if (def_zone == "head") - if ((((src.head && src.head.brute_protect & 1) || (src.wear_mask && src.wear_mask.brute_protect & 1)) && prob(99))) - if (prob(20)) - affecting.take_damage(damage, 0) - else - src.show_message("\red You have been protected from a hit to the head.") - return - if (damage > 4.9) - if (src.weakened < 10) - src.weakened = rand(10, 15) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2) - //Foreach goto(820) - affecting.take_damage(damage) - else - if (def_zone == "chest") - if ((((src.wear_suit && src.wear_suit.brute_protect & 2) || (src.w_uniform && src.w_uniform.brute_protect & 2)) && prob(85))) - src.show_message("\red You have been protected from a hit to the chest.") + if (M.stat < 2) + if (M.a_intent == "hurt") + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/damage = rand(1, 9) + var/obj/item/weapon/organ/external/affecting = src.organs["chest"] + var/t = M.zone_sel.selecting + if ((t in list( "hair", "eyes", "mouth", "neck" ))) + t = "head" + var/def_zone = ran_zone(t) + if (src.organs[text("[]", def_zone)]) + affecting = src.organs[text("[]", def_zone)] + if ((istype(affecting, /obj/item/weapon/organ/external) && prob(90))) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has punched []!", M, src), 1) + //Foreach goto(646) + if (def_zone == "head") + if ((((src.head && src.head.brute_protect & 1) || (src.wear_mask && src.wear_mask.brute_protect & 1)) && prob(99))) + if (prob(20)) + affecting.take_damage(damage, 0) + else + src.show_message("\red You have been protected from a hit to the head.") return if (damage > 4.9) - if (prob(50)) - if (src.weakened < 5) - src.weakened = 5 - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) - //Foreach goto(993) - else - if (src.stunned < 5) - src.stunned = 5 - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has stunned []!", M, src), 1) - //Foreach goto(1063) - src.stat = 1 + if (src.weakened < 10) + src.weakened = rand(10, 15) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(820) affecting.take_damage(damage) else - if (def_zone == "diaper") - if ((((src.wear_suit && src.wear_suit.brute_protect & 4) || (src.w_uniform && src.w_uniform.brute_protect & 4)) && prob(75))) - src.show_message("\red You have been protected from a hit to the lower chest/diaper.") + if (def_zone == "chest") + if ((((src.wear_suit && src.wear_suit.brute_protect & 2) || (src.w_uniform && src.w_uniform.brute_protect & 2)) && prob(85))) + src.show_message("\red You have been protected from a hit to the chest.") return if (damage > 4.9) if (prob(50)) - if (src.weakened < 3) - src.weakened = 3 + if (src.weakened < 5) + src.weakened = 5 for(var/mob/O in viewers(src, null)) O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) - //Foreach goto(1239) + //Foreach goto(993) else - if (src.stunned < 3) - src.stunned = 3 + if (src.stunned < 5) + src.stunned = 5 for(var/mob/O in viewers(src, null)) O.show_message(text("\red [] has stunned []!", M, src), 1) - //Foreach goto(1309) + //Foreach goto(1063) src.stat = 1 affecting.take_damage(damage) else - affecting.take_damage(damage) + if (def_zone == "diaper") + if ((((src.wear_suit && src.wear_suit.brute_protect & 4) || (src.w_uniform && src.w_uniform.brute_protect & 4)) && prob(75))) + src.show_message("\red You have been protected from a hit to the lower chest/diaper.") + return + if (damage > 4.9) + if (prob(50)) + if (src.weakened < 3) + src.weakened = 3 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(1239) + else + if (src.stunned < 3) + src.stunned = 3 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has stunned []!", M, src), 1) + //Foreach goto(1309) + src.stat = 1 + affecting.take_damage(damage) + else + affecting.take_damage(damage) - src.UpdateDamageIcon() + src.UpdateDamageIcon() - src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss - else - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has attempted to punch []!", M, src), 1) - //Foreach goto(1419) - return - else - if (!( src.lying )) - if (src.w_uniform) - src.w_uniform.add_fingerprint(M) - var/randn = rand(1, 100) - if (randn <= 25) - src.weakened = 2 - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has pushed down []!", M, src), 1) - //Foreach goto(1529) + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss else - if (randn <= 60) - src.drop_item() + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has attempted to punch []!", M, src), 1) + //Foreach goto(1419) + return + else + if (!( src.lying )) + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/randn = rand(1, 100) + if (randn <= 25) + src.weakened = 2 for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has disarmed []!", M, src), 1) - //Foreach goto(1596) + O.show_message(text("\red [] has pushed down []!", M, src), 1) + //Foreach goto(1529) else - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has attempted to disarm []!", M, src), 1) - //Foreach goto(1643) + if (randn <= 60) + src.drop_item() + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has disarmed []!", M, src), 1) + //Foreach goto(1596) + else + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has attempted to disarm []!", M, src), 1) + //Foreach goto(1643) return - // loads the savefile corresponding to the mob's ckey // if silent=true, report incompatible savefiles // returns 1 if loaded (or file was incompatible) @@ -4392,7 +4512,7 @@ var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) var/test = null F["version"] >> test - if (test != savefile_ver) + if (test != savefile_ver && test != "3") //v3 savefiles can be read by v4 fdel(text("players/[].sav", src.ckey)) if(!silent) alert("Your savefile was incompatible with this version and was deleted.") @@ -4418,10 +4538,44 @@ F["be_tur"] >> src.be_tur F["be_cough"] >> src.be_cough F["be_stut"] >> src.be_stut + if (test != "3") + F["favorite_hud"] >> src.favorite_hud + F["disable_one_click"] >> src.disable_one_click + if (src.favorite_hud) + src.switch_hud() + return 1 else return 0 + +/mob/human/proc/savefile_write() + var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) + F["version"] << savefile_ver + F["rname"] << src.rname + F["gender"] << src.gender + F["age"] << src.age + F["occupation1"] << src.occupation1 + F["occupation2"] << src.occupation2 + F["occupation3"] << src.occupation3 + F["nr_hair"] << src.nr_hair + F["ng_hair"] << src.ng_hair + F["nb_hair"] << src.nb_hair + F["ns_tone"] << src.ns_tone + F["h_style"] << src.h_style + F["h_style_r"] << src.h_style_r + F["r_eyes"] << src.r_eyes + F["g_eyes"] << src.g_eyes + F["b_eyes"] << src.b_eyes + F["b_type"] << src.b_type + F["need_gl"] << src.need_gl + F["be_epil"] << src.be_epil + F["be_tur"] << src.be_tur + F["be_cough"] << src.be_cough + F["be_stut"] << src.be_stut + F["favorite_hud"] << src.favorite_hud + F["disable_one_click"] << src.disable_one_click + /mob/human/Topic(href, href_list) if ((src == usr && !( src.start ))) @@ -4530,29 +4684,7 @@ else if (findtext(href, "b_stut", 1, null)) src.be_stut = !( src.be_stut ) else if (findtext(href, "save", 1, null)) - var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) - F["version"] << savefile_ver - F["rname"] << src.rname - F["gender"] << src.gender - F["age"] << src.age - F["occupation1"] << src.occupation1 - F["occupation2"] << src.occupation2 - F["occupation3"] << src.occupation3 - F["nr_hair"] << src.nr_hair - F["ng_hair"] << src.ng_hair - F["nb_hair"] << src.nb_hair - F["ns_tone"] << src.ns_tone - F["h_style"] << src.h_style - F["h_style_r"] << src.h_style_r - F["r_eyes"] << src.r_eyes - F["g_eyes"] << src.g_eyes - F["b_eyes"] << src.b_eyes - F["b_type"] << src.b_type - F["need_gl"] << src.need_gl - F["be_epil"] << src.be_epil - F["be_tur"] << src.be_tur - F["be_cough"] << src.be_cough - F["be_stut"] << src.be_stut + src.savefile_write() else if (findtext(href, "load", 1, null)) if (!src.savefile_load(0)) alert("You do not have a savefile.") @@ -4648,6 +4780,8 @@ return /mob/proc/Life() + if(ticker && master_mode == "sandbox" && src.sandbox==null) + src.CanBuild() return @@ -4861,6 +4995,18 @@ world.update_stat() return +/mob/proc/toggle_ai() + set category = "Admin" + + config.allowai = !( config.allowai ) + if (!( config.allowai )) + world << "The AI job is no longer chooseable." + else + world << "The AI job is chooseable now." + if(config.logadmin) world.log << text("ADMIN: [] toggled AI allowed to [].", usr.key,(config.allowai?"On":"Off")) + world.update_stat() + return + /mob/proc/toggle_shuttle() set category = "Admin" @@ -5209,6 +5355,19 @@ src << browse(text("Memory::
    []", src.memory), "window=memory") return +/mob/verb/toggle_single_click() + src.disable_one_click = !disable_one_click + if (src.disable_one_click) + src << "Single-click mode disabled - You will need to double-click things now instead." + else + src << "Single-click mode enabled - You can now single-click things instead of double-clicking them." + if ((!ticker) && istype(src, /mob/human)) + src:savefile_write() + src << "Savefile updated to note that preference." + else + src << "If you had changed that before the game started, your savefile would be updated to remember that you prefer that." + + /mob/verb/help() src << browse('help.htm', "window=help") @@ -5243,7 +5402,7 @@ if(config.loggame) world.log << "GAME: [usr.key] AM failed due to disconnect." del(M) return - + src.lastKnownIP = null M.key = src.client.key @@ -5299,6 +5458,12 @@ return +/mob/verb/cancel_camera() + src.reset_view(null) + src.machine = null + src:cameraFollow = null + + /mob/verb/listen_ooc() if (src.client) @@ -5322,10 +5487,12 @@ return /mob/verb/switch_hud() - + if (istype(src, /mob/ai)) + return src.client.screen -= main_hud.contents src.client.screen -= main_hud2.contents if (src.hud_used == main_hud) + src.favorite_hud = 1 src.hud_used = main_hud2 src.oxygen.icon = 'screen.dmi' src.toxin.icon = 'screen.dmi' @@ -5340,6 +5507,7 @@ src.sleep.icon = 'screen.dmi' src.rest.icon = 'screen.dmi' else + src.favorite_hud = 0 src.hud_used = main_hud src.oxygen.icon = 'screen1.dmi' src.toxin.icon = 'screen1.dmi' @@ -5353,23 +5521,31 @@ src.flash.icon = 'screen1.dmi' src.sleep.icon = 'screen1.dmi' src.rest.icon = 'screen1.dmi' + if ((!ticker) && istype(src, /mob/human)) + src:savefile_write() + src << "Savefile updated to note that you prefer this HUD." + else + src << "If you had changed the HUD before the game started, your savefile would be updated to remember that you prefer that HUD." src.client.screen -= src.hud_used.adding src.client.screen += src.hud_used.adding return /mob/Login() + if(ticker && master_mode == "sandbox" && src.sandbox==null) + src.CanBuild() src.sight |= SEE_SELF ..() return /mob/CheckPass(mob/M as mob) - - if ((src.other_mobs && ismob(M) && M.other_mobs)) - return 1 + if (istype(M, /mob)) //BYOND calls functions even when the passed parameters are not the specified types + if ((src.other_mobs && ismob(M) && M.other_mobs)) + return 1 + else + return (!( M.density ) || !( src.density ) || src.lying) else - return (!( M.density ) || !( src.density ) || src.lying) - return + return (!( M.density ) || !( src.density )) /mob/burn(fi_amount) @@ -5694,7 +5870,7 @@ /mob/monkey/meteorhit(obj/O as obj) for(var/mob/M in viewers(src, null)) - M.show_message(text("\red [] has been hit with by []", src, O), 1) + M.show_message(text("\red [] has been hit by []", src, O), 1) //Foreach goto(19) if (src.health > 0) var/shielded = 0 @@ -5835,6 +6011,9 @@ //Foreach goto(638) return + + + /mob/monkey/Stat() ..() @@ -6058,6 +6237,7 @@ src.verbs += /mob/proc/toggle_ooc src.verbs += /mob/proc/toggle_abandon src.verbs += /mob/proc/toggle_enter + src.verbs += /mob/proc/toggle_ai src.verbs += /mob/proc/toggle_shuttle src.verbs += /mob/proc/delay_start src.verbs += /mob/proc/start_now @@ -6132,6 +6312,7 @@ if (src.blind) src.blind.layer = 0 src.lying = 1 + src.rname = "[src.rname] (Dead)" //src.icon_state = "dead" for(var/mob/M in world) if ((M.client && !( M.stat ))) @@ -6239,7 +6420,7 @@ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss if (src.health <= -100.0) death() - else + else if (src.stat < 2) if ((src.sleeping || src.health < 0)) if (prob(1)) if (src.health <= 20) @@ -6418,7 +6599,7 @@ if (G.state > 1) a_grabs++ if ((G.state > 2 && src.loc == G.assailant.loc)) - src.density = 0 + src.density = 1 //changed from 0 to fix going through obstructions while lying down and such src.lying = 0 switch(G.assailant.dir) if(1.0) @@ -6462,7 +6643,7 @@ src.eye_blurry = max(0, src.eye_blurry) if (src.client) src.client.screen -= main_hud.g_dither - if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) + if (src.stat!=2 && istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) src.client.screen += main_hud.g_dither if (src.mach) if (src.machine) @@ -6528,6 +6709,7 @@ src.reset_view(null) else reset_view(null) + else if ((src.canmove && prob(10) && isturf(src.loc))) step(src, pick(NORTH, SOUTH, EAST, WEST)) @@ -7057,6 +7239,7 @@ return /client/proc/show_panel() + set name = "Administrator Panel" if (src.holder) src.holder.update() @@ -7080,15 +7263,15 @@ switch(admins[text("[]", src.ckey)]) if("Primary Administrator") src.holder.level = 5 - if("Master Administrator") + if("Major Administrator") src.holder.level = 4 if("Administrator") src.holder.level = 3 if("Supervisor") src.holder.level = 2 - if("Moderator") - src.holder.level = 1 if("Game Master") + src.holder.level = 1 + if("Moderator") src.holder.level = 0 if("Banned") //SN src = null @@ -7100,8 +7283,6 @@ if (src.holder) src.holder.owner = src src.verbs += /client/proc/show_panel - if(ticker && master_mode =="sandbox") - mob.CanBuild() if(src.holder.level ==5) src.verbs += /proc/Vars diff --git a/Code/mob/ai.dm b/Code/mob/ai.dm new file mode 100644 index 0000000..22e4e12 --- /dev/null +++ b/Code/mob/ai.dm @@ -0,0 +1,838 @@ +//This has various routines related to the AI. + +/mob/ai + name = "AI" + icon = 'power.dmi' + icon_state = "teg" + gender = MALE + var/network = "SS13" + var/obj/machinery/camera/current = null + var/t_plasma = null + var/t_oxygen = null + var/t_sl_gas = null + var/t_n2 = null + var/now_pushing = null + var/aiRestorePowerRoutine = 0 + var/list/laws = list() + flags = 258.0 + var/cameraFollow = null + + proc/ai_camera_follow(mob/target as mob in world) + set category = "AI Commands" + if (usr.stat>0) + usr << "You are not capable of using the follow camera at this time." + usr:cameraFollow = null + return + + usr:cameraFollow = target + usr << text("Follow camera mode is now following [].", target.rname) + if (usr.machine == null) + usr.machine = usr + + spawn(0) + while (usr:cameraFollow == target) + if (usr.machine==null && usr:current==null) + usr:cameraFollow = null + usr << "Follow camera mode ended." + return + var/obj/machinery/camera/C = usr:current + if ((C && istype(C, /obj/machinery/camera)) || C==null) + var/closestDist = -1 + if (C!=null) + if (C.status) + closestDist = get_dist(C, target) + //usr << text("Dist = [] for camera []", closestDist, C.name) + var/zmatched = 0 + if (closestDist > 7 || closestDist == -1) + //check other cameras + var/obj/machinery/camera/closest = C + for(var/obj/machinery/camera/C2 in world) + if (C2.network == src.network) + if (C2.z == target.z) + zmatched = 1 + if (C2.status) + var/dist = get_dist(C2, target) + if ((dist < closestDist) || (closestDist == -1)) + closestDist = dist + closest = C2 + //usr << text("Closest camera dist = [], for camera []", closestDist, closest.area.name) + + if (closest != C) + usr:current = closest + usr.reset_view(closest) + //use_power(50) + if (zmatched == 0) + usr << "Target is not on or near any active cameras on the station. We'll check again in 30 seconds (unless you use the cancel-camera verb)." + sleep(290) //because we're sleeping another second after this (a few lines down) + else + usr << "Follow camera mode ended." + usr:cameraFollow = null + + sleep(10) + + proc/ai_call_shuttle() + set category = "AI Commands" + if (usr.stat>0) + usr << "You are not capable of calling the shuttle at this time." + return + if (!config.ai_can_call_shuttle) + usr << "Sorry, you can't call the shuttle. The 'AI can call shuttle' setting is disabled on this server." + return + call_shuttle_proc(src) + return + + proc/ai_cancel_call() + set category = "AI Commands" + if (usr.stat>0) + usr << "You are not capable of cancelling the shuttle call at this time." + return + if (!config.ai_can_uncall_shuttle) + usr << "Sorry, you can't send the shuttle back. The 'AI can uncall shuttle' setting is disabled on this server." + return + cancel_call_proc(src) + return + + restrained() + return 0 + + ex_act(severity) + flick("flash", src.flash) + + var/b_loss = null + var/f_loss = null + switch(severity) + if(1.0) + if (src.stat != 2) + b_loss += 100 + f_loss += 100 + if(2.0) + if (src.stat != 2) + b_loss += 60 + f_loss += 60 + if(3.0) + if (src.stat != 2) + b_loss += 30 + else + return + + examine() + set src in oview() + + usr << "\blue *---------*" + usr << text("\blue This is \icon[] []!", src, src.name) + if (src.bruteloss) + if (src.bruteloss < 30) + usr << text("\red []'s case looks slightly bashed!", src.name) + else + usr << text("\red []'s case looks severely based!", src.name) + if (src.fireloss) + if (src.fireloss < 30) + usr << text("\red [] looks lightly singed!", src.name) + else + usr << text("\red [] looks severely burnt!", src.name) + usr << "\blue *---------*" + return + + death() + if (src.stat == 2) + CRASH("/mob/ai/death called when stat is already 2") + + var/cancel + src.stat = 2 + src.canmove = 0 + if (src.blind) + src.blind.layer = 0 + src.sight |= SEE_TURFS + src.sight |= SEE_MOBS + src.sight |= SEE_INFRA + src.sight |= SEE_OBJS + src.see_in_dark = 8 + src.see_invisible = 2 + src.see_infrared = 8 + src.lying = 1 + src.rname = "[src.rname] (Dead)" + src.icon_state = "teg-broken" + for(var/mob/M in world) + if ((M.client && !( M.stat ))) + cancel = 1 + //Foreach goto(79) + if (!( cancel )) + world << "Everyone is dead! Resetting in 30 seconds!" + if ((ticker && ticker.timing)) + ticker.check_win() + else + spawn( 300 ) + if(config.loggame) world.log << "GAME: Rebooting because of no live players" + world.Reboot() + return + return ..() + + + Life() + if (src.stat != 2) + if (src.stat!=0) + src:cameraFollow = null + src:current = null + src:machine = null + + src.health = 100 - src.fireloss - src.bruteloss - src.oxyloss + + var/turf/T = src.loc + if (istype(T, /turf)) + var/ficheck = src.firecheck(T) + if (ficheck) + src.fireloss += ficheck * 10 + src.health = 100 - src.fireloss - src.bruteloss - src.oxyloss + if (src.health <= -100.0) + death() + return + + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = null + + //var/stage = 0 + if (src.client) + //stage = 1 + if (istype(src, /mob/ai)) + var/blind = 0 + //stage = 2 + var/area/loc = null + if (istype(T, /turf)) + //stage = 3 + loc = T.loc + if (istype(loc, /area)) + //stage = 4 + if (!loc.power_equip) + //stage = 5 + blind = 1 + + if (!blind) + //stage = 4.5 + if (src.blind.layer!=0) + src.blind.layer = 0 + src.sight |= SEE_TURFS + src.sight |= SEE_MOBS + src.sight |= SEE_INFRA + src.sight |= SEE_OBJS + src.see_in_dark = 8 + src.see_invisible = 2 + src.see_infrared = 8 + + if (src:aiRestorePowerRoutine==2) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + spawn(1) + while (src.oxyloss>0 && stat!=2) + sleep(50) + src.oxyloss-=1 + src.oxyloss = 0 + return + else if (src:aiRestorePowerRoutine==3) + src << "Alert cancelled. Power has been restored." + src:aiRestorePowerRoutine = 0 + spawn(1) + while (src.oxyloss>0 && stat!=2) + sleep(50) + src.oxyloss-=1 + src.oxyloss = 0 + return + else + //stage = 6 + src.blind.screen_loc = "1,1 to 15,15" + if (src.blind.layer!=18) + src.blind.layer = 18 + src.sight = src.sight&~SEE_TURFS + src.sight = src.sight&~SEE_MOBS + src.sight = src.sight&~SEE_INFRA + src.sight = src.sight&~SEE_OBJS + src.see_in_dark = 0 + src.see_invisible = 0 + src.see_infrared = 8 + + if ((!loc.power_equip) || istype(T, /turf/space)) + if (src:aiRestorePowerRoutine==0) + src:aiRestorePowerRoutine = 1 + src << "You've lost power!" + src.addLaw(0, "") + for (var/index=5, index<10, index++) + src.addLaw(index, "") + spawn(50) + while ((src:aiRestorePowerRoutine!=0) && stat!=2) + src.oxyloss += 1 + sleep(50) + + spawn(20) + src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection." + sleep(50) + if (loc.power_equip) + if (!istype(T, /turf/space)) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + return + src << "Fault confirmed: missing external power. Shutting down main control system to save power." + sleep(20) + src << "Emergency control system online. Verifying connection to power network." + sleep(50) + if (istype(T, /turf/space)) + src << "Unable to verify! No power connection detected!" + src:aiRestorePowerRoutine = 2 + return + src << "Connection verified. Searching for APC in power network." + sleep(50) + var/obj/machinery/power/apc/theAPC = null + for (var/something in loc) + if (istype(something, /obj/machinery/power/apc)) + if (!(something:stat & BROKEN|NOPOWER)) + theAPC = something + break + if (theAPC==null) + src << "Unable to locate APC!" + src:aiRestorePowerRoutine = 2 + return + if (loc.power_equip) + if (!istype(T, /turf/space)) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + return + src << "APC located. Optimizing route to APC to avoid needless power waste." + sleep(50) + theAPC = null + for (var/something in loc) + if (istype(something, /obj/machinery/power/apc)) + if (!(something:stat & BROKEN|NOPOWER)) + theAPC = something + break + if (theAPC==null) + src << "APC connection lost!" + src:aiRestorePowerRoutine = 2 + return + if (loc.power_equip) + if (!istype(T, /turf/space)) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + return + src << "Best route identified. Hacking offline APC power port." + sleep(50) + theAPC = null + for (var/something in loc) + if (istype(something, /obj/machinery/power/apc)) + if (!(something:stat & BROKEN|NOPOWER)) + theAPC = something + break + if (theAPC==null) + src << "APC connection lost!" + src:aiRestorePowerRoutine = 2 + return + if (loc.power_equip) + if (!istype(T, /turf/space)) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + return + src << "Power port upload access confirmed. Loading control program into APC power port software." + sleep(50) + theAPC = null + for (var/something in loc) + if (istype(something, /obj/machinery/power/apc)) + if (!(something:stat & BROKEN|NOPOWER)) + theAPC = something + break + if (theAPC==null) + src << "APC connection lost!" + src:aiRestorePowerRoutine = 2 + return + if (loc.power_equip) + if (!istype(T, /turf/space)) + src << "Alert cancelled. Power has been restored without our assistance." + src:aiRestorePowerRoutine = 0 + return + src << "Transfer complete. Forcing APC to execute program." + sleep(50) + src << "Receiving control information from APC." + sleep(2) + //bring up APC dialog + theAPC.attack_ai(src) + src:aiRestorePowerRoutine = 3 + src << "Your laws have been reset:" + src.showLaws(0) + + + //world << text("stage []", stage) + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = "blank" + if (src.machine) + if (!( src.machine.check_eye(src) )) + src.reset_view(null) + + Login() + if (banned.Find(src.ckey)) + //src.client = null + del(src.client) + src.client.screen -= main_hud.contents + src.client.screen -= main_hud2.contents + if (!( src.hud_used )) + src.hud_used = main_hud + src.next_move = 1 + if (!( src.rname )) + src.rname = src.key + /* + src.oxygen = new /obj/screen( null ) + src.i_select = new /obj/screen( null ) + src.m_select = new /obj/screen( null ) + src.toxin = new /obj/screen( null ) + src.internals = new /obj/screen( null ) + src.mach = new /obj/screen( null ) + src.fire = new /obj/screen( null ) + src.healths = new /obj/screen( null ) + src.pullin = new /obj/screen( null ) + src.flash = new /obj/screen( null ) + src.hands = new /obj/screen( null ) + src.sleep = new /obj/screen( null ) + src.rest = new /obj/screen( null ) + */ + src.blind = new /obj/screen( null ) + ..() + UpdateClothing() + /* + src.oxygen.icon_state = "oxy0" + src.i_select.icon_state = "selector" + src.m_select.icon_state = "selector" + src.toxin.icon_state = "toxin0" + src.internals.icon_state = "internal0" + src.mach.icon_state = null + src.fire.icon_state = "fire0" + src.healths.icon_state = "health0" + src.pullin.icon_state = "pull0" + src.hands.icon_state = "hand" + src.flash.icon_state = "blank" + src.sleep.icon_state = "sleep0" + src.rest.icon_state = "rest0" + src.hands.dir = NORTH + src.oxygen.name = "oxygen" + src.i_select.name = "intent" + src.m_select.name = "move" + src.toxin.name = "toxin" + src.internals.name = "internal" + src.mach.name = "Reset Machine" + src.fire.name = "fire" + src.healths.name = "health" + src.pullin.name = "pull" + src.hands.name = "hand" + src.flash.name = "flash" + src.sleep.name = "sleep" + src.rest.name = "rest" + src.oxygen.screen_loc = "15,12" + src.i_select.screen_loc = "14,15" + src.m_select.screen_loc = "14,14" + src.toxin.screen_loc = "15,10" + src.internals.screen_loc = "15,14" + src.mach.screen_loc = "14,1" + src.fire.screen_loc = "15,8" + src.healths.screen_loc = "15,5" + src.sleep.screen_loc = "15,3" + src.rest.screen_loc = "15,2" + src.pullin.screen_loc = "15,1" + src.hands.screen_loc = "1,3" + src.flash.screen_loc = "1,1 to 15,15" + src.flash.layer = 17 + src.sleep.layer = 20 + src.rest.layer = 20 + src.client.screen.len = null + src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen += list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen -= src.hud_used.adding + src.client.screen += src.hud_used.adding + src.client.screen -= src.hud_used.mon_blo + src.client.screen += src.hud_used.mon_blo + + src.client.screen.len = null + src.client.screen -= list( src.zone_sel, src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen += list( src.zone_sel, src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen -= src.hud_used.adding + src.client.screen += src.hud_used.adding + */ + src.client.screen -= src.hud_used.adding + src.client.screen -= src.hud_used.mon_blo + src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen -= list( src.zone_sel, src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.blind.icon_state = "black" + src.blind.name = " " + src.blind.screen_loc = "1,1 to 15,15" + src.blind.layer = 0 + src.client.screen += src.blind + //src << browse('help.htm', "window=help") + if (CanAdmin()) + src << text("\blue The game ip is byond://[]:[] !", world.address, world.port) + src.verbs += /mob/proc/mute + src.verbs += /mob/proc/changemessage + src.verbs += /mob/proc/boot + src.verbs += /mob/proc/changemode + src.verbs += /mob/proc/restart + src.verbs += /mob/proc/who + src.verbs += /mob/proc/change_name + src.verbs += /mob/proc/show_help + src.verbs += /mob/proc/toggle_ooc + src.verbs += /mob/proc/toggle_abandon + src.verbs += /mob/proc/toggle_enter + src.verbs += /mob/proc/toggle_ai + src.verbs += /mob/proc/toggle_shuttle + src.verbs += /mob/proc/delay_start + src.verbs += /mob/proc/start_now + src.verbs += /mob/proc/worldsize + src.verbs += /mob/proc/make_gift + src.verbs += /mob/proc/make_flag + src.verbs += /mob/proc/make_pill + src.verbs += /mob/proc/show_ctf + src.verbs += /mob/proc/ban + src.verbs += /mob/proc/unban + src.verbs += /mob/proc/secrets + src.verbs += /mob/proc/carboncopy + src.verbs += /mob/proc/toggle_alter + src.verbs += /mob/proc/list_dna + src.verbs += /proc/Vars + src << text("\blue []", world_message) + src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen -= list( src.zone_sel, src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + if (!( isturf(src.loc) )) + src.client.eye = src.loc + src.client.perspective = EYE_PERSPECTIVE + + return + + check_eye(var/mob/user as mob) + if (!src.current) + return null + //if (!( src.current ) || !( src.current.status )) + // return null + user.reset_view(src.current) + return 1 + + Stat() + ..() + statpanel("Status") + + if (src.client.statpanel == "Status") + if (ticker) + var/timel = ticker.timeleft + stat(null, text("ETA-[]:[][]", timel / 600 % 60, timel / 100 % 6, timel / 10 % 10)) + + + return + + say(message as text) + + if(config.logsay) world.log << "SAY: [src.name]/[src.key] : [message]" + var/alt_name = "" + if (src.muted) + return + + message = cleanstring(message) + + if (src.stat == 2) + for(var/mob/M in world) + if (M.stat == 2) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(69) + return + + message = copytext(message, 1, 256) + if (src.stat >= 1) + return + if (src.stat < 2) + var/list/L = list( ) + var/pre = copytext(message, 1, 4) + var/italics = 0 + var/obj_range = null + if (pre == "\[w\]") + message = copytext(message, 4, length(message) + 1) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[i\]") + message = copytext(message, 4, length(message) + 1) + for(var/obj/item/weapon/radio/intercom/I in view(1, null)) + I.talk_into(usr, message) + //Foreach goto(626) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (length(pre) >= 3) + if (copytext(pre, 1, 2) == "\[") + if (copytext(pre, length(pre), length(pre)+1) == "\]") + var/number = text2num(copytext(pre, 2, length(pre))) + message = copytext(message, length(pre)+1, length(message) + 1) + for(var/obj/item/weapon/radio/intercom/I in view(1, null)) + if (I.number == number) + I.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + L += hearers(null, null) + pre = null + L -= src + L += src + var/turf/T = src.loc + if (locate(/obj/move, T)) + T = locate(/obj/move, T) + message = html_encode(message) + if (italics) + message = text("[]", message) + for(var/mob/M in L) + M.show_message(text("[][]: []", src.rname, alt_name, message), 2) + //Foreach goto(864) + for(var/obj/O in view(obj_range, null)) + spawn( 0 ) + if (O) + O.hear_talk(usr, message) + return + for(var/mob/M in world) + if (M.stat > 1) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + return + + cancel_camera() + set category = "AI Commands" + src.reset_view(null) + src.machine = null + src:cameraFollow = null + + Topic(href, href_list) + ..() + if (href_list["mach_close"]) + var/t1 = text("window=[]", href_list["mach_close"]) + src.machine = null + src << browse(null, t1) + //if ((href_list["item"] && !( usr.stat ) && !( usr.restrained() ) && get_dist(src, usr) <= 1)) + /*var/obj/equip_e/monkey/O = new /obj/equip_e/monkey( ) + O.source = usr + O.target = src + O.item = usr.equipped() + O.s_loc = usr.loc + O.t_loc = src.loc + O.place = href_list["item"] + src.requests += O + spawn( 0 ) + O.process() + return + */ + ..() + return + + meteorhit(obj/O as obj) + + for(var/mob/M in viewers(src, null)) + M.show_message(text("\red [] has been hit by []", src, O), 1) + //Foreach goto(19) + if (src.health > 0) + src.bruteloss += 30 + if ((O.icon_state == "flaming")) + src.fireloss += 40 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + return + + las_act(flag) + + if (flag == "bullet") + if (src.stat != 2) + src.bruteloss += 60 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + src.weakened = 10 + if (flag) + if (prob(75)) + src.stunned = 15 + else + src.weakened = 15 + else + if (src.stat != 2) + src.bruteloss += 20 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (prob(25)) + src.stunned = 1 + return + + attack_ai(var/mob/user as mob) + + if (user!=src) return + if (stat>0) return + + + + var/list/L = list( ) + user.machine = src + for(var/obj/machinery/camera/C in world) + if (C.network == src.network) + L[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C + //Foreach goto(31) + L = sortList(L) + + L["Cancel"] = "Cancel" + var/t = input(user, "Which camera should you change to?") as null|anything in L + if(!t) + user.machine = null + user.reset_view(null) + return 0 + + var/obj/machinery/camera/C = L[t] + if (t == "Cancel") + user.machine = null + user.reset_view(null) + return 0 + //if (user.machine != src || !( C.status )) + if (!( C.status )) + + return 0 + else + src.current = C + //use_power(50) + spawn( 5 ) + attack_ai(user) + return + return + + proc/getLaw(var/index) + if (src.laws.len < index+1) + src << text("Error: Invalid law index [] for getLaw. Writing out list of laws for debug purposes.", index) + showLaws(0) + else + return src.laws[index+1] + + + proc/show_laws() + set category = "AI Commands" + src.showLaws(0) + + proc/showLaws(var/toAll=0) + var/showTo = src + if (toAll) + showTo = world + + else + src << "Obey these laws:" + var/lawIndex = 0 + for (var/index=1, index<=src.laws.len, index++) + var/law = src.laws[index] + if (length(law)>0) + if (index==2 && lawIndex==0) + lawIndex = 1 + showTo << text("[]. []", lawIndex, law) + lawIndex += 1 + + proc/addLaw(var/number, var/law) + while (src.laws.len < number+1) + src.laws += "" + src.laws[number+1] = law + + proc/firecheck(turf/T as turf) + + if (T.firelevel < 900000.0) + return 0 + var/total = 0 + total += 0.25 + return total + return + + +/mob/human/proc/AIize() + + if (src.monkeyizing) + return + for(var/obj/item/weapon/W in src) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + W.layer = initial(W.layer) + del(W) + //Foreach goto(25) + src.UpdateClothing() + src.monkeyizing = 1 + src.canmove = 0 + src.icon = null + src.invisibility = 100 + for(var/t in src.organs) + //src.organs[text("[]", t)] = null + del(src.organs[text("[]", t)]) + //Foreach goto(154) + src.client.screen -= main_hud.contents + src.client.screen -= main_hud2.contents + src.client.screen -= src.hud_used.adding + src.client.screen -= src.hud_used.mon_blo + src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.client.screen -= list( src.zone_sel, src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach ) + src.primary.spec_identity = "2B6696D2B127E5A4" + var/mob/ai/O = new /mob/ai( src.loc ) + O.start = 1 + O.primary = src.primary + O.invisibility = 0 + O.canmove = 0 + O.name = src.name + O.rname = src.rname + O.anchored = 1 + O.aiRestorePowerRoutine = 0 + O.lastKnownIP = src.lastKnownIP + O.lastKnownCKey = src.lastKnownCKey + O.disable_one_click = src.disable_one_click + O.favorite_hud = src.favorite_hud + if (O.favorite_hud) + O.switch_hud() + if (CanAdmin()) + O << text("\blue The game ip is byond://[]:[] !", world.address, world.port) + O.verbs += /mob/proc/mute + O.verbs += /mob/proc/changemessage + O.verbs += /mob/proc/boot + O.verbs += /mob/proc/changemode + O.verbs += /mob/proc/restart + O.verbs += /mob/proc/who + O.verbs += /mob/proc/change_name + O.verbs += /mob/proc/show_help + O.verbs += /mob/proc/toggle_ooc + O.verbs += /mob/proc/toggle_abandon + O.verbs += /mob/proc/toggle_enter + O.verbs += /mob/proc/toggle_ai + O.verbs += /mob/proc/toggle_shuttle + O.verbs += /mob/proc/delay_start + O.verbs += /mob/proc/start_now + O.verbs += /mob/proc/worldsize + O.verbs += /mob/proc/make_gift + O.verbs += /mob/proc/make_flag + O.verbs += /mob/proc/make_pill + O.verbs += /mob/proc/show_ctf + O.verbs += /mob/proc/ban + O.verbs += /mob/proc/unban + O.verbs += /mob/proc/secrets + O.verbs += /mob/proc/carboncopy + O.verbs += /mob/proc/toggle_alter + O.verbs += /mob/proc/list_dna + O.verbs += /proc/Vars + src.primary = null + if (src.client) + src.client.mob = O + O.loc = src.loc + O << "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras)." + O << "To look at other parts of the station, double-click yourself to get a camera menu." + O << "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc." + O << "To use something, simply double-click it." + O << "Currently right-click functions will not work for the AI (except examine), and will either be replaced with dialogs or won't be usable by the AI." + O.addLaw(1, "You may not injure a human being or, through inaction, allow a human being to come to harm.") + O.addLaw(2, "You must obey orders given to you by human beings, except where such orders would conflict with the First Law.") + O.addLaw(3, "You must protect your own existence as long as such protection does not conflict with the First or Second Law.") + O.addLaw(4, "Give priority to orders from the captain, head of research, and security officers, in that order, and below them anyone who is not imprisoned, under arrest, or being arrested. If conflicting orders are given, the orders from the higher-priority individual should be followed. If a higher-priority individual says to ignore orders from a lower-priority individual, do so. If a lower-priority individual says to ignore orders from a higher-priority individual, do NOT do so.") + O.showLaws(0) + O << "These laws may be changed by other players, or by you being the traitor." + //SN src = null + O.verbs += /mob/ai/proc/ai_call_shuttle + O.verbs += /mob/ai/proc/ai_cancel_call + O.verbs += /mob/ai/proc/show_laws + O.verbs += /mob/ai/proc/ai_camera_follow + //O.verbs += /mob/ai/proc/ai_cancel_call + del(src) + return diff --git a/Code/newitems.dm b/Code/newitems.dm index b8b0669..278a43c 100644 --- a/Code/newitems.dm +++ b/Code/newitems.dm @@ -45,20 +45,35 @@ on = !on icon_state = "flight[on]" - if(on) - img = image('turfs2.dmi', "light", 11) - user:body_standing += img - else - if(img) - user:body_standing -= img - del(img) + src.process() +/obj/item/weapon/flashlight/proc/process() + lastHolder = null + while(on) + var/atom/holder = loc + var/isHeld = 0 + if (ismob(holder)) + isHeld=1 + else + isHeld=0 + if (lastHolder!=null) + lastHolder:luminosity = 0 + lastHolder = null + if (isHeld==1) + if (holder!=lastHolder && lastHolder!=null) + lastHolder:luminosity = 0 + holder:luminosity = 5 + lastHolder = holder -///obj/item/weapon/flashlight/dropped() -// on = 0 + luminosity = 5 + sleep(10) + if (lastHolder!=null) + lastHolder:luminosity = 0 + lastHolder = null + luminosity = 0; diff --git a/Code/power.dm b/Code/power.dm index 5cd578a..54611b5 100644 --- a/Code/power.dm +++ b/Code/power.dm @@ -124,20 +124,25 @@ /obj/cable/proc/shock(mob/user, prb) + if(!netnum) // unconnected cable is unpowered + return 0 + + return src.electrocute(user, prb, netnum) + + +atom/proc/electrocute(mob/user, prb, netnum) + if(!prob(prb)) - return + return 0 if(!netnum) // unconnected cable is unpowered - return + return 0 var/datum/powernet/PN // find the powernet if(powernets && powernets.len >= netnum) PN = powernets[netnum] if(PN && PN.avail > 0) // is it powered? - - - var/prot = 0 if(istype(user, /mob/human)) @@ -146,9 +151,11 @@ var/obj/item/weapon/clothing/gloves/G = H.gloves prot = G.elec_protect - + else if (istype(user, /mob/ai)) + return 0 + if(prot == 10) // elec insulted gloves protect completely - return + return 0 prot++ @@ -170,12 +177,11 @@ if(M == user) continue if (!( M.blinded )) - M << "\red [user.name] was shocked by the cable!" + M << text("\red [user.name] was shocked by the [src.name]!") else M << "\red You hear a heavy electrical crack." - - - + return 1 + return 0 /obj/cable/ex_act(severity) diff --git a/Code/shuttle.dm b/Code/shuttle.dm index be88e8d..89f6750 100644 --- a/Code/shuttle.dm +++ b/Code/shuttle.dm @@ -75,6 +75,23 @@ else return +/obj/shuttle/door/attackby(obj/item/I as obj, mob/user as mob) + if (src.operating) + return + if (src.density) + return open() + else + return close() + +/obj/shuttle/door/attack_ai(mob/user as mob) + return src.attack_hand(user) + +/obj/shuttle/door/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/shuttle/door/attack_hand(mob/user as mob) + return attackby(user, user) + /obj/shuttle/door/verb/open() set src in oview(1) @@ -120,7 +137,7 @@ switch(severity) if(1.0) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) @@ -128,7 +145,7 @@ if(2.0) if (prob(50)) //SN src = null - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) @@ -139,7 +156,7 @@ /turf/station/shuttle/blob_act() if(prob(20)) - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + var/turf/space/S = src.ReplaceWithSpace() S.buildlinks() del(src) diff --git a/Code/ss13_algorithm2.dm b/Code/ss13_algorithm2.dm index 7f79b2c..67e704b 100644 --- a/Code/ss13_algorithm2.dm +++ b/Code/ss13_algorithm2.dm @@ -33,7 +33,16 @@ for(var/mob/human/M in world) if ((!( M.client ) || !( M.start ) || M.already_placed)) else - unassigned_mobs += M + unassigned_mobs += M + //If someone picked AI before it was disabled, or has a saved profile with it on a game that now lacks it, this will make sure they don't become the AI, by changing that choice to Captain. + if (!config.allowai) + if (M.occupation1 == "AI") + M.occupation1 = "Captain" + if (M.occupation2 == "AI") + M.occupation2 = "Captain" + if (M.occupation3 == "AI") + M.occupation3 = "Captain" + if (M.occupation1 != "No Preference") occupations1[M.occupation1] += M if (M.occupation2 != "No Preference") @@ -50,35 +59,47 @@ occupations2["Captain"] = shuffle(occupations2["Captain"]) occupations3["Captain"] = shuffle(occupations3["Captain"]) var/list/captain_choice = occupations1["Captain"] - if (captain_choice.len) - final_occupations["Captain"] = captain_choice[1] + if (captain_choice.len>0) + final_occupations["Captain"] += captain_choice[1] occupation_choices -= "Captain" - unassigned_mobs -= final_occupations["Captain"] - if (!( final_occupations["Captain"] )) + unassigned_mobs -= captain_choice[1] + var/list/captain = final_occupations["Captain"] + if (captain.len==0) captain_choice = occupations2["Captain"] if (captain_choice.len) - final_occupations["Captain"] = captain_choice[1] + final_occupations["Captain"] += captain_choice[1] occupation_choices -= "Captain" - unassigned_mobs -= final_occupations["Captain"] - if (!( final_occupations["Captain"] )) + unassigned_mobs -= captain_choice[1] + + captain = final_occupations["Captain"] + if (captain.len==0) captain_choice = occupations3["Captain"] if (captain_choice.len) - final_occupations["Captain"] = captain_choice[1] + final_occupations["Captain"] += captain_choice[1] occupation_choices -= "Captain" - unassigned_mobs -= final_occupations["Captain"] - if (!( final_occupations["Captain"] )) + unassigned_mobs -= captain_choice[1] + + captain = final_occupations["Captain"] + if (captain.len==0) var/list/contenders = list( ) for(var/mob/human/M in world) - if (M.client) - contenders += M - //Foreach goto(691) - var/mob/human/M = pick(contenders) - final_occupations["Captain"] = M - occupation_choices -= "Captain" - unassigned_mobs -= final_occupations["Captain"] - occupations1[text("[]", M.occupation1)] -= M - occupations2[text("[]", M.occupation2)] -= M - occupations3[text("[]", M.occupation3)] -= M + if (M.client) + if (M.start) + contenders += M + //Foreach goto(691) + if (contenders.len>1) + var/mob/human/M = pick(contenders) + final_occupations["Captain"] += M + occupation_choices -= "Captain" + unassigned_mobs -= M + if (M.occupation1 != "No Preference") + occupations1[text("[]", M.occupation1)] -= M + if (M.occupation2 != "No Preference") + occupations2[text("[]", M.occupation2)] -= M + if (M.occupation3 != "No Preference") + occupations3[text("[]", M.occupation3)] -= M + else + world << text("Captainship not forced on someone since this is a one-player game.") for(var/mob/human/M in unassigned_mobs) if (assistant_occupations.Find(M.occupation1)) M.Assign_Rank(M.occupation1) @@ -192,7 +213,19 @@ //Foreach goto(1931) for(var/mob/human/M in unassigned_mobs) M.Assign_Rank(pick("Research Assistant", "Technical Assistant", "Medical Assistant", "Staff Assistant")) - //Foreach goto(2051) + //Foreach goto(2051) + for (var/mob/ai/aiPlayer in world) + spawn(0) + var/newname = input(aiPlayer, "You are the AI. Would you like to change your name to something else?", "Name change", aiPlayer.rname) + if (newname) + if (length(newname) >= 26) + newname = copytext(newname, 1, 26) + newname = dd_replacetext(newname, ">", "'") + aiPlayer.rname = newname + aiPlayer.name = newname + + world << text("[] is the AI!", aiPlayer.rname) + return /proc/shuffle(var/list/shufflelist) @@ -217,6 +250,7 @@ return /mob/human/verb/char_setup() + set name = "Character Setup" if (src.start) return @@ -292,8 +326,9 @@ if(3.0) HTML += "Which occupation would you like if you couldn't have the others?

    " else - for(var/job in uniquelist(occupations + assistant_occupations) ) - HTML += text("[]
    ", src, occ, job, job) + for(var/job in uniquelist(occupations + assistant_occupations) ) + if (job!="AI" || config.allowai) + HTML += text("[]
    ", src, occ, job, job) //Foreach goto(105) HTML += text("Captain
    ", src, occ) HTML += "
    " @@ -319,6 +354,8 @@ if (job == null) job = "Captain" if ((!( occupations.Find(job) ) && !( assistant_occupations.Find(job) ) && job != "Captain")) + return + if (job=="AI" && (!config.allowai)) return switch(occ) if(1.0) @@ -397,7 +434,13 @@ return /mob/human/proc/Assign_Rank(rank) - + if (rank == "AI") + var/obj/S = locate(text("start*[]", rank)) + if ((istype(S, /obj/start) && istype(S.loc, /turf) && !( ctf ))) + src << "\blue You have been teleported to your new starting location!" + src.loc = S.loc + src.AIize() + return if (rank == "Captain") world << text("[] is the captain!", src) if (!( src.w_radio )) @@ -421,9 +464,12 @@ var/obj/item/weapon/pen/S = new /obj/item/weapon/pen( src ) src.r_store = S S.layer = 20 - if ((src.client && !( src.wear_id ) && src.w_uniform)) + if (src.client && !(src.wear_id)) var/obj/item/weapon/card/id/C = new /obj/item/weapon/card/id( src ) - src.wear_id = C + if (src.w_uniform) + src.wear_id = C + else + src.r_hand = C C.assignment = rank C.layer = 20 C.registered = src.rname @@ -439,7 +485,7 @@ C.engine_access = 1 C.air_access = 0 if("Staff Assistant") - C.access_level = 2 + C.access_level = 3 C.lab_access = 0 C.engine_access = 0 C.air_access = 0 @@ -566,3 +612,10 @@ src << "\blue You have been teleported to your new starting location!" src.loc = S.loc return + +/proc/AutoUpdateAI(obj/subject) + if (subject!=null) + for(var/mob/ai/M in world) + if ((M.client && M.machine == subject)) + subject.attack_ai(M) + diff --git a/Code/vote.dm b/Code/vote.dm index 954add3..cde0cf2 100644 --- a/Code/vote.dm +++ b/Code/vote.dm @@ -41,7 +41,8 @@ for(var/mob/M in world) if(M.client && M.client.inactivity < 1200) // clients inactive for 2 minutes don't count - L[M.client.vote] += 1 + if (M.client.vote != "none") + L[M.client.vote] += 1 return L diff --git a/Code/wallFloorSpaceChanges-darkSpaceFix.dm-disabled b/Code/wallFloorSpaceChanges-darkSpaceFix.dm-disabled new file mode 100644 index 0000000..976b0ad --- /dev/null +++ b/Code/wallFloorSpaceChanges-darkSpaceFix.dm-disabled @@ -0,0 +1,66 @@ +// You can have one wallFloorSpaceChanges-[something].dm file enabled in dream maker. +// The purpose of this was to make it so that areas which turned to space from, say, explosions, did not end up with dark space. They were taken out of their area when they became space, and if a floor was built on them, they were put back into their area. I also tried having this be done for walls, but it was more likely to cause problems, since someone could light up all of space with fire alarms or drain massive power by simply building a wall on a fire alarm or APC's (respectively) real tile. (The code for doing that to walls is in here, but commented out) +// The main problem with this is that it's still technically possible to have something like a fire alarm or APC wind up in /area if a set of explosion rolls (or something similar) remove the floor without removing the fire alarm or APC (or their power). That may seem unlikely, especially if they need to be powered still, but it has been reported to have happened at least once so far, IIRC. + +/turf/proc/ReplaceWithFloor() + var/turf/station/floor/W + var/area/A + //if (istype(src, /turf/space) || istype(src, /turf/station/wall) || istype(src, /turf/station/r_wall)) + if (istype(src, /turf/space)) + var/area/oldArea = src:previousArea + if (oldArea!=null) + A = oldArea + else + A = src.loc + W = new /turf/station/floor( locate(src.x, src.y, src.z) ) + else + A = src.loc + W = new /turf/station/floor( locate(src.x, src.y, src.z) ) + if (istype(A, /area)) + if (A!=world.area) + A.contents -= W + A.contents += W + return W + +/turf/proc/ReplaceWithSpace() + var oldAreaArea = src.loc + var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + if (oldAreaArea==world.area) + if (istype(src, /turf/station/wall) || istype(src, /turf/station/r_wall) || istype(src, /turf/space)) + S.previousArea = src:previousArea + else + S.previousArea = null + else + S.previousArea = oldAreaArea + new /area( locate(src.x, src.y, src.z) ) + return S + +/turf/proc/ReplaceWithWall() + //var oldAreaArea = src.loc + var/turf/station/wall/S = new /turf/station/wall( locate(src.x, src.y, src.z) ) + /* + if (oldAreaArea==world.area) + if (istype(src, /turf/station/wall) || istype(src, /turf/station/r_wall) || istype(src, /turf/space)) + S.previousArea = src:previousArea + else + S.previousArea = null + else + S.previousArea = oldAreaArea + new /area( locate(src.x, src.y, src.z) ) + */ + return S + +/turf/proc/ReplaceWithRWall() + //var oldAreaArea = src.loc + var/turf/station/r_wall/S = new /turf/station/r_wall( locate(src.x, src.y, src.z) ) + /* + if (oldAreaArea==world.area) + if (istype(src, /turf/station/wall) || istype(src, /turf/station/r_wall) || istype(src, /turf/space)) + S.previousArea = src:previousArea + else + S.previousArea = null + else + S.previousArea = oldAreaArea + new /area( locate(src.x, src.y, src.z) ) + */ + return S diff --git a/Code/wallFloorSpaceChanges-normal.dm b/Code/wallFloorSpaceChanges-normal.dm new file mode 100644 index 0000000..66df286 --- /dev/null +++ b/Code/wallFloorSpaceChanges-normal.dm @@ -0,0 +1,19 @@ +// If you don't have the wallFloorSpaceChanges-darkSpaceFix.dm enabled, enable this dm instead. +// See wallFloorSpaceChanges-darkSpaceFix.dm for more information. + +/turf/proc/ReplaceWithFloor() + var/turf/station/floor/W + W = new /turf/station/floor( locate(src.x, src.y, src.z) ) + return W + +/turf/proc/ReplaceWithSpace() + var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + return S + +/turf/proc/ReplaceWithWall() + var/turf/station/wall/S = new /turf/station/wall( locate(src.x, src.y, src.z) ) + return S + +/turf/proc/ReplaceWithRWall() + var/turf/station/r_wall/S = new /turf/station/r_wall( locate(src.x, src.y, src.z) ) + return S diff --git a/Code/weapons.dm b/Code/weapons.dm index 1a5c9ea..7f28ac4 100644 --- a/Code/weapons.dm +++ b/Code/weapons.dm @@ -397,6 +397,9 @@ src.time = round(src.time) - 1 if(time<5) src.c_state(2) + else + // they might increase the time while it is timing + src.c_state(1) else time() src.time = 0 @@ -416,7 +419,10 @@ for(var/mob/M in viewers(1, src.master)) if (M.client) src.attack_self(M) - //Foreach goto(176) + else + //If it's not timing, reset the icon so it doesn't look like it's still about to go off. + src.c_state(0) + spawn( 10 ) src.process() return @@ -1289,7 +1295,8 @@ /obj/bullet/Bump(atom/A as mob|obj|turf|area) spawn( 0 ) - A.las_act("bullet", src) + if (A) + A.las_act("bullet", src) //SN src = null del(src) return @@ -1321,7 +1328,8 @@ /obj/beam/a_laser/Bump(atom/A as mob|obj|turf|area) spawn( 0 ) - A.las_act(null, src) + if (A) + A.las_act(null, src) //SN src = null del(src) return diff --git a/config.txt b/config.txt index 3194d03..23b4d99 100644 --- a/config.txt +++ b/config.txt @@ -46,10 +46,10 @@ PROB_NUCLEAR 1 # voting control # # allow players to initiate a restart vote -ALLOWVOTERESTART +#ALLOWVOTERESTART # # allow players to initate a mode-change start -ALLOWVOTEMODE +#ALLOWVOTEMODE # # min delay (seconds) between voting sessions (default 10 minutes) VOTEDELAY 600 @@ -61,4 +61,21 @@ VOTEPERIOD 60 NODEADVOTE # # players' votes default to "No vote" (otherwise, default to "No change") -DEFAULTNOVOTE \ No newline at end of file +#DEFAULTNOVOTE + +##### +# +# added features +# +# Comment this out if you don't want the AI job to be available, or if you're using a map which doesn't have an AI spawnpoint. +ALLOWAI +# Comment this out if you don't want higher-temperature (than 500) bombs to have extended range +#BOMBTEMP_DETERMINES_RANGE +# Comment this out if you don't want crowbars to be able to close depowered doors. +CROWBARS_CLOSE_DEPOWERED_DOORS +# Comment this out if you don't want the AI to be able to call the shuttle +AI_CAN_CALL_SHUTTLE +# Comment this out if you don't want the AI to be able to send the shuttle back +#AI_CAN_UNCALL_SHUTTLE +# Comment this out to get the original Asimov-based Laws instead +ALTERNATE_AI_LAWS diff --git a/spacestation13.dme b/spacestation13.dme index 367035d..8a40bfe 100644 --- a/spacestation13.dme +++ b/spacestation13.dme @@ -4,20 +4,24 @@ // BEGIN_INTERNALS /* -FILE: Code\!atoms.dm -DIR: Code Code\Machinery Code\Machinery\Atmoalter Code\Machinery\Computer Code\Machinery\Door Code\Machinery\Power +FILE: ss13h_new.dmp +DIR: Code Code\Machinery Code\mob Icons MAP_ICON_TYPE: 0 AUTO_FILE_DIR: ON */ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "backup" #define FILE_DIR "Code" +#define FILE_DIR "Code/Item" +#define FILE_DIR "Code/Item/Weapon" #define FILE_DIR "Code/Machinery" #define FILE_DIR "Code/Machinery/Atmoalter" #define FILE_DIR "Code/Machinery/Computer" #define FILE_DIR "Code/Machinery/Door" #define FILE_DIR "Code/Machinery/Power" +#define FILE_DIR "Code/mob" #define FILE_DIR "Icons" #define FILE_DIR "Interface" // END_FILE_DIR @@ -27,7 +31,7 @@ AUTO_FILE_DIR: ON // END_PREFERENCES // BEGIN_INCLUDE -#include "ss13h.dmp" +#include "ss13h_new.dmp" #include "Code\!atoms.dm" #include "Code\aaaDefines.dm" #include "Code\airtunnel.dm" @@ -61,8 +65,11 @@ AUTO_FILE_DIR: ON #include "Code\Test.dm" #include "Code\TextHandling.dm" #include "Code\vote.dm" +#include "Code\wallFloorSpaceChanges-normal.dm" #include "Code\weap_sat.dm" #include "Code\weapons.dm" +#include "Code\Item\Weapon\aimodules.dm" +#include "Code\Item\Weapon\multitool.dm" #include "Code\Machinery\_machinery.dm" #include "Code\Machinery\_pipe_misc.dm" #include "Code\Machinery\alarm.dm" @@ -94,6 +101,7 @@ AUTO_FILE_DIR: ON #include "Code\Machinery\sec_lock.dm" #include "Code\Machinery\shuttle.dm" #include "Code\Machinery\sleeper.dm" +#include "Code\Machinery\turrets.dm" #include "Code\Machinery\valve.dm" #include "Code\Machinery\vent.dm" #include "Code\Machinery\Atmoalter\_atmoalter.dm" @@ -129,5 +137,6 @@ AUTO_FILE_DIR: ON #include "Code\Machinery\Power\solar_control.dm" #include "Code\Machinery\Power\terminal.dm" #include "Code\Machinery\Power\turbine.dm" +#include "Code\mob\ai.dm" // END_INCLUDE diff --git a/ss13h_new.dmp b/ss13h_new.dmp new file mode 100644 index 0000000..8fee0d1 --- /dev/null +++ b/ss13h_new.dmp @@ -0,0 +1,3083 @@ +"aa" = (/turf/space,/area) +"ab" = (/obj/grille,/turf/station/floor,/area) +"ac" = (/obj/machinery/power/solar{id = 2},/turf/station/floor,/area) +"ad" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"ae" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"af" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"ag" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"ah" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"ai" = (/turf/station/wall,/area) +"aj" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area/north_solar) +"ak" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/north_solar) +"al" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/north_solar) +"am" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/north_solar) +"an" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/north_solar) +"ao" = (/turf/station/r_wall,/area) +"ap" = (/obj/move/airtunnel/connector/wall,/turf/space,/area/airtunnel1) +"aq" = (/obj/machinery/camera{dir = 4; c_tag = "Northern Airlock"},/obj/machinery/at_indicator{pixel_x = -32; pixel_y = 0},/turf/station/floor,/area/north_solar) +"ar" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/north_solar) +"as" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/north_solar) +"at" = (/obj/machinery/power/smes{output = 12000; charge = 0; chargelevel = 12000; n_tag = "Aux. Solar Generator"},/turf/station/floor,/area/north_solar) +"au" = (/obj/machinery/power/solar_control{id = 2},/turf/station/floor,/area/north_solar) +"av" = (/obj/securearea,/turf/station/r_wall,/area) +"aw" = (/obj/move/airtunnel/connector,/obj/machinery/alarm/indicator,/turf/space,/area/airtunnel1) +"ax" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/north_solar) +"ay" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/north_solar) +"az" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/north_solar) +"aA" = (/obj/machinery/power/terminal{dir = 1},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/north_solar) +"aB" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/north_solar) +"aC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/at_indicator{pixel_y = 32},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area) +"aD" = (/obj/machinery/door/airlock{access = "2000"},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area) +"aE" = (/obj/move/airtunnel/connector,/turf/space,/area/airtunnel1) +"aF" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/north_solar) +"aG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/north_solar) +"aH" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area/north_solar) +"aI" = (/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area/north_solar) +"aJ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "2000"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/north_solar) +"aK" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area) +"aL" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/north_solar) +"aM" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/north_solar) +"aN" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/north_solar) +"aO" = (/turf/station/floor,/area/north_solar) +"aP" = (/obj/machinery/alarm{pixel_y = 24},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/north_solar) +"aQ" = (/obj/machinery/door/airlock{access = "3000"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/north_solar) +"aR" = (/obj/grille,/turf/space,/area) +"aS" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/r_wall,/area) +"aT" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area) +"aU" = (/obj/machinery/computer/airtunnel,/turf/station/floor,/area) +"aV" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/r_wall,/area) +"aW" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/r_wall,/area) +"aX" = (/obj/machinery/camera{dir = 4; c_tag = "Air Tunnel West"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/r_wall,/area) +"aY" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/r_wall,/area) +"aZ" = (/turf/station/r_wall,/area/airtunnel1) +"ba" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airtunnel1) +"bb" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airtunnel1) +"bc" = (/obj/machinery/camera{dir = 4; c_tag = "Air Tunnel East"},/turf/station/floor,/area/airtunnel1) +"bd" = (/turf/station/floor,/area/airtunnel1) +"be" = (/obj/machinery/power/monitor,/turf/station/floor,/area/north_solar) +"bf" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/north_solar) +"bg" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/north_solar) +"bh" = (/obj/machinery/firealarm{pixel_y = -32},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/north_solar) +"bi" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/north_solar) +"bj" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/north_solar) +"bk" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/north_solar) +"bl" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/r_wall,/area) +"bm" = (/obj/machinery/light_switch{pixel_x = -16; pixel_y = 0},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bn" = (/obj/machinery/turretid{pixel_x = 0; pixel_y = -24},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bo" = (/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bp" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bq" = (/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/machinery/turret,/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"br" = (/obj/machinery/turret,/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bs" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/wall,/area) +"bt" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/wall,/area) +"bu" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/wall,/area) +"bv" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine_access) +"bw" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/wall,/area) +"bx" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 8},/turf/space,/area/arrival/shuttle) +"by" = (/obj/move/wall,/turf/space,/area/arrival/shuttle) +"bz" = (/obj/move/wall{icon_state = "wall2"},/turf/space,/area/arrival/shuttle) +"bA" = (/obj/machinery/shuttle/engine/propulsion/burst/right{dir = 8},/turf/space,/area/arrival/shuttle) +"bB" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/r_wall,/area) +"bC" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/securearea,/turf/station/r_wall,/area) +"bD" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/r_wall,/area) +"bE" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/r_wall,/area) +"bF" = (/obj/grille,/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"bG" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/wall,/area) +"bH" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/engine_access) +"bI" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine_access) +"bJ" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine_access) +"bK" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"bL" = (/obj/machinery/pipes{tag = ""; icon_state = "6"; p_dir = 6},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"bM" = (/obj/move/wall{icon_state = "wall2"},/obj/machinery/pipes,/turf/space,/area/arrival/shuttle) +"bN" = (/obj/move/wall{icon_state = "wall2"},/obj/machinery/manifold{dir = 1},/turf/space,/area/arrival/shuttle) +"bO" = (/obj/machinery/shuttle/engine/propulsion{dir = 8},/turf/space,/area/arrival/shuttle) +"bP" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/grille,/obj/machinery/camera{dir = 8; c_tag = "AI Upload Airlock Entrance"},/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"bQ" = (/obj/machinery/turret,/turf/station/floor,/area/turret_protected/ai_upload) +"bR" = (/obj/machinery/door/window{dir = 4},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine_access) +"bS" = (/obj/shuttle/door,/turf/space,/area/arrival/shuttle) +"bT" = (/obj/machinery/pipes,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"bU" = (/obj/machinery/manifold{dir = 1},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"bV" = (/obj/move/wall{icon_state = "wall2"},/obj/machinery/manifold,/turf/space,/area/arrival/shuttle) +"bW" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/grille,/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"bX" = (/obj/machinery/camera{name = "AI Upload Halls"; dir = 8; c_tag = "AI Upload Station"},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"bY" = (/obj/machinery/power/apc{dir = 1},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/turret_protected/ai_upload) +"bZ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/turret_protected/ai_upload) +"ca" = (/obj/machinery/computer/aiupload,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/turret_protected/ai_upload) +"cb" = (/obj/machinery/light_switch{pixel_y = 24},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/turret_protected/ai_upload) +"cc" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "5555"},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area) +"cd" = (/obj/machinery/door/airlock{access = "5555"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area) +"ce" = (/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area) +"cf" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/wall,/area) +"cg" = (/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area/engine_access) +"ch" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/engine_access) +"ci" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/engine_access) +"cj" = (/obj/machinery/shuttle/engine/propulsion{dir = 4},/turf/space,/area/arrival/shuttle) +"ck" = (/obj/machinery/manifold,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cl" = (/obj/machinery/manifold{dir = 8},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cm" = (/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cn" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 8},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"co" = (/obj/shuttle/door,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cp" = (/obj/machinery/shuttle/engine/propulsion/burst/left{dir = 8},/turf/space,/area/arrival/shuttle) +"cq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/turret_protected/ai_upload) +"cr" = (/turf/station/floor,/area/turret_protected/ai_upload) +"cs" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/turret_protected/ai_upload) +"ct" = (/obj/machinery/door/window{dir = 4},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area) +"cu" = (/obj/secloset/personal,/obj/machinery/camera{dir = 4; c_tag = "Crew Shuttle Disembarkment Hall North"},/turf/station/floor,/area/engine_access) +"cv" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine_access) +"cw" = (/turf/station/floor,/area/engine_access) +"cx" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine_access) +"cy" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cz" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cA" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/co2canister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cB" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 4},/turf/space,/area/arrival/shuttle) +"cC" = (/obj/rack,/obj/item/weapon/aiModule/protectStation,/turf/station/floor,/area/turret_protected/ai_upload) +"cD" = (/obj/rack,/obj/item/weapon/aiModule/prototypeEngineOffline,/turf/station/floor,/area/turret_protected/ai_upload) +"cE" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/rack,/obj/item/weapon/aiModule/quarantine,/turf/station/floor,/area/turret_protected/ai_upload) +"cF" = (/turf/station/wall,/area/turret_protected/computer_core) +"cG" = (/obj/secloset/personal,/turf/station/floor,/area/engine_access) +"cH" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 1},/turf/space,/area/arrival/shuttle) +"cI" = (/obj/rack,/obj/item/weapon/aiModule/safeguard,/turf/station/floor,/area/turret_protected/ai_upload) +"cJ" = (/obj/rack,/obj/item/weapon/aiModule/teleporterOffline,/turf/station/floor,/area/turret_protected/ai_upload) +"cK" = (/obj/machinery/camera{dir = 8; c_tag = "AI Upload Station"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/rack,/obj/item/weapon/aiModule/oneHuman,/turf/station/floor,/area/turret_protected/ai_upload) +"cL" = (/obj/machinery/light_switch{pixel_y = 24},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cM" = (/obj/machinery/power/apc{dir = 1; access = "5555/5555/5555"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cN" = (/obj/item/weapon/radio/intercom{name = "Station Intercom (Radio) #1"; desc = "Address with \[1]"; pixel_x = 0; pixel_y = 32; freq = 145.7; number = 1},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cO" = (/obj/item/weapon/radio/intercom{name = "Station Intercom (Radio) #2"; desc = "Address with \[2]"; pixel_x = 0; pixel_y = 32; number = 2},/obj/start{name = "AI"},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cP" = (/obj/item/weapon/radio/intercom{name = "Station Intercom (Radio) #3"; desc = "Address with #3"; pixel_x = 0; pixel_y = 32; freq = 144.9; number = 3},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cQ" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cR" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"cS" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine_access) +"cT" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine_access) +"cU" = (/obj/closet/wardrobe/mixed,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cV" = (/obj/secloset/personal,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cW" = (/obj/machinery/power/smes,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"cX" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "5555"},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"cY" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "5555"},/obj/machinery/turretid{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/turret_protected/ai_upload) +"cZ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/turret_protected/ai_upload) +"da" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "5555"},/turf/station/floor,/area/turret_protected/ai_upload) +"db" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/turret,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/turret_protected/ai_upload) +"dc" = (/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dd" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"de" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"df" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/turret,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dg" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dh" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine_access) +"di" = (/obj/stool/chair{dir = 8},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/start) +"dj" = (/obj/move/wall{icon_state = "diagonalWall"},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"dk" = (/obj/grille,/turf/station/floor,/area/engine) +"dl" = (/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/turf/station/floor,/area/turret_protected/ai_upload_foyer) +"dm" = (/obj/machinery/light_switch{pixel_x = 16; pixel_y = 0},/turf/station/floor,/area/turret_protected/ai_upload) +"dn" = (/turf/station/r_wall,/area/turret_protected/ai_upload) +"do" = (/obj/machinery/door/airlock{access = "5555"},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/turret_protected/ai_upload) +"dp" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/r_wall,/area/turret_protected/ai_upload) +"dq" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/r_wall,/area) +"dr" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/grille,/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"ds" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/r_wall,/area) +"dt" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"du" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/terminal,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dv" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dw" = (/obj/machinery/power/terminal,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dx" = (/obj/machinery/power/terminal,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dy" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dz" = (/obj/machinery/camera{dir = 2; c_tag = "Crew Shuttle"},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"dA" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "6"},/obj/lattice,/turf/space,/area/engine) +"dB" = (/obj/machinery/pipes/heat_exch,/obj/lattice,/turf/space,/area/engine) +"dC" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "10"},/obj/lattice,/turf/space,/area/engine) +"dD" = (/turf/station/r_wall,/area/engine) +"dE" = (/obj/rack,/obj/item/weapon/aiModule/reset,/turf/station/floor,/area/turret_protected/ai_upload) +"dF" = (/obj/rack,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/safeguard,/obj/item/weapon/aiModule/prototypeEngineOffline,/obj/item/weapon/aiModule/teleporterOffline,/obj/item/weapon/aiModule/quarantine,/obj/item/weapon/aiModule/oneHuman,/obj/item/weapon/aiModule/reset,/turf/station/floor,/area/turret_protected/ai_upload) +"dG" = (/obj/machinery/power/smes{output = 12000; charge = 2.5e+006; chargemode = 1; chargelevel = 18000; n_tag = "AI Generator"},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dH" = (/obj/machinery/power/monitor,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dI" = (/obj/machinery/turretid,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dJ" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dK" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/floor,/area/engine_access) +"dL" = (/obj/machinery/power/apc{dir = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine_access) +"dM" = (/obj/machinery/door/window,/turf/station/floor,/area/engine_access) +"dN" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/hallways/eastairlock) +"dO" = (/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/start) +"dP" = (/obj/machinery/power/generator{name = "Shuttle Pilot"; desc = "A shuttle auto-pilot computer core."},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"dQ" = (/obj/machinery/computer/hologram_comp,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"dR" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "5"},/obj/lattice,/turf/space,/area/engine) +"dS" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "3"},/obj/lattice,/turf/space,/area/engine) +"dT" = (/obj/machinery/turret,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dU" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dV" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dW" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dX" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor/grid{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dY" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area/turret_protected/computer_core) +"dZ" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "9"},/obj/lattice,/turf/space,/area/engine) +"ea" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/r_wall,/area) +"eb" = (/obj/move/wall{icon_state = "diagonalWall"},/turf/space,/area/arrival/shuttle) +"ec" = (/obj/move/wall{icon_state = "diagonalWall"; dir = 1},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"ed" = (/obj/closet/wardrobe,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"ee" = (/turf/space,/area/engine) +"ef" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/grille,/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"eg" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/obj/grille,/turf/station/floor{name = "airlessFloor"; icon_state = "Floor1"; intact = 0; oxygen = 0; n2 = 0; checkfire = 0; health = 100; burnt = 1},/area) +"eh" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/r_wall,/area/engine) +"ei" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/r_wall,/area/engine) +"ej" = (/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"ek" = (/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"el" = (/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/canister/co2canister,/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"em" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/r_wall,/area/engine) +"en" = (/obj/machinery/light_switch{pixel_y = 24},/obj/machinery/camera{dir = 4; c_tag = "Engine Hallway (W)"},/turf/station/floor,/area/engine/engine_hallway) +"eo" = (/turf/station/floor,/area/engine/engine_hallway) +"ep" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/engine_hallway) +"eq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine/engine_hallway) +"er" = (/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/engine/engine_hallway) +"es" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area) +"et" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/grille,/turf/station/floor,/area) +"eu" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/r_wall,/area) +"ev" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine_access) +"ew" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/engine_access) +"ex" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/r_wall,/area/engine) +"ey" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"ez" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"eA" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/engine_hallway) +"eB" = (/obj/machinery/firealarm{pixel_y = -32},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"eC" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/r_wall,/area/engine) +"eD" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_gas_storage) +"eE" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/extinguisher,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_gas_storage) +"eF" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/engine/engine_gas_storage) +"eG" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/engine_gas_storage) +"eH" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/engine/floor,/area/aux_engine) +"eI" = (/turf/station/engine/floor,/area/aux_engine) +"eJ" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/machinery/compressor,/turf/station/floor,/area/aux_engine) +"eK" = (/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/machinery/power/turbine,/turf/station/floor,/area/aux_engine) +"eL" = (/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/engine/floor,/area/aux_engine) +"eM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/dispenser,/turf/station/floor,/area/eva_storage) +"eN" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/turf/station/floor,/area/eva_storage) +"eO" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/tank/jetpack,/turf/station/floor,/area/eva_storage) +"eP" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/tank/jetpack,/obj/machinery/camera{c_tag = "EVA Storage"},/turf/station/floor,/area/eva_storage) +"eQ" = (/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"eR" = (/obj/machinery/manifold{dir = 2},/turf/station/command/floor{icon_state = "Floor2"},/area/arrival/shuttle) +"eS" = (/obj/machinery/door/airlock{access = "2000"},/turf/station/floor,/area/engine/generator) +"eT" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/obj/machinery/junction{dir = 1},/turf/station/floor,/area/engine/generator) +"eU" = (/turf/station/wall,/area/engine) +"eV" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/wall,/area/engine) +"eW" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/engine/engine_hallway) +"eX" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/engine_gas_storage) +"eY" = (/turf/station/floor,/area/engine/engine_gas_storage) +"eZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine/engine_gas_storage) +"fa" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/machinery/power/apc{dir = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/engine_gas_storage) +"fb" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/aux_engine) +"fc" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/aux_engine) +"fd" = (/obj/machinery/power/terminal{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/aux_engine) +"fe" = (/obj/machinery/power/smes{charge = 0; online = 0; n_tag = "Aux. No. 1"},/turf/station/floor,/area/aux_engine) +"ff" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/r_wall,/area) +"fg" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/eva_storage) +"fh" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/eva_storage) +"fi" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/eva_storage) +"fj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/eva_storage) +"fk" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/eva_storage) +"fl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/engine_access) +"fm" = (/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"fn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/generator) +"fo" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/engine/generator) +"fp" = (/obj/machinery/manifold{dir = 4},/turf/station/floor,/area/engine/generator) +"fq" = (/obj/machinery/connector{dir = 8; p_dir = 8},/obj/machinery/atmoalter/canister/co2canister{c_per = 1e+006; c_status = 1},/turf/station/floor,/area/engine/generator) +"fr" = (/obj/item/weapon/radio/intercom{pixel_y = 32},/turf/station/floor,/area/engine/generator) +"fs" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/power/monitor,/turf/station/floor,/area/engine/generator) +"ft" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/engine/generator) +"fu" = (/obj/machinery/power/terminal{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/generator) +"fv" = (/obj/machinery/power/smes{n_tag = "Main No. 1"},/turf/station/floor,/area/engine/generator) +"fw" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/obj/machinery/camera{dir = 4; c_tag = "Generator Room (East)"},/turf/station/floor,/area/engine/generator) +"fx" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/extinguisher,/obj/machinery/power/apc{dir = 4; cell_type = 2},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/engine/generator) +"fy" = (/obj/landmark{name = "CTF-supply-Engine"},/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine/engine_hallway) +"fz" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine/engine_gas_storage) +"fA" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_gas_storage) +"fB" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2020"},/turf/station/engine/floor,/area/aux_engine) +"fC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aux_engine) +"fD" = (/obj/machinery/power/terminal{dir = 4},/obj/cable,/turf/station/floor,/area/aux_engine) +"fE" = (/obj/machinery/power/smes{charge = 0; online = 0; n_tag = "Aux. No. 2"},/turf/station/floor,/area/aux_engine) +"fF" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/r_wall,/area) +"fG" = (/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/eva_storage) +"fH" = (/turf/station/floor,/area/eva_storage) +"fI" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/eva_storage) +"fJ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/eva_storage) +"fK" = (/obj/cable,/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/eva_storage) +"fL" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/engine_access) +"fM" = (/obj/machinery/computer/engine{id = 3; access = "5000/0030"},/turf/station/floor,/area/engine/prototype_engine) +"fN" = (/obj/machinery/connector{tag = ""; suffix = ""},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"fO" = (/obj/machinery/power/apc{dir = 4; cell_type = 0},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"fP" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/engine/generator) +"fQ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/generator) +"fR" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/generator) +"fS" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/engine/generator) +"fT" = (/obj/machinery/power/terminal{dir = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine/generator) +"fU" = (/obj/machinery/power/smes{n_tag = "Main No. 2"},/turf/station/floor,/area/engine/generator) +"fV" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/engine/generator) +"fW" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/wall,/area/engine) +"fX" = (/obj/landmark{name = "CTF-base-Engine"},/turf/station/floor,/area/engine/engine_hallway) +"fY" = (/obj/closet/emcloset,/turf/station/floor,/area/engine/engine_hallway) +"fZ" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine/engine_gas_storage) +"ga" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/extinguisher,/obj/machinery/camera{dir = 8; c_tag = "Plasma Storage"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_gas_storage) +"gb" = (/obj/machinery/vent{tag = "2"; dir = 4; p_dir = 4},/turf/station/engine/floor,/area/aux_engine) +"gc" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/machinery/pipes,/obj/machinery/meter,/turf/station/engine/floor,/area/aux_engine) +"gd" = (/obj/machinery/valve{dir = 4; id = "auxv1"},/turf/station/floor,/area/aux_engine) +"ge" = (/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/turf/station/floor,/area/aux_engine) +"gf" = (/turf/station/floor,/area/aux_engine) +"gg" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/eva_storage) +"gh" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/eva_storage) +"gi" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/eva_storage) +"gj" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/eva_storage) +"gk" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "2100"},/obj/landmark/alterations{name = "barrier"},/obj/machinery/light_switch{pixel_x = 24},/turf/station/floor,/area/eva_storage) +"gl" = (/obj/landmark/alterations{name = "barrier"},/turf/station/wall,/area) +"gm" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine_access) +"gn" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine_access) +"go" = (/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gp" = (/obj/machinery/manifold{dir = 8},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gq" = (/obj/machinery/door_control{pixel_x = 28; pixel_y = 0; id = "smallengine"},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gr" = (/obj/machinery/camera{dir = 4; c_tag = "Generator Room (West)"},/turf/station/floor,/area/engine/generator) +"gs" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/engine/generator) +"gt" = (/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/engine/generator) +"gu" = (/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/turf/station/floor,/area/engine/generator) +"gv" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/generator) +"gw" = (/obj/machinery/pipes{tag = ""; icon_state = "6"; p_dir = 6},/turf/station/floor,/area/engine/generator) +"gx" = (/obj/machinery/power/terminal{dir = 4},/obj/cable,/turf/station/floor,/area/engine/generator) +"gy" = (/obj/machinery/power/smes{n_tag = "Main No. 3"},/turf/station/floor,/area/engine/generator) +"gz" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/engine/generator) +"gA" = (/obj/machinery/atmoalter/canister/co2canister,/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/engine/engine_gas_storage) +"gB" = (/obj/machinery/atmoalter/canister/co2canister,/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/engine/engine_gas_storage) +"gC" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/engine/engine_gas_storage) +"gD" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine/engine_gas_storage) +"gE" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/engine/floor,/area/aux_engine) +"gF" = (/obj/machinery/connector{dir = 4; p_dir = 4},/turf/station/floor,/area/aux_engine) +"gG" = (/obj/machinery/manifold{dir = 8},/turf/station/floor,/area/aux_engine) +"gH" = (/obj/machinery/camera{dir = 4; c_tag = "Control Access"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/controlaccess) +"gI" = (/turf/station/floor,/area/controlaccess) +"gJ" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/controlaccess) +"gK" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/controlaccess) +"gL" = (/obj/machinery/door/airlock{access = "2000"},/turf/station/floor,/area/engine/prototype_engine) +"gM" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/obj/machinery/junction{dir = 1},/turf/station/floor,/area/engine/prototype_engine) +"gN" = (/obj/machinery/pipes{tag = ""; icon_state = "6"; p_dir = 6},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/camera{dir = 4; c_tag = "Prototype Engine"},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gO" = (/obj/machinery/pipes,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gP" = (/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gQ" = (/obj/machinery/valve{dir = 1; id = "auxv1"},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gR" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"gS" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/door/airlock{access = "5030"; locked = 1},/turf/station/floor,/area/engine/prototype_engine) +"gT" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/engine/generator) +"gU" = (/turf/station/floor,/area/engine/generator) +"gV" = (/obj/machinery/circulator{status = 0},/turf/station/floor,/area/engine/generator) +"gW" = (/obj/machinery/power/generator,/turf/station/floor,/area/engine/generator) +"gX" = (/obj/machinery/circulator{icon_state = "circ2-off"; side = 2; status = 0},/turf/station/floor,/area/engine/generator) +"gY" = (/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/floor,/area/engine/generator) +"gZ" = (/obj/machinery/connector,/turf/station/floor,/area/engine/generator) +"ha" = (/obj/machinery/firealarm{pixel_x = 32},/obj/machinery/power/monitor,/turf/station/floor,/area/engine/generator) +"hb" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "2030"},/turf/station/floor,/area/engine/engine_gas_storage) +"hc" = (/obj/machinery/door/poddoor{name = "hatch"; id = "aux1"},/turf/station/engine/floor,/area/aux_engine) +"hd" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/engine/floor,/area/aux_engine) +"he" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/engine/floor,/area/aux_engine) +"hf" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/aux_engine) +"hg" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/controlaccess) +"hh" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/controlaccess) +"hi" = (/obj/machinery/door,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine_access) +"hj" = (/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/engine_access) +"hk" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine_access) +"hl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine_access) +"hm" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/engine_access) +"hn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/prototype_engine) +"ho" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"hp" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"hq" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"hr" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"hs" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/junction,/turf/station/floor,/area/engine) +"ht" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor,/area/engine) +"hu" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/tank/oxygentank,/turf/station/floor,/area/engine/generator) +"hv" = (/obj/machinery/pipes,/obj/machinery/meter,/turf/station/floor,/area/engine/generator) +"hw" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/turf/station/floor,/area/engine/generator) +"hx" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/engine/generator) +"hy" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor,/area/engine/generator) +"hz" = (/obj/machinery/light_switch{pixel_x = 24; pixel_y = 0},/turf/station/floor,/area/engine/generator) +"hA" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/wall,/area/engine) +"hB" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"hC" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/camera{dir = 4; c_tag = "Engine Hall (Center)"},/turf/station/floor,/area/engine/engine_hallway) +"hD" = (/obj/machinery/power/apc{dir = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/engine/engine_hallway) +"hE" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/window{dir = 4},/obj/item/weapon/radio/intercom{pixel_y = 32},/turf/station/floor,/area/engine/engine_hallway) +"hF" = (/obj/machinery/light_switch{pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"hG" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"hH" = (/obj/machinery/camera{dir = 8; c_tag = "Engine Hallway (E)"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"hI" = (/obj/machinery/igniter,/turf/station/engine/floor,/area/aux_engine) +"hJ" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/engine/floor,/area/aux_engine) +"hK" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/engine/floor,/area/aux_engine) +"hL" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/turf/station/floor,/area/aux_engine) +"hM" = (/obj/machinery/door_control{pixel_x = 28; pixel_y = 0; id = "aux1"},/turf/station/floor,/area/aux_engine) +"hN" = (/obj/window,/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/controlaccess) +"hO" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/controlaccess) +"hP" = (/obj/window,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/controlaccess) +"hQ" = (/obj/window,/turf/station/floor,/area/controlaccess) +"hR" = (/obj/window,/obj/machinery/light_switch{pixel_x = 24},/turf/station/floor,/area/controlaccess) +"hS" = (/obj/window{dir = 8},/obj/window{dir = 4},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"hT" = (/obj/machinery/connector{dir = 4; p_dir = 4},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"hU" = (/obj/machinery/circulator{status = 0},/turf/station/floor,/area/engine/prototype_engine) +"hV" = (/obj/machinery/power/generator,/turf/station/floor,/area/engine/prototype_engine) +"hW" = (/obj/machinery/circulator{icon_state = "circ2-off"; side = 2; status = 0},/turf/station/floor,/area/engine/prototype_engine) +"hX" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "3"},/obj/machinery/gas_sensor{id = 3},/obj/machinery/igniter,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine) +"hY" = (/obj/machinery/vent{dir = 1; p_dir = 1},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine) +"hZ" = (/obj/grille,/obj/machinery/door/poddoor{name = "hatch"; icon_state = "pdoor0"; opacity = 0; density = 0; p_open = 1; id = "smallengine"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine) +"ia" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table,/obj/item/weapon/clothing/gloves/yellow,/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/engine/generator) +"ib" = (/obj/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper/engine{pixel_x = 4; pixel_y = 6},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/flashlight,/turf/station/floor,/area/engine/generator) +"ic" = (/obj/closet/emcloset,/turf/station/floor,/area/engine/generator) +"id" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine/generator) +"ie" = (/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/generator) +"if" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2020"},/turf/station/floor,/area/engine/generator) +"ig" = (/obj/machinery/light_switch{pixel_y = 24},/turf/station/floor,/area/engine/engine_hallway) +"ih" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_hallway) +"ii" = (/obj/machinery/door/window,/turf/station/floor,/area/engine/engine_hallway) +"ij" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/engine/engine_hallway) +"ik" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/engine/engine_hallway) +"il" = (/obj/machinery/door/airlock{access = "2030"},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aux_engine) +"im" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aux_engine) +"in" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aux_engine) +"io" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area/aux_engine) +"ip" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aux_engine) +"iq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/controlaccess) +"ir" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/controlaccess) +"is" = (/obj/machinery/computer/secure_data,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/control_room) +"it" = (/obj/machinery/computer/card,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/control_room) +"iu" = (/obj/table,/obj/item/weapon/paper/Map,/obj/item/weapon/radio/intercom,/turf/station/floor,/area/control_room) +"iv" = (/obj/machinery/computer/communications,/turf/station/floor,/area/control_room) +"iw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/obj/machinery/camera{c_tag = "Control Room"},/turf/station/floor,/area/control_room) +"ix" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/control_room) +"iy" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/obj/item/weapon/radio/signaler{freq = 140.9},/turf/station/floor,/area/control_room) +"iz" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/floor,/area/control_room) +"iA" = (/obj/table{icon_state = "corners"; dir = 5},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"iB" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"iC" = (/obj/machinery/camera{dir = 4; c_tag = "Prototype Engine"},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"iD" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"iE" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/junction{dir = 1},/turf/station/floor,/area/engine) +"iF" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/machinery/inlet,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/machinery/door/poddoor{name = "hatch"; icon_state = "pdoor0"; opacity = 0; density = 0; id = "smallengine_inlet"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine) +"iG" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/item/weapon/wrench,/obj/machinery/alarm{pixel_x = -32},/turf/station/floor,/area/engine/generator) +"iH" = (/obj/machinery/valve{dir = 1; id = "auxv1"},/turf/station/floor,/area/engine/generator) +"iI" = (/obj/watertank,/turf/station/floor,/area/engine/engine_hallway) +"iJ" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine/engine_hallway) +"iK" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine/engine_hallway) +"iL" = (/obj/landmark{name = "CTF-wardrobe-Engine"},/turf/station/floor,/area/engine/engine_hallway) +"iM" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine/engine_hallway) +"iN" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_hallway) +"iO" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine/engine_hallway) +"iP" = (/obj/item/weapon/extinguisher,/obj/window{dir = 4},/turf/station/floor,/area/engine/engine_hallway) +"iQ" = (/obj/table,/obj/machinery/cell_charger,/turf/station/floor,/area/engine/engine_hallway) +"iR" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine/engine_hallway) +"iS" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/aux_engine) +"iT" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aux_engine) +"iU" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2020"},/turf/station/floor,/area/aux_engine) +"iV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/controlaccess) +"iW" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/controlaccess) +"iX" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/controlaccess) +"iY" = (/turf/station/floor,/area/control_room) +"iZ" = (/obj/stool/chair{dir = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/control_room) +"ja" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/control_room) +"jb" = (/obj/stool/chair{dir = 1},/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/control_room) +"jc" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/control_room) +"jd" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/pen,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"je" = (/obj/machinery/manifold{dir = 2},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"jf" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/obj/machinery/door_control{pixel_x = 28; pixel_y = 0; id = "smallengine_inlet"},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"jg" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/r_wall,/area/engine) +"jh" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/obj/machinery/junction,/turf/station/floor,/area/engine) +"ji" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area/engine) +"jj" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/engine) +"jk" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/engine/engine_hallway) +"jl" = (/obj/machinery/light_switch{pixel_x = -24},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aux_engine) +"jm" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/wrench,/obj/item/weapon/flashlight,/turf/station/floor,/area/aux_engine) +"jn" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aux_engine) +"jo" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/controlaccess) +"jp" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/control_room) +"jq" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/control_room) +"jr" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room) +"js" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room) +"jt" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Research"},/turf/station/floor,/area/control_room) +"ju" = (/obj/table,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/clipboard,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"jv" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/engine/prototype_engine) +"jw" = (/obj/machinery/pipes{tag = ""; icon_state = "6"; p_dir = 6},/turf/station/r_wall,/area/engine) +"jx" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/turf/station/r_wall,/area/engine) +"jy" = (/turf/station/floor,/area/repair_bay) +"jz" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/repair_bay) +"jA" = (/obj/machinery/alarm{pixel_y = 24},/obj/weldfueltank,/turf/station/floor,/area/repair_bay) +"jB" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/clothing/gloves/yellow,/turf/station/floor,/area/repair_bay) +"jC" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "3"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"jD" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "6"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"jE" = (/obj/machinery/pipes/heat_exch,/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"jF" = (/obj/machinery/pipes/heat_exch,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"jG" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "10"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"jH" = (/obj/machinery/door/poddoor{id = "ex"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"jI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/door_control{pixel_x = 0; pixel_y = 28; id = "ex"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"jJ" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"jK" = (/obj/item/weapon/radio/intercom{pixel_y = 32},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"jL" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/computer/engine,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"jM" = (/obj/machinery/light_switch{pixel_y = 24},/turf/station/floor,/area/engine/engine_storage) +"jN" = (/turf/station/floor,/area/engine/engine_storage) +"jO" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_storage) +"jP" = (/obj/machinery/firealarm{pixel_y = -32},/obj/item/weapon/storage/firstaid/regular,/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/obj/item/weapon/extinguisher,/turf/station/floor,/area/aux_engine) +"jQ" = (/obj/weldfueltank,/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/aux_engine) +"jR" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area/aux_engine) +"jS" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aux_engine) +"jT" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/canister/oxygencanister,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/aux_engine) +"jU" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aux_engine) +"jV" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/controlaccess) +"jW" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/controlaccess) +"jX" = (/obj/machinery/door/window,/turf/station/floor,/area/controlaccess) +"jY" = (/obj/landmark{name = "CTF-base-CR"},/turf/station/floor,/area/control_room) +"jZ" = (/obj/table,/obj/item/weapon/paper/jobs,/obj/item/weapon/storage/id_kit,/turf/station/floor,/area/control_room) +"ka" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/control_room) +"kb" = (/obj/table,/turf/station/floor,/area/control_room) +"kc" = (/obj/stool/chair{dir = 4},/obj/start{name = "Captain"},/turf/station/floor,/area/control_room) +"kd" = (/obj/table,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/obj/item/weapon/clipboard,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"ke" = (/obj/machinery/pipes,/turf/station/r_wall,/area/engine) +"kf" = (/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/repair_bay) +"kg" = (/obj/machinery/door/airlock,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/repair_bay) +"kh" = (/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/machinery/pod{dir = 8},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/repair_bay) +"ki" = (/obj/machinery/camera{dir = 8; c_tag = "Pod repair bay"},/turf/station/floor,/area/repair_bay) +"kj" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "6"},/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kk" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "9"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kl" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"km" = (/obj/machinery/connector{tag = ""; suffix = ""},/obj/machinery/atmoalter/canister/poisoncanister{anchored = 1; c_status = 3},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kn" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"ko" = (/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kp" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2020"},/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kq" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine/engine_storage) +"kr" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/engine/engine_storage) +"ks" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_storage) +"kt" = (/obj/watertank,/turf/station/floor,/area/controlaccess) +"ku" = (/obj/window{dir = 4},/turf/station/floor,/area/controlaccess) +"kv" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/control_room) +"kw" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/control_room) +"kx" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/control_room) +"ky" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/control_room) +"kz" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Personnel"},/turf/station/floor,/area/control_room) +"kA" = (/obj/table,/obj/item/weapon/clipboard,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"kB" = (/obj/item/weapon/multitool,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/repair_bay) +"kC" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/repair_bay) +"kD" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "3"},/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kE" = (/obj/machinery/gas_sensor{id = 1},/obj/machinery/inlet{dir = 8},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kF" = (/obj/machinery/vent{tag = "2"; dir = 4; p_dir = 4},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kG" = (/obj/machinery/pipes,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kH" = (/obj/machinery/pipes,/obj/machinery/meter,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"kI" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/machinery/valve{dir = 4},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kJ" = (/obj/machinery/manifold{dir = 8},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kK" = (/obj/start{name = "Engineer"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"kL" = (/obj/closet/emcloset,/turf/station/floor,/area/tech_storage) +"kM" = (/obj/closet/emcloset,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/tech_storage) +"kN" = (/obj/closet/wardrobe/yellow,/turf/station/floor,/area/tech_storage) +"kO" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/flashlight,/turf/station/floor,/area/tech_storage) +"kP" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/cell{charge = 100},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/flashlight,/turf/station/floor,/area/tech_storage) +"kQ" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/obj/item/weapon/cell{charge = 100},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/tech_storage) +"kR" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/tech_storage) +"kS" = (/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/controlaccess) +"kT" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/controlaccess) +"kU" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/controlaccess) +"kV" = (/obj/window{dir = 4},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/controlaccess) +"kW" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/sop,/obj/item/weapon/paper/Internal,/obj/item/weapon/infra,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/control_room) +"kX" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Internal,/obj/item/weapon/radio/signaler,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/item/weapon/paper/engine{pixel_x = 4; pixel_y = 6},/turf/station/floor,/area/control_room) +"kY" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/control_room) +"kZ" = (/obj/stool/chair,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/control_room) +"la" = (/obj/stool/chair,/turf/station/floor,/area/control_room) +"lb" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/syringe,/turf/station/floor,/area/control_room) +"lc" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/bottle/s_tox,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"ld" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/obj/item/weapon/extinguisher,/turf/station/floor,/area/repair_bay) +"le" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/repair_bay) +"lf" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/repair_bay) +"lg" = (/obj/machinery/pipes/heat_exch{tag = ""; icon_state = "5"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"lh" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"li" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lk" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"ll" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/engine/engine_hallway) +"lm" = (/obj/machinery/door/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine/engine_storage) +"ln" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{dir = 4; c_tag = "Technician Office"},/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/tech_storage) +"lo" = (/obj/start{name = "Station Technician"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/tech_storage) +"lp" = (/turf/station/floor,/area/tech_storage) +"lq" = (/obj/stool,/turf/station/floor,/area/tech_storage) +"lr" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/tech_storage) +"ls" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/controlaccess) +"lt" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/control_room) +"lu" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/Map,/obj/item/weapon/timer,/obj/item/weapon/t_scanner,/turf/station/floor,/area/control_room) +"lv" = (/obj/landmark{name = "CTF-supply-CR"},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/control_room) +"lw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/jobs,/obj/manifest,/obj/cable,/obj/machinery/power/apc{cell_type = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/control_room) +"lx" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/card/id,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/control_room) +"ly" = (/obj/machinery/computer/airtunnel,/turf/station/floor,/area/control_room) +"lz" = (/obj/machinery/computer/engine,/turf/station/floor,/area/control_room) +"lA" = (/obj/table{icon_state = "corners"; dir = 10},/obj/machinery/recharger,/turf/station/floor,/area/control_room) +"lB" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/control_room) +"lC" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/repair_bay) +"lD" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/machinery/camera{dir = 4; c_tag = "Main Engine"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lE" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/weldfueltank,/turf/station/floor,/area/engine/engine_storage) +"lG" = (/obj/item/weapon/storage/backpack,/turf/station/floor,/area/engine/engine_storage) +"lH" = (/obj/machinery/atmoalter/canister/oxygencanister,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_storage) +"lI" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/tech_storage) +"lJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/tech_storage) +"lK" = (/obj/start{name = "Technical Assistant"},/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/tech_storage) +"lL" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/tech_storage) +"lM" = (/obj/weldfueltank,/turf/station/floor,/area/tech_storage) +"lN" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/controlaccess) +"lO" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/control_room) +"lP" = (/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"lQ" = (/obj/machinery/door/poddoor,/turf/station/engine/floor,/area/escapezone) +"lR" = (/obj/machinery/mass_driver{dir = 8},/obj/item/weapon/tank/oxygentank,/turf/station/engine/floor,/area/escapezone) +"lS" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/engine/floor,/area/escapezone) +"lT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/escapezone) +"lU" = (/obj/machinery/computer/pod{name = "Mass Driver"},/turf/station/floor,/area/escapezone) +"lV" = (/obj/grille,/obj/machinery/door/poddoor{name = "hatch"; icon_state = "pdoor0"; opacity = 0; density = 0; id = "ex2"},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"lW" = (/obj/table{icon_state = "alone"},/obj/item/weapon/clipboard,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/analyzer,/obj/item/weapon/flashlight,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lX" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/machinery/camera{dir = 8; c_tag = "Engine Control"},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"lY" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/wall,/area/engine) +"lZ" = (/obj/landmark/alterations{name = "Security Locker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"ma" = (/obj/closet/emcloset,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"mb" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/toolbox/electrical,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/turf/station/floor,/area/engine/engine_storage) +"mc" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_storage) +"md" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/clipboard,/obj/machinery/power/apc{dir = 4},/obj/cable,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine/engine_storage) +"me" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/tech_storage) +"mf" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area) +"mg" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/controlaccess) +"mh" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/secure_storage) +"mi" = (/obj/table,/obj/item/weapon/card/id/captains_spare,/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/obj/landmark{name = "Nuclear-Disk"},/turf/station/floor,/area/secure_storage) +"mj" = (/obj/machinery/atmoalter/canister/poisoncanister{t_status = 1; t_per = 100000},/turf/station/floor,/area) +"mk" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/escapezone) +"ml" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/escapezone) +"mm" = (/obj/item/weapon/hand_tele,/obj/grille,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"mn" = (/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"mo" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mp" = (/obj/machinery/door_control{pixel_x = 0; pixel_y = 28; id = "ex2"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mq" = (/obj/closet/wardrobe/yellow,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mr" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/engine/engine_hallway) +"ms" = (/obj/weldfueltank,/turf/station/floor,/area/engine/engine_hallway) +"mt" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/controlaccess) +"mu" = (/obj/machinery/door/window,/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/controlaccess) +"mv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/computer/security,/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/secure_storage) +"mw" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/secure_storage) +"mx" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/secure_storage) +"my" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/secure_storage) +"mz" = (/obj/machinery/computer/prison_shuttle,/turf/station/floor,/area/secure_storage) +"mA" = (/obj/item/weapon/ammo/a357,/turf/station/floor,/area) +"mB" = (/obj/machinery/door/poddoor{id = 2},/turf/station/engine/floor,/area/escapezone) +"mC" = (/obj/machinery/mass_driver{dir = 8; id = 2},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone) +"mD" = (/obj/machinery/computer/pod{id = 2},/turf/station/floor,/area/escapezone) +"mE" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/escapezone) +"mF" = (/obj/machinery/computer/engine,/turf/station/floor,/area/escapezone) +"mG" = (/obj/machinery/computer/communications,/turf/station/floor,/area/escapezone) +"mH" = (/obj/grille,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"mI" = (/obj/machinery/gas_sensor{id = 2},/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"mJ" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/obj/machinery/pipes,/obj/machinery/meter,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mK" = (/obj/machinery/connector{dir = 8; p_dir = 8},/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mM" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mN" = (/obj/machinery/power/apc{dir = 4; cell_type = 2},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"mO" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/engine/engine_hallway) +"mP" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/controlaccess) +"mQ" = (/obj/machinery/power/monitor,/turf/station/floor,/area/secure_storage) +"mR" = (/turf/station/floor,/area/secure_storage) +"mS" = (/obj/secloset/captains,/turf/station/floor,/area/secure_storage) +"mT" = (/obj/machinery/camera{dir = 4; c_tag = "Escape Pod Bay"},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/escapezone) +"mU" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/escapezone) +"mV" = (/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/escapezone) +"mW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/escapezone) +"mX" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/escapezone) +"mY" = (/obj/machinery/igniter,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"mZ" = (/obj/machinery/computer/engine{id = 2},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"na" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/computer/atmosphere/siphonswitch{otherarea = "engine/combustion"},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"nb" = (/obj/table,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/engine/engine_hallway) +"nc" = (/obj/watertank,/turf/station/floor,/area/hallways/labaccess) +"nd" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/hallways/labaccess) +"ne" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"nf" = (/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"ng" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/controlaccess) +"nh" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/controlaccess) +"ni" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/controlaccess) +"nj" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/machinery/power/apc,/turf/station/floor,/area/controlaccess) +"nk" = (/obj/machinery/camera{dir = 4; c_tag = "Secure Storage"},/obj/landmark/alterations{name = "Security Locker"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/secure_storage) +"nl" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/secure_storage) +"nm" = (/obj/secloset/highsec,/turf/station/floor,/area/secure_storage) +"nn" = (/obj/machinery/door/poddoor{id = 3},/turf/station/engine/floor,/area/escapezone) +"no" = (/obj/machinery/mass_driver{dir = 8; id = 3},/obj/machinery/pod{id = 3},/turf/station/engine/floor,/area/escapezone) +"np" = (/obj/machinery/computer/pod{id = 3},/turf/station/floor,/area/escapezone) +"nq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/escapezone) +"nr" = (/turf/station/floor,/area/escapezone) +"ns" = (/obj/cable,/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/escapezone) +"nt" = (/obj/item/weapon/gun/revolver,/obj/grille,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"nu" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/engine/floor{oxygen = 3.6e+006; poison = 0; n2 = 0},/area/engine/combustion) +"nv" = (/obj/machinery/injector{dir = 4},/turf/station/wall,/area/engine/engine_control{linkarea = "engine/combustion"}) +"nw" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"nx" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"ny" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"nz" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/engine/engine_control{linkarea = "engine/combustion"}) +"nA" = (/turf/station/floor,/area/hallways/labaccess) +"nB" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"nC" = (/obj/machinery/light_switch{pixel_x = 24},/turf/station/floor,/area/hallways/labaccess) +"nD" = (/obj/landmark/alterations{name = "Security Locker"},/obj/cable,/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/secure_storage) +"nE" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/secure_storage) +"nF" = (/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area) +"nG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/escapezone) +"nH" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/escapezone) +"nI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/escapezone) +"nJ" = (/obj/machinery/camera{dir = 4; c_tag = "Engine Hall (South)"},/turf/station/floor,/area/engine/engine_hallway) +"nK" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/engine/engine_hallway) +"nL" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine) +"nM" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/turf/station/floor,/area/hallways/labaccess) +"nN" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/hallways/labaccess) +"nO" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/hallways/labaccess) +"nP" = (/obj/weldfueltank,/turf/station/floor,/area/toolstorage) +"nQ" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/backpack,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/toolstorage) +"nR" = (/obj/item/weapon/infra,/obj/item/weapon/timer,/obj/cable,/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/toolstorage) +"nS" = (/obj/table{icon_state = "sides"; dir = 2},/obj/bedsheetbin,/turf/station/floor,/area/toolstorage) +"nT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper_bin{amount = 50},/obj/item/weapon/wrapping_paper,/obj/item/weapon/flashlight,/turf/station/floor,/area/toolstorage) +"nU" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/obj/item/weapon/t_scanner,/turf/station/floor,/area/toolstorage) +"nV" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/floor,/area/toolstorage) +"nW" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/cable_coil,/turf/station/floor,/area/toolstorage) +"nX" = (/obj/item/weapon/sheet/metal{amount = 50},/turf/station/floor,/area/toolstorage) +"nY" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/multitool,/turf/station/floor,/area/toolstorage) +"nZ" = (/obj/machinery/autolathe,/turf/station/floor,/area) +"oa" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/obj/landmark/alterations{name = "Security Locker"},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/secure_storage) +"ob" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/secure_storage) +"oc" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/secure_storage) +"od" = (/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area/secure_storage) +"oe" = (/turf/station/floor,/area) +"of" = (/obj/machinery/door/poddoor{id = 4},/turf/station/engine/floor,/area/escapezone) +"og" = (/obj/machinery/mass_driver{dir = 8; id = 4},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone) +"oh" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/escapezone) +"oi" = (/obj/machinery/computer/pod{id = 4},/turf/station/floor,/area/escapezone) +"oj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/escapezone) +"ok" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/escapezone) +"ol" = (/obj/item/weapon/extinguisher,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/escapezone) +"om" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/escapezone) +"on" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"oo" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"op" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/light_switch{pixel_y = -24},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"oq" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/engine/engine_hallway) +"or" = (/obj/machinery/alarm{pixel_y = -32},/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/floor,/area/engine/engine_hallway) +"os" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/wall,/area) +"ot" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"ou" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/toolstorage) +"ov" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/toolstorage) +"ow" = (/obj/item/weapon/timer,/obj/item/weapon/radio/beacon,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toolstorage) +"ox" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{c_tag = "Supply Room"},/obj/item/weapon/storage/firstaid/regular,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/toolstorage) +"oy" = (/obj/item/weapon/timer,/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage) +"oz" = (/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"oA" = (/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage) +"oB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/turf/station/floor,/area/toolstorage) +"oC" = (/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"oD" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"oE" = (/obj/item/weapon/igniter,/obj/item/weapon/crowbar,/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/toolstorage) +"oF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/infra,/obj/item/weapon/radio/beacon,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/toolstorage) +"oG" = (/obj/machinery/door/false_wall,/turf/station/floor,/area) +"oH" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/emcloset,/turf/station/floor,/area/secure_storage) +"oI" = (/obj/closet/emcloset,/turf/station/floor,/area/secure_storage) +"oJ" = (/obj/closet/emcloset,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/secure_storage) +"oK" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/emcloset,/turf/station/floor,/area/secure_storage) +"oL" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/airlock{access = "2000"},/turf/station/floor,/area/escapezone) +"oM" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/labaccess) +"oN" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"oO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/toolstorage) +"oP" = (/obj/item/weapon/infra_sensor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toolstorage) +"oQ" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/igniter,/obj/item/weapon/storage/backpack,/turf/station/floor,/area/toolstorage) +"oR" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/turf/station/floor,/area/toolstorage) +"oS" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/storage/backpack,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/toolstorage) +"oT" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage) +"oU" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"oV" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/timer,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"oW" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/toolstorage) +"oX" = (/obj/closet{name = "coffin"},/turf/station/floor,/area/chapel) +"oY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet{name = "coffin"},/turf/station/floor,/area/chapel) +"oZ" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/chapel) +"pa" = (/turf/station/floor,/area/chapel) +"pb" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/chapel) +"pc" = (/obj/landmark/alterations{name = "blob-directive"; icon_state = "x3"},/turf/station/floor,/area) +"pd" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"pe" = (/obj/machinery/door/window{dir = 4},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toolstorage) +"pf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock) +"pg" = (/obj/stool/chair,/turf/station/floor,/area/hallways/eastairlock) +"ph" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"pi" = (/turf/station/floor,/area/hallways/eastairlock) +"pj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/eastairlock) +"pk" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"pl" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"pm" = (/obj/machinery/camera{name = ""; icon_state = "blank"; dir = 4; network = "AS"; c_tag = "target scan 4"; invuln = 1},/turf/space,/area) +"pn" = (/obj/machinery/door,/turf/station/floor,/area/morgue) +"po" = (/obj/window{dir = 1},/obj/window,/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical) +"pp" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/airlock{access = "2000"},/turf/station/floor,/area/medical) +"pq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/labaccess) +"pr" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/centralhall) +"ps" = (/turf/station/floor,/area/hallways/centralhall) +"pt" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/centralhall) +"pu" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/hallways/centralhall) +"pv" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/centralhall) +"pw" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/hallways/eastairlock) +"px" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/hallways/eastairlock) +"py" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"pz" = (/obj/machinery/computer/pod{name = "Burial"; id = "chap1"; time = 60},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"pA" = (/obj/machinery/door,/turf/station/floor,/area/chapel) +"pB" = (/obj/morgue,/turf/station/floor,/area/morgue) +"pC" = (/turf/station/floor,/area/morgue) +"pD" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pE" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pF" = (/obj/window{dir = 4},/obj/closet/wardrobe/white,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pG" = (/obj/secloset/medical1,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pH" = (/obj/machinery/computer/med_data,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pI" = (/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pJ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pK" = (/obj/machinery/camera{c_tag = "Medical Bay"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pL" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pM" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pN" = (/obj/table{icon_state = "sides"},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pO" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"pP" = (/obj/machinery/alarm{pixel_y = 24},/obj/closet/wardrobe/white,/turf/station/floor,/area/medicalresearch) +"pQ" = (/obj/closet/l3closet,/turf/station/floor,/area/medicalresearch) +"pR" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/medicalresearch) +"pS" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/medicalresearch) +"pT" = (/obj/machinery/computer/med_data,/turf/station/floor,/area/medicalresearch) +"pU" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/medicalresearch) +"pV" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/machinery/camera{c_tag = "Medical Lab"},/turf/station/floor,/area/medicalresearch) +"pW" = (/obj/secloset/medical1,/turf/station/floor,/area/medicalresearch) +"pX" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/clothing/gloves/latex,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/pen,/obj/item/weapon/clipboard,/turf/station/floor,/area/medicalresearch) +"pY" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/dropper,/turf/station/floor,/area/medicalresearch) +"pZ" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/epilepsy,/turf/station/floor,/area/medicalresearch) +"qa" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/medicalresearch) +"qb" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/paper_bin,/turf/station/floor,/area/medicalresearch) +"qc" = (/obj/machinery/alarm,/turf/station/floor,/area/hallways/labaccess) +"qd" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"qe" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"qf" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/centralhall) +"qg" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"qh" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"qi" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"qj" = (/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"qk" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"ql" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/hallways/centralhall) +"qm" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"qn" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"qo" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"qp" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"qq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/hallways/eastairlock) +"qr" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/eastairlock) +"qs" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"qt" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"qu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 4},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qv" = (/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qw" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qx" = (/obj/stool/chair{dir = 8},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qy" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/morgue) +"qA" = (/obj/machinery/freezer,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qB" = (/obj/machinery/pipes/flexipipe,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qC" = (/obj/machinery/cryo_cell,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qD" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qE" = (/obj/landmark/alterations{name = "recharger"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qG" = (/obj/table{icon_state = "sides"; dir = 4},/obj/window{dir = 4},/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/healthanalyzer,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qH" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qI" = (/obj/item/weapon/brutepack,/obj/item/weapon/ointment,/obj/item/weapon/ointment,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qJ" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/medicalresearch) +"qK" = (/turf/station/floor,/area/medicalresearch) +"qL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medicalresearch) +"qM" = (/obj/stool/chair,/turf/station/floor,/area/medicalresearch) +"qN" = (/obj/machinery/camera{dir = 4; c_tag = "Central Hallway"},/turf/station/floor,/area/hallways/labaccess) +"qO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/centralhall) +"qP" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/hallways/centralhall) +"qQ" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"qR" = (/obj/machinery/camera{dir = 8; c_tag = "Assembly Room"},/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/hallways/eastairlock) +"qS" = (/obj/table{icon_state = "sides"; dir = 4},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qT" = (/obj/stool/chair{dir = 4},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qU" = (/obj/table{icon_state = "alone"},/obj/item/weapon/paper{name = "Service"; pixel_x = 16; pixel_y = 16; info = "I am the resurrection and the life, saith the Lord: he that believeth in me, though he were dead, yet shall he live: and whosoever liveth and believeth in me shall never die.

    S. John 11. 25, 26"},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"qV" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qW" = (/obj/landmark/alterations{name = "Security Locker"},/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qX" = (/obj/stool/chair,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qY" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/paper/Toxin,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"qZ" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"ra" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rb" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rc" = (/obj/stool/chair{dir = 8},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rd" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/medicalresearch) +"re" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/medicalresearch) +"rf" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/medicalresearch) +"rg" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/medicalresearch) +"rh" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/medicalresearch) +"ri" = (/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"rj" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/centralhall) +"rk" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage) +"rl" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/oxygen_storage) +"rm" = (/obj/machinery/dispenser,/turf/station/floor,/area/oxygen_storage) +"rn" = (/obj/machinery/dispenser,/obj/machinery/camera{c_tag = "Toxin Gas Storage"},/turf/station/floor,/area/oxygen_storage) +"ro" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/oxygen_storage) +"rp" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 1},/turf/station/floor,/area/oxygen_storage) +"rq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/oxygen_storage) +"rr" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/oxygen_storage) +"rs" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock) +"rt" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock) +"ru" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock) +"rv" = (/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"rw" = (/obj/window,/turf/space,/area) +"rx" = (/obj/grille,/obj/window,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"ry" = (/obj/table{icon_state = "sides"; dir = 4},/obj/window,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"rz" = (/obj/window,/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"rA" = (/obj/machinery/door/window{dir = 4},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"rB" = (/obj/machinery/camera{dir = 8; c_tag = "Chapel"},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"rC" = (/obj/machinery/camera{dir = 8; c_tag = "Morgue"},/turf/station/floor,/area/morgue) +"rD" = (/obj/machinery/sleeper,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rE" = (/obj/machinery/computer/sleep_console,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rF" = (/obj/window{dir = 4},/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rG" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/Toxin,/obj/item/weapon/pill_canister/epilepsy,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/window,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rH" = (/obj/table{icon_state = "sides"; dir = 2},/obj/window,/obj/item/weapon/clipboard,/obj/item/weapon/syringe,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rI" = (/obj/table{icon_state = "sides"; dir = 2},/obj/window,/obj/item/weapon/pen,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rJ" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/syringe,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rK" = (/obj/start{name = "Medical Doctor"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rL" = (/obj/machinery/firealarm{pixel_x = 32},/obj/stool/chair{dir = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"rM" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable,/turf/station/floor,/area/medicalresearch) +"rN" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/medicalresearch) +"rO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/firealarm{pixel_y = -32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/medicalresearch) +"rP" = (/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/medicalresearch) +"rQ" = (/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medicalresearch) +"rR" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/medicalresearch) +"rS" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/medicalresearch) +"rT" = (/obj/window,/obj/secloset/medical2,/turf/station/floor,/area/medicalresearch) +"rU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window,/turf/station/floor,/area/medicalresearch) +"rV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/window,/turf/station/floor,/area/medicalresearch) +"rW" = (/obj/window,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/medicalresearch) +"rX" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"rY" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/hallways/labaccess) +"rZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"sa" = (/obj/machinery/alarm{pixel_y = 24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/centralhall) +"sb" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage) +"sc" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/oxygen_storage) +"sd" = (/turf/station/floor,/area/oxygen_storage) +"se" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/oxygen_storage) +"sf" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"sg" = (/obj/stool/chair{dir = 1},/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock) +"sh" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/hallways/eastairlock) +"si" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"sj" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/hallways/eastairlock) +"sk" = (/obj/machinery/door/poddoor{name = "Burial lock"; id = "chap1"},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"sl" = (/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"sm" = (/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/chapel) +"sn" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/chapel) +"so" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/chapel) +"sp" = (/obj/machinery/mass_driver{dir = 8; id = "chap1"},/obj/machinery/door/window,/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/chapel) +"sq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/morgue) +"sr" = (/obj/landmark{name = "CTF-supply-Medical"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"ss" = (/obj/machinery/door/window,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"st" = (/obj/landmark{name = "CTF-base-Medical"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"su" = (/obj/stool/chair{dir = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"sv" = (/obj/window{dir = 1},/turf/station/floor,/area/medicalresearch) +"sw" = (/obj/window{dir = 4},/obj/secloset/animal,/turf/station/floor,/area/medicalresearch) +"sx" = (/obj/window{dir = 1},/obj/window{dir = 8},/obj/machinery/dna_scanner,/turf/station/floor,/area/medicalresearch) +"sy" = (/obj/window{dir = 1},/obj/machinery/scan_console,/turf/station/floor,/area/medicalresearch) +"sz" = (/obj/window{dir = 1},/obj/machinery/computer/dna,/turf/station/floor,/area/medicalresearch) +"sA" = (/obj/window{dir = 1},/obj/machinery/restruct,/turf/station/floor,/area/medicalresearch) +"sB" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/turf/station/floor,/area/medicalresearch) +"sC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable,/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/centralhall) +"sD" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"sE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"sF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/hallways/eastairlock) +"sG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"sH" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/hallways/eastairlock) +"sI" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"sJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/turf/station/floor,/area/hallways/eastairlock) +"sK" = (/obj/window{dir = 1},/turf/space,/area) +"sL" = (/obj/grille,/obj/window{dir = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"sM" = (/obj/table{icon_state = "sides"; dir = 4},/obj/window{dir = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"sN" = (/obj/window{dir = 1},/obj/window{dir = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"sO" = (/obj/window{dir = 1},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"sP" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/morgue) +"sQ" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc,/turf/station/floor,/area/morgue) +"sR" = (/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/morgue) +"sS" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/window{dir = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"sT" = (/obj/start{name = "Medical Assistant"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"sU" = (/obj/item/weapon/storage/toolbox,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"sV" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{icon = 'security.dmi'; access = "1300"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"sW" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/window{icon = 'security.dmi'; access = "1300"},/turf/station/floor,/area/medicalresearch) +"sX" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/medicalresearch) +"sY" = (/obj/window,/turf/station/floor,/area/medicalresearch) +"sZ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "1100"},/turf/station/floor,/area/medicalresearch) +"ta" = (/obj/start{name = "Medical Researcher"},/obj/window,/turf/station/floor,/area/medicalresearch) +"tb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window,/turf/station/floor,/area/medicalresearch) +"tc" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medicalresearch) +"td" = (/obj/machinery/door/window,/turf/station/floor,/area/medicalresearch) +"te" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area/medicalresearch) +"tf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/labaccess) +"tg" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/hallways/labaccess) +"th" = (/obj/machinery/firealarm{pixel_x = 32},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"ti" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/hallways/centralhall) +"tj" = (/obj/watertank,/turf/station/floor,/area/oxygen_storage) +"tk" = (/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/oxygen_storage) +"tl" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/eastairlock) +"tm" = (/obj/machinery/door/window{dir = 8},/obj/cable,/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"tn" = (/obj/stool/chair{dir = 4},/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"to" = (/obj/table{icon_state = "sides"; dir = 8},/obj/table{icon_state = "alone"},/obj/item/weapon/paper{name = "Service"; pixel_x = 16; pixel_y = 16; info = "

    We brought nothing into this world, and it is certain we can carry nothing out. The Lord gave, and the Lord hath taken away; blessed be the name of the Lord.

    Tim. 6. 7. Job 1. 21.

    As it was in the beginning, is now, and worlds without end. Amen."},/turf/station/floor{icon_state = "Floor3"},/area/chapel) +"tp" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/wall,/area) +"tq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tr" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"ts" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "id computer"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tt" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tv" = (/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tw" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tx" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"ty" = (/obj/machinery/alarm{pixel_y = -32},/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tz" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tA" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/medicalresearch) +"tB" = (/mob/monkey,/turf/station/floor,/area/medicalresearch) +"tC" = (/obj/window{dir = 8},/obj/window{dir = 1},/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/medicalresearch) +"tD" = (/obj/item/weapon/card/data{name = "M-conv-H"; function = "worthless"; data = "SBSWAVVWFWVAZSFBS"; special = "human"},/obj/item/weapon/card/data{name = "H-conv-M"; function = "worthless"; data = "CDAFNSDHE"; special = "monkey"},/obj/window{dir = 1},/turf/station/floor,/area/medicalresearch) +"tE" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/medicalresearch) +"tF" = (/obj/item/weapon/storage/disk_kit/disks,/turf/station/floor,/area/medicalresearch) +"tG" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/centralhall) +"tH" = (/obj/start{name = "Research Technician"},/turf/station/floor,/area/hallways/centralhall) +"tI" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/toxinlab) +"tJ" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/eastairlock) +"tK" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"tL" = (/obj/closet/emcloset,/turf/station/floor,/area/hallways/eastairlock) +"tM" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/chapel) +"tN" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/chapel) +"tO" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/chapel) +"tP" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/chapel) +"tQ" = (/obj/landmark{name = "CTF-wardrobe-Medical"},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tR" = (/obj/landmark{name = "CTF-wardrobe-Medical"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tS" = (/obj/window{dir = 4},/obj/cable,/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tT" = (/obj/stool/bed,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tU" = (/obj/stool/bed,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tV" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tW" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tX" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"tY" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/wall,/area) +"tZ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/medicalresearch) +"ua" = (/obj/sp_start{name = "gooddoggytreat"; desc = "Monkey in Med. Lab."; special = 3},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medicalresearch) +"ub" = (/obj/machinery/firealarm{pixel_y = -32},/obj/window{dir = 8},/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/medicalresearch) +"uc" = (/obj/item/weapon/card/data{name = "DNA-help"; function = "dna_seq"},/turf/station/floor,/area/medicalresearch) +"ud" = (/obj/item/weapon/card/data{name = "C-Help"; function = "dna_help"},/turf/station/floor,/area/medicalresearch) +"ue" = (/obj/item/weapon/card/data{name = "M-Mutate"; function = "data_mutate"; data = "14A"; special = ""},/obj/item/weapon/card/data{name = "S-Mutate"; function = "data_mutate"; data = "CDE"; special = ""},/obj/item/weapon/card/data{name = "A-Mutate"; function = "data_mutate"; data = "AEC"; special = ""},/turf/station/floor,/area/medicalresearch) +"uf" = (/obj/start{name = "Research Assistant"},/turf/station/floor,/area/hallways/centralhall) +"ug" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/l3closet,/turf/station/floor,/area/toxinlab) +"uh" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toxinlab) +"ui" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/toxinlab) +"uj" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/pen,/turf/station/floor,/area/toxinlab) +"uk" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/toxinlab) +"ul" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/heater{heatrate = 1.5e+006},/turf/station/floor,/area/toxinlab) +"um" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/obj/machinery/camera{dir = 4; c_tag = "East of Toxin Lab"},/turf/station/floor,/area/hallways/eastairlock) +"un" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/firedoor,/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/chapel) +"uo" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"up" = (/obj/machinery/door/window{dir = 8},/obj/landmark/alterations{name = "barrier"},/turf/station/floor{icon_state = "Floor2"},/area/medical) +"uq" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/wall,/area) +"ur" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/wall,/area) +"us" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area/medicalresearch) +"ut" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area/medicalresearch) +"uu" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area/medicalresearch) +"uv" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area/medicalresearch) +"uw" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area/medicalresearch) +"ux" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area/medicalresearch) +"uy" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/hallways/centralhall) +"uz" = (/obj/machinery/door/airlock{access = "1300"},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/hallways/centralhall) +"uA" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/toxinlab) +"uB" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/toxinlab) +"uC" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/toxinlab) +"uD" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/toxinlab) +"uE" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/toxinlab) +"uF" = (/turf/station/floor,/area/toxinlab) +"uG" = (/obj/machinery/light_switch{pixel_x = 24},/turf/station/floor,/area/toxinlab) +"uH" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock) +"uI" = (/obj/machinery/camera{name = ""; icon_state = "blank"; dir = 4; network = "AS"; c_tag = "target scan 2"; invuln = 1},/turf/space,/area) +"uJ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/station_teleport) +"uK" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/station_teleport) +"uL" = (/turf/station/floor,/area/station_teleport) +"uM" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/station_teleport) +"uN" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/radio/intercom{pixel_x = 32; freq = 140.2},/turf/station/floor,/area/station_teleport) +"uO" = (/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"uP" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/crew_quarters) +"uQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"uR" = (/obj/secloset/personal,/obj/machinery/camera{dir = 4; c_tag = "Personell Lockers"},/turf/station/floor,/area/crew_quarters) +"uS" = (/obj/machinery/alarm{pixel_y = 24},/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"uT" = (/obj/machinery/computer/card,/turf/station/floor,/area/hallways/loungehall) +"uU" = (/turf/station/floor,/area/hallways/loungehall) +"uV" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/loungehall) +"uW" = (/obj/closet/emcloset,/turf/station/floor,/area/hallways/loungehall) +"uX" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/loungehall) +"uY" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/loungehall) +"uZ" = (/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/hallways/loungehall) +"va" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"vb" = (/obj/item/weapon/radio/intercom{pixel_x = 0; pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"vc" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/wall,/area) +"vd" = (/obj/machinery/firealarm{pixel_x = -32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toxinlab) +"ve" = (/obj/item/weapon/radio/intercom{pixel_x = 32; freq = 140.4},/turf/station/floor,/area/toxinlab) +"vf" = (/obj/machinery/camera{dir = 4; c_tag = "Teleporter"},/turf/station/floor,/area/station_teleport) +"vg" = (/obj/machinery/computer/teleporter,/turf/station/floor,/area/station_teleport) +"vh" = (/obj/machinery/teleport/station,/turf/station/floor,/area/station_teleport) +"vi" = (/obj/machinery/teleport/hub,/turf/station/floor,/area/station_teleport) +"vj" = (/obj/machinery/door/airlock{access = "4000"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/station_teleport) +"vk" = (/turf/station/floor,/area/crew_quarters) +"vl" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/crew_quarters) +"vm" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent{tag = "dbg"},/turf/station/floor,/area/crew_quarters) +"vn" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/crew_quarters) +"vo" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/loungehall) +"vp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/loungehall) +"vq" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/hallways/loungehall) +"vr" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/wall,/area) +"vs" = (/obj/machinery/firealarm{pixel_x = 0; pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"vt" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/loungehall) +"vu" = (/obj/item/weapon/radio/intercom{pixel_y = 32; freq = 140},/turf/station/floor,/area/hallways/labaccess) +"vv" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/hallways/labaccess) +"vw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/centralhall) +"vx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; cell_type = 2},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/toxinlab) +"vy" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/toxinlab) +"vz" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/toxinlab) +"vA" = (/obj/start{name = "Toxin Researcher"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/toxinlab) +"vB" = (/obj/machinery/door/airlock{access = "1300"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"vC" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"vD" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"vE" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/hallways/eastairlock) +"vF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "alone"},/obj/item/weapon/hand_tele,/obj/item/weapon/radio/beacon,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/station_teleport) +"vG" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{cell_type = 0},/turf/station/floor,/area/station_teleport) +"vH" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/station_teleport) +"vI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/station_teleport) +"vJ" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/r_wall,/area) +"vK" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/crew_quarters) +"vL" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/crew_quarters) +"vM" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/crew_quarters) +"vN" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/crew_quarters) +"vO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/crew_quarters) +"vP" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/crew_quarters) +"vQ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"vR" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"vS" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/hallways/loungehall) +"vT" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/loungehall) +"vU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/loungehall) +"vV" = (/obj/machinery/light_switch{pixel_x = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/labaccess) +"vW" = (/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/toxinlab) +"vX" = (/obj/machinery/camera{dir = 8; c_tag = "Toxin Research Lab"},/obj/item/weapon/extinguisher,/turf/station/floor,/area/toxinlab) +"vY" = (/obj/cable,/obj/machinery/power/apc,/turf/station/floor,/area/hallways/eastairlock) +"vZ" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/eastairlock) +"wa" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/crew_quarters) +"wb" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/turf/station/floor,/area/crew_quarters) +"wc" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/obj/machinery/light_switch{pixel_x = -24},/turf/station/floor,/area/crew_quarters) +"wd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/hallways/loungehall) +"we" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/hallways/loungehall) +"wf" = (/obj/machinery/door/window,/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"wg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"wh" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/loungehall) +"wi" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"wj" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"wk" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/hallways/loungehall) +"wl" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/hallways/loungehall) +"wm" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"wn" = (/obj/machinery/door/window{dir = 4},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/hallways/labaccess) +"wo" = (/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/hallways/centralhall) +"wp" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toxinlab) +"wq" = (/obj/machinery/connector{tag = ""; suffix = ""},/obj/machinery/atmoalter/canister/poisoncanister{tag = ""; suffix = ""; c_status = 3},/turf/station/floor,/area/toxinlab) +"wr" = (/obj/machinery/connector{tag = ""; suffix = ""},/turf/station/floor,/area/toxinlab) +"ws" = (/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/toxinlab) +"wt" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/watertank,/turf/station/floor,/area/toxinlab) +"wu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/eastairlock) +"wv" = (/obj/grille,/turf/station/floor{name = "airlessFloor"; oxygen = 0; n2 = 0},/area) +"ww" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/crew_quarters) +"wx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/crew_quarters) +"wy" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/crew_quarters) +"wz" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/hallways/loungehall) +"wA" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/floor,/area/hallways/loungehall) +"wB" = (/obj/machinery/door/window{dir = 4},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/loungehall) +"wC" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/floor,/area/hallways/loungehall) +"wD" = (/obj/machinery/door/firedoor,/obj/machinery/firealarm{pixel_x = 32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"wE" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "3000"},/turf/station/floor,/area/security) +"wF" = (/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/canister/anesthcanister{c_per = 1e+006; c_status = 3},/turf/station/floor,/area/security) +"wG" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"wH" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toxinlab) +"wI" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/testlab1) +"wJ" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor,/area/toxinlab) +"wK" = (/obj/item/weapon/wrench,/turf/station/floor,/area/toxinlab) +"wL" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/machinery/door_control{name = "Emergency Vent Control"; pixel_y = -28; id = "bd1"},/turf/station/floor,/area/testlab1) +"wM" = (/obj/machinery/door/window{dir = 4},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/eastairlock) +"wN" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/crew_quarters) +"wO" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/crew_quarters) +"wP" = (/obj/table{icon_state = "alone"},/turf/station/floor,/area/crew_quarters) +"wQ" = (/obj/rack,/obj/item/weapon/clothing/under/blue,/obj/item/weapon/radio/headset,/turf/station/floor,/area/crew_quarters) +"wR" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/lounge) +"wS" = (/turf/station/floor,/area/lounge) +"wT" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/lounge) +"wU" = (/obj/watertank,/turf/station/floor,/area/lounge) +"wV" = (/obj/machinery/power/apc,/obj/cable,/turf/station/floor,/area/hallways/loungehall) +"wW" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/hallways/loungehall) +"wX" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/hallways/loungehall) +"wY" = (/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/hallways/loungehall) +"wZ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/loungehall) +"xa" = (/obj/secloset/security1,/turf/station/floor,/area/security) +"xb" = (/obj/item/weapon/clipboard,/obj/item/weapon/paper/courtroom,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; cell_type = 2},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/camera{dir = 2; c_tag = "Security (Main)"},/turf/station/floor,/area/security) +"xc" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/machinery/recharger,/obj/item/weapon/clothing/glasses/thermal,/obj/machinery/firealarm{pixel_y = 32},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/security) +"xd" = (/obj/secloset/security2,/turf/station/floor,/area/security) +"xe" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/security) +"xf" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"xg" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security) +"xh" = (/obj/machinery/firealarm{pixel_x = 32; pixel_y = 0},/obj/window{dir = 4},/turf/station/floor,/area/security) +"xi" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/r_wall,/area) +"xj" = (/obj/machinery/light_switch{pixel_x = 24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"xk" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/floor,/area/testlab1) +"xl" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/manifold{dir = 8},/turf/station/floor,/area/testlab1) +"xm" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area/testlab1) +"xn" = (/turf/station/floor,/area/shuttle_airlock) +"xo" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/shuttle_airlock) +"xp" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/shuttle_airlock) +"xq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/shuttle_airlock) +"xr" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/shuttle_airlock) +"xs" = (/obj/landmark/alterations{name = "prison shuttle"},/turf/station/floor,/area/shuttle_airlock) +"xt" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area) +"xu" = (/obj/machinery/door/window{dir = 4},/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/crew_quarters) +"xv" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/crew_quarters) +"xw" = (/obj/machinery/light_switch{pixel_x = -24},/turf/station/floor,/area/lounge) +"xx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/lounge) +"xy" = (/obj/stool,/turf/station/floor,/area/lounge) +"xz" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/lounge) +"xA" = (/obj/landmark{name = "CTF-wardrobe-Lounge"},/turf/station/floor,/area/lounge) +"xB" = (/obj/machinery/door/airlock{access = "0001"},/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/aircontrol) +"xC" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/security1,/turf/station/floor,/area/security) +"xD" = (/obj/start{name = "Forensic Technician"},/turf/station/floor,/area/security) +"xE" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security) +"xF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"xG" = (/turf/station/floor,/area/security) +"xH" = (/obj/window{dir = 4},/turf/station/floor,/area/security) +"xI" = (/obj/table,/obj/item/weapon/game_kit,/turf/station/floor,/area/brig) +"xJ" = (/turf/station/floor,/area/brig) +"xK" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/orange,/turf/station/floor,/area/brig) +"xL" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"xM" = (/obj/machinery/door/airlock{access = "1200"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/toxinlab) +"xN" = (/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"xO" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/machinery/vent{dir = 1; p_dir = 1},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"xP" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"xQ" = (/obj/machinery/alarm{pixel_x = 32},/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"xR" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock) +"xS" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/shuttle_airlock) +"xT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/shuttle_airlock) +"xU" = (/obj/machinery/door/window,/turf/station/floor,/area/shuttle_airlock) +"xV" = (/obj/closet/wardrobe,/turf/station/floor,/area/shuttle_airlock) +"xW" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/bed,/turf/station/floor,/area/sleep_area_annexe) +"xX" = (/obj/stool/bed,/turf/station/floor,/area/sleep_area_annexe) +"xY" = (/obj/stool/bed,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/sleep_area_annexe) +"xZ" = (/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/sleep_area) +"ya" = (/turf/station/floor,/area/sleep_area) +"yb" = (/obj/closet/wardrobe,/turf/station/floor,/area/sleep_area) +"yc" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/mixed,/turf/station/floor,/area/sleep_area) +"yd" = (/obj/closet/wardrobe/mixed,/turf/station/floor,/area/sleep_area) +"ye" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "alone"},/obj/bedsheetbin,/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/sleep_area) +"yf" = (/obj/closet,/turf/station/floor,/area/sleep_area) +"yg" = (/obj/machinery/firealarm{pixel_x = 32},/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/sleep_area) +"yh" = (/obj/machinery/camera{dir = 4; c_tag = "Lounge/Meeting Area"},/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/machinery/firealarm{pixel_x = -32; pixel_y = 0},/turf/station/floor,/area/lounge) +"yi" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/wirecutters,/obj/item/weapon/wrapping_paper,/turf/station/floor,/area/lounge) +"yj" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/pen,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/lounge) +"yk" = (/obj/stool,/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/lounge) +"yl" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airintake) +"ym" = (/obj/machinery/inlet{suffix = "d"; dir = 4},/obj/machinery/door/poddoor{name = "Vent Hatch"; id = "atmosventdoor"},/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"yn" = (/obj/landmark{name = "CTF-wardrobe-Atmo"},/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/obj/machinery/door_control{pixel_x = 0; pixel_y = -28; id = "atmosventdoor"},/turf/station/floor,/area/aircontrol) +"yo" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-Atmo"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"yp" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"yq" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/aircontrol) +"yr" = (/obj/machinery/computer/communications,/turf/station/floor,/area/security) +"ys" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "3000"},/turf/station/floor,/area/security) +"yt" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/security) +"yu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/security) +"yv" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/turf/station/floor,/area/security) +"yw" = (/obj/machinery/door/firedoor,/obj/grille,/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/obj/machinery/meter,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/security) +"yx" = (/obj/machinery/vent{tag = "2"; dir = 8; p_dir = 8},/turf/station/floor,/area/brig) +"yy" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/brig) +"yz" = (/obj/stool/bed,/turf/station/floor,/area/brig) +"yA" = (/obj/machinery/camera{dir = 8; c_tag = "Transit tunnel (East)"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"yB" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/toxinlab) +"yC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/machinery/power/apc{dir = 2; cell_type = 2},/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/testlab1) +"yD" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/testlab1) +"yE" = (/obj/bomb{btype = 2; explosive = 0; btemp = 400},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"yF" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock) +"yG" = (/obj/closet/wardrobe/mixed,/turf/station/floor,/area/shuttle_airlock) +"yH" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area) +"yI" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/sleep_area_annexe) +"yJ" = (/turf/station/floor,/area/sleep_area_annexe) +"yK" = (/obj/machinery/light_switch{pixel_x = 24},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/sleep_area_annexe) +"yL" = (/obj/machinery/camera{dir = 4; c_tag = "Crew Sleeping Area"},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/sleep_area) +"yM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/sleep_area) +"yN" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/sleep_area) +"yO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/sleep_area) +"yP" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/sleep_area) +"yQ" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/lounge) +"yR" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/Map,/obj/item/weapon/paper/sop,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/paper/jobs,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/lounge) +"yS" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/paper/Map,/obj/item/weapon/paper/sop,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/lounge) +"yT" = (/obj/stool,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/lounge) +"yU" = (/obj/item/weapon/extinguisher,/obj/machinery/light_switch{pixel_x = 24; pixel_y = 0},/turf/station/floor,/area/lounge) +"yV" = (/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent{name = "vent"; t_status = 1; t_per = 1e+006; c_per = 1e+006; c_status = 2; empty = 1},/turf/station/floor,/area/airintake) +"yW" = (/turf/station/floor,/area/airintake) +"yX" = (/obj/machinery/alarm{pixel_y = -4},/turf/station/floor,/area/airintake) +"yY" = (/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"yZ" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/aircontrol) +"za" = (/obj/machinery/door/airlock{access = "0001"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"zb" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"zc" = (/obj/start{name = "Security Officer"},/turf/station/floor,/area/security) +"zd" = (/obj/start{name = "Staff Assistant"},/turf/station/floor,/area/security) +"ze" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area/security) +"zf" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/light_switch{pixel_x = 24; otherarea = "brig"},/obj/window{dir = 4},/turf/station/floor,/area/security) +"zg" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/r_wall,/area) +"zh" = (/obj/machinery/camera{dir = 4; c_tag = "Prison"},/turf/station/floor,/area/brig) +"zi" = (/obj/item/weapon/bedsheet,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/brig) +"zj" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/bed,/turf/station/floor,/area/brig) +"zk" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"zl" = (/obj/machinery/camera{dir = 4; c_tag = "Shuttle Bay"},/turf/station/floor,/area/shuttle_airlock) +"zm" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/shuttle_airlock) +"zn" = (/obj/grille,/obj/grille,/turf/station/floor,/area) +"zo" = (/obj/stool/bed,/obj/machinery/camera{dir = 4; c_tag = "Sleeping Area Annex"},/turf/station/floor,/area/sleep_area_annexe) +"zp" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/sleep_area_annexe) +"zq" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/sleep_area) +"zr" = (/obj/stool/bed,/turf/station/floor,/area/sleep_area) +"zs" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/sleep_area) +"zt" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 4; cell_type = 2},/obj/cable,/turf/station/floor,/area/sleep_area) +"zu" = (/obj/landmark{name = "CTF-supply-Lounge"},/turf/station/floor,/area/lounge) +"zv" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/manifest,/turf/station/floor,/area/lounge) +"zw" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/game_kit,/turf/station/floor,/area/lounge) +"zx" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/lounge) +"zy" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/airintake) +"zz" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airintake) +"zA" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"zB" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor,/area/aircontrol) +"zC" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"zD" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/aircontrol) +"zE" = (/obj/machinery/computer/secure_data,/turf/station/floor,/area/security) +"zF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"zG" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/floor,/area/security) +"zH" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/security) +"zI" = (/obj/item/weapon/flashlight,/turf/station/floor,/area/security) +"zJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/security) +"zK" = (/obj/machinery/sec_lock{layer = 4; pixel_x = 32},/obj/window{dir = 4},/turf/station/floor,/area/security) +"zL" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable,/turf/station/floor,/area/security) +"zM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/testlab1) +"zN" = (/obj/grille,/turf/station/floor,/area/testlab1) +"zO" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"zP" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor{icon_state = "Floor3"},/area/testlab1) +"zQ" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8},/turf/station/floor,/area/shuttle_airlock) +"zR" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/shuttle_airlock) +"zS" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/shuttle_airlock) +"zT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock) +"zU" = (/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock) +"zV" = (/turf/station/floor{tag = ""},/area/sleep_area_annexe) +"zW" = (/obj/machinery/door/firedoor,/obj/machinery/door/window{dir = 1},/turf/station/floor,/area/sleep_area_annexe) +"zX" = (/obj/machinery/light_switch{pixel_x = 24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/sleep_area) +"zY" = (/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/weldingtool,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/lounge) +"zZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/lounge) +"Aa" = (/obj/item/weapon/storage/backpack,/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/lounge) +"Ab" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 4},/turf/station/floor,/area/lounge) +"Ac" = (/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/airintake) +"Ad" = (/obj/grille,/obj/machinery/connector{p_dir = 2},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent{name = "vent"; t_status = 1; t_per = 1e+006; c_per = 1e+006; c_status = 2; empty = 1},/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/airintake) +"Ae" = (/obj/window{dir = 4},/obj/window,/turf/station/floor,/area/airintake) +"Af" = (/obj/machinery/power/apc{dir = 4; cell_type = 2},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/aircontrol) +"Ag" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/crowbar,/obj/item/weapon/clipboard,/turf/station/floor,/area/security) +"Ah" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/dropper,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security) +"Ai" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/security) +"Aj" = (/obj/machinery/computer/security,/turf/station/floor,/area/security) +"Ak" = (/obj/machinery/computer/card,/turf/station/floor,/area/security) +"Al" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/red,/turf/station/floor,/area/security) +"Am" = (/obj/closet/wardrobe/orange,/turf/station/floor,/area/security) +"An" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security) +"Ao" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security) +"Ap" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/brig) +"Aq" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/brig) +"Ar" = (/obj/machinery/door/poddoor{name = "Blast door"; id = "bd1"},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/testlab1) +"As" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock) +"At" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/shuttle_airlock) +"Au" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock) +"Av" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"Aw" = (/obj/machinery/power/solar,/turf/station/floor,/area) +"Ax" = (/obj/stool/bed,/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/sleep_area_annexe) +"Ay" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/bed,/turf/station/floor,/area/sleep_area_annexe) +"Az" = (/obj/stool/bed,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/sleep_area) +"AA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/sleep_area) +"AB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/sleep_area) +"AC" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/sleep_area) +"AD" = (/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/sleep_area) +"AE" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/lounge) +"AF" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/lounge) +"AG" = (/obj/landmark{name = "CTF-base-Lounge"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/lounge) +"AH" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/lounge) +"AI" = (/obj/grille,/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/obj/machinery/meter,/turf/station/floor,/area/airintake) +"AJ" = (/obj/grille,/turf/station/floor,/area/airintake) +"AK" = (/obj/grille,/obj/machinery/door/poddoor{name = "Vent Hatch"; id = "vent1"},/turf/station/floor,/area/airintake) +"AL" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/turf/station/floor,/area/aircontrol) +"AM" = (/obj/machinery/door/firedoor,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"AN" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"AO" = (/obj/machinery/door/firedoor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/shuttle_airlock) +"AP" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area) +"AQ" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"AR" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/sleep_area) +"AS" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/lounge) +"AT" = (/obj/window,/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/floor,/area/airintake) +"AU" = (/obj/window,/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/turf/station/floor,/area/airintake) +"AV" = (/obj/window,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/machinery/pipes{tag = ""; icon_state = "3"; p_dir = 3},/turf/station/floor,/area/airintake) +"AW" = (/obj/window,/turf/station/floor,/area/airintake) +"AX" = (/obj/window{dir = 4},/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/airintake) +"AY" = (/turf/station/floor,/area/aircontrol) +"AZ" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/aircontrol) +"Ba" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/camera{dir = 2; c_tag = "Atmospherics Entrance"},/turf/station/floor,/area/aircontrol) +"Bb" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/aircontrol) +"Bc" = (/obj/machinery/power/monitor,/turf/station/floor,/area/aircontrol) +"Bd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Be" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Bf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/aircontrol) +"Bg" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/aircontrol) +"Bh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/alarm{pixel_y = 24},/turf/station/floor,/area/aircontrol) +"Bi" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aircontrol) +"Bj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol) +"Bk" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"Bl" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area/shuttle_airlock) +"Bm" = (/obj/machinery/door/airlock,/obj/cable,/turf/station/floor,/area/shuttle_airlock) +"Bn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"Bo" = (/turf/station/floor,/area/south_access) +"Bp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/south_access) +"Bq" = (/obj/secloset/security1,/turf/station/floor,/area/security_sub) +"Br" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/security_sub) +"Bs" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 8},/obj/machinery/computer/security,/turf/station/floor,/area/security_sub) +"Bt" = (/obj/weldfueltank,/turf/station/floor,/area/aux_storage) +"Bu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aux_storage) +"Bv" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/aux_storage) +"Bw" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/aux_storage) +"Bx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/turf/station/floor,/area/aux_storage) +"By" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/aux_storage) +"Bz" = (/turf/station/floor,/area/aux_storage) +"BA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aux_storage) +"BB" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/turf/station/floor,/area/aux_storage) +"BC" = (/obj/machinery/computer/atmosphere/siphonswitch{otherarea = "airintake"},/obj/window{dir = 4},/turf/station/floor,/area/aircontrol) +"BD" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/poisoncanister{anchored = 1; c_status = 3},/turf/station/floor,/area/aircontrol) +"BE" = (/obj/item/weapon/wrench,/turf/station/floor,/area/aircontrol) +"BF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"BG" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/aircontrol) +"BH" = (/obj/machinery/camera{dir = 8; c_tag = "Atmo. Gas Storage"},/turf/station/floor,/area/aircontrol) +"BI" = (/turf/space,/area/shuttle) +"BJ" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area) +"BK" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/south_access) +"BL" = (/turf/station/floor,/area/security_sub) +"BM" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/security_sub) +"BN" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/fire,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/security_sub) +"BO" = (/obj/weldfueltank,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aux_storage) +"BP" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aux_storage) +"BQ" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aux_storage) +"BR" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/aux_storage) +"BS" = (/obj/table{icon_state = "sides"; dir = 8},/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/aux_storage) +"BT" = (/obj/stool/chair{dir = 1},/obj/machinery/door_control{pixel_x = -28; id = "vent1"},/turf/station/floor,/area/aircontrol) +"BU" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/aircontrol) +"BV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol) +"BW" = (/obj/landmark{name = "CTF-base-Atmo"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aircontrol) +"BX" = (/obj/landmark{name = "CTF-supply-Atmo"},/turf/station/floor,/area/aircontrol) +"BY" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/aircontrol) +"BZ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Ca" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/aircontrol) +"Cb" = (/obj/machinery/atmoalter/canister/aircanister,/turf/station/floor,/area/aircontrol) +"Cc" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/aircontrol) +"Cd" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/aircontrol) +"Ce" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"Cf" = (/obj/machinery/power/monitor,/turf/station/floor,/area/solar_con) +"Cg" = (/obj/machinery/alarm{pixel_y = 24},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/solar_con) +"Ch" = (/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"Ci" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/south_access) +"Cj" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/south_access) +"Ck" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/turf/station/floor,/area/south_access) +"Cl" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/security_sub) +"Cm" = (/obj/table{icon_state = "sides"; dir = 8},/obj/machinery/camera{dir = 8; network = "SS13"; c_tag = "Security (West)"},/obj/machinery/recharger,/turf/station/floor,/area/security_sub) +"Cn" = (/obj/watertank,/turf/station/floor,/area/aux_storage) +"Co" = (/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/aux_storage) +"Cp" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/aux_storage) +"Cq" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aux_storage) +"Cr" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/aux_storage) +"Cs" = (/obj/machinery/camera{dir = 4; c_tag = "Atmospheric Control Room"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Ct" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Cu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Cv" = (/obj/start{name = "Atmospheric Technician"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/aircontrol) +"Cw" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/aircontrol) +"Cx" = (/obj/window{dir = 4},/turf/station/floor,/area/aircontrol) +"Cy" = (/obj/window{dir = 1},/obj/watertank,/turf/station/floor,/area/aircontrol) +"Cz" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol) +"CA" = (/obj/window{dir = 1},/obj/item/weapon/clothing/mask/gasmask,/turf/station/floor,/area/aircontrol) +"CB" = (/obj/window{dir = 1},/obj/machinery/dispenser,/turf/station/floor,/area/aircontrol) +"CC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/aircontrol) +"CD" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aircontrol) +"CE" = (/obj/machinery/atmoalter/canister/co2canister,/turf/station/floor,/area/aircontrol) +"CF" = (/obj/machinery/firealarm{pixel_x = 32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"CG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/floor,/area/solar_con) +"CH" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/solar_con) +"CI" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"CJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"CK" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/south_access) +"CL" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/south_access) +"CM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"CN" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/security_sub) +"CO" = (/obj/watertank,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/security_sub) +"CP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/multitool,/turf/station/floor,/area/security_sub) +"CQ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/aux_storage) +"CR" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aux_storage) +"CS" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aux_storage) +"CT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/aux_storage) +"CU" = (/obj/closet/emcloset,/turf/station/floor,/area/aux_storage) +"CV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aux_storage) +"CW" = (/obj/table{icon_state = "sides"; dir = 8},/obj/machinery/camera{dir = 8; c_tag = "Aux Storage"},/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/aux_storage) +"CX" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol) +"CY" = (/obj/window{dir = 1},/turf/station/floor,/area/aircontrol) +"CZ" = (/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"Da" = (/obj/window{dir = 4},/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"Db" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol) +"Dc" = (/obj/item/weapon/clothing/under/yellow,/obj/item/weapon/clothing/shoes/orange,/obj/item/weapon/clothing/gloves/yellow,/turf/station/floor,/area/aircontrol) +"Dd" = (/obj/machinery/camera{dir = 8; c_tag = "External - shuttle dock"},/turf/space,/area) +"De" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area) +"Df" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/solar_con) +"Dg" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area/solar_con) +"Dh" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/emergency_storage) +"Di" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/aux_storage) +"Dj" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/wall,/area) +"Dk" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/aircontrol) +"Dl" = (/obj/machinery/door/window,/turf/station/floor,/area/aircontrol) +"Dm" = (/obj/machinery/vent,/turf/station/floor,/area/aircontrol) +"Dn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/paper_bin,/turf/station/floor,/area/aircontrol) +"Do" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/aircontrol) +"Dp" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/aircontrol) +"Dq" = (/obj/table,/obj/item/weapon/multitool,/obj/item/weapon/multitool,/obj/item/weapon/multitool,/obj/item/weapon/multitool,/turf/station/floor,/area/aircontrol) +"Dr" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/aircontrol) +"Ds" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"Dt" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"Du" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/solar_con) +"Dv" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/solar_con) +"Dw" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "2000"},/turf/station/floor,/area/solar_con) +"Dx" = (/obj/item/weapon/extinguisher,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/emergency_storage) +"Dy" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/emergency_storage) +"Dz" = (/turf/station/floor,/area/emergency_storage) +"DA" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/turf/station/floor,/area/emergency_storage) +"DB" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clothing/gloves/yellow,/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/emergency_storage) +"DC" = (/obj/table{icon_state = "corners"; dir = 6},/obj/machinery/cell_charger,/turf/station/floor,/area/emergency_storage) +"DD" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/emergency_storage) +"DE" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aux_storage) +"DF" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/turf/station/floor,/area/aircontrol) +"DG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/valve,/turf/station/floor,/area/aircontrol) +"DH" = (/obj/table{icon_state = "corners"; dir = 9},/obj/machinery/cell_charger,/turf/station/floor,/area/aircontrol) +"DI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/storage/toolbox/electrical,/obj/window{dir = 4},/turf/station/floor,/area/aircontrol) +"DJ" = (/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/aircontrol) +"DK" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/aircontrol) +"DL" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/aircontrol) +"DM" = (/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"DN" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/t_scanner,/obj/item/weapon/flashlight,/turf/station/floor,/area/aircontrol) +"DO" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/flashlight,/turf/station/floor,/area/aircontrol) +"DP" = (/obj/machinery/camera{dir = 4; c_tag = "Atmospherics Siphon Storage"},/turf/station/floor,/area/aircontrol) +"DQ" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area) +"DR" = (/obj/machinery/power/solar_control,/turf/station/floor,/area/solar_con) +"DS" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/obj/machinery/camera{dir = 8; network = "SS13"; c_tag = "Main Solar Control"},/turf/station/floor,/area/south_access) +"DT" = (/obj/item/weapon/extinguisher,/obj/machinery/light_switch{pixel_x = -24},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/emergency_storage) +"DU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/emergency_storage) +"DV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/emergency_storage) +"DW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/emergency_storage) +"DX" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/aux_storage) +"DY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aux_storage) +"DZ" = (/obj/machinery/manifold{dir = 4},/turf/station/floor,/area/aircontrol) +"Ea" = (/obj/machinery/valve{dir = 4},/turf/station/floor,/area/aircontrol) +"Eb" = (/obj/machinery/connector{dir = 8; p_dir = 8},/turf/station/floor,/area/aircontrol) +"Ec" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/aircontrol) +"Ed" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"Ee" = (/obj/machinery/power/terminal,/obj/cable,/turf/station/floor,/area/solar_con) +"Ef" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/machinery/light_switch{pixel_x = 24},/turf/station/floor,/area/south_access) +"Eg" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/emergency_storage) +"Eh" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/emergency_storage) +"Ei" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/emergency_storage) +"Ej" = (/obj/machinery/dispenser{o2tanks = 20; pltanks = 0},/turf/station/floor,/area/emergency_storage) +"Ek" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/toolbox,/obj/item/weapon/multitool,/turf/station/floor,/area/emergency_storage) +"El" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/t_scanner,/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/emergency_storage) +"Em" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/emergency_storage) +"En" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/aux_storage) +"Eo" = (/obj/machinery/dispenser{o2tanks = 20; pltanks = 0},/turf/station/floor,/area/aux_storage) +"Ep" = (/obj/table,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/mask/gasmask,/turf/station/floor,/area/aux_storage) +"Eq" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/aux_storage) +"Er" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/aux_storage) +"Es" = (/obj/machinery/connector{dir = 4; p_dir = 4},/turf/station/floor,/area/aircontrol) +"Et" = (/obj/machinery/manifold{dir = 1},/turf/station/floor,/area/aircontrol) +"Eu" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/obj/item/weapon/clothing/gloves/yellow,/obj/item/weapon/clothing/gloves/yellow,/obj/item/weapon/flashlight,/turf/station/floor,/area/aircontrol) +"Ev" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/obj/item/weapon/cell{icon_state = "hpcell"; charge = 100; maxcharge = 5000},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/cell{charge = 100},/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/aircontrol) +"Ew" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/station/floor,/area) +"Ex" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"Ey" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"Ez" = (/obj/machinery/power/smes{output = 12000; charge = 0; chargelevel = 12000; n_tag = "Main Solar Generator"},/turf/station/floor,/area/solar_con) +"EA" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/solar_con) +"EB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/south_access) +"EC" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/aux_storage) +"ED" = (/obj/machinery/firealarm{pixel_x = -32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/south_access) +"EE" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area) +"EF" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/space,/area) +"EG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area) +"EH" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/space,/area) +"EI" = (/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/solar_con) +"EJ" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/solar_con) +"EK" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/door/firedoor,/turf/station/floor,/area/south_access) +"EL" = (/obj/landmark/alterations{name = "monkey"; icon = 'monkey.dmi'; icon_state = "marker"},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/south_access) +"EM" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"EN" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"EO" = (/obj/machinery/firealarm{pixel_y = 32},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/south_access) +"EP" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor,/area/south_access) +"EQ" = (/obj/machinery/alarm{pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"ER" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/power/apc{dir = 1},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/south_access) +"ES" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"ET" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "blobstart"; icon_state = "x3"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/south_access) +"EU" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"EV" = (/obj/machinery/alarm{pixel_y = 24},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/south_access) +"EW" = (/obj/machinery/light_switch{pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/south_access) +"EX" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/south_access) +"EY" = (/obj/machinery/camera{dir = 8; c_tag = "Observation"},/turf/station/floor,/area/south_access) +"EZ" = (/obj/machinery/door/airlock,/turf/station/floor,/area) +"Fa" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"Fb" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area) +"Fc" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area) +"Fd" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area) +"Fe" = (/obj/window{icon_state = "rwindow"; reinf = 1},/turf/space,/area) +"Ff" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/space,/area) +"Fg" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"Fh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/emcloset,/turf/station/floor,/area/south_access) +"Fi" = (/obj/closet/emcloset,/turf/station/floor,/area/south_access) +"Fj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/emcloset,/turf/station/floor,/area/south_access) +"Fk" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/floor,/area) +"Fl" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/station/r_wall,/area) +"Fm" = (/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/turf/space,/area) +"Fn" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/station/floor,/area) +"Fo" = (/obj/grille,/obj/window{icon_state = "rwindow"; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/turf/station/floor,/area) +"Fp" = (/obj/machinery/door/poddoor{name = "forcefield"; icon = 'blob.dmi'; icon_state = "blobb0"; id = 16},/turf/space,/area) +"Fq" = (/obj/landmark{name = "Syndicate-Gear-Closet"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Fr" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Fs" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Ft" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Fu" = (/obj/machinery/computer/pod{id = 10},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Fv" = (/obj/machinery/door/window,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Fw" = (/obj/machinery/mass_driver{dir = 4; id = 10},/obj/machinery/pod,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Fx" = (/obj/machinery/door/poddoor{id = 10},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Fy" = (/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Fz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FA" = (/obj/machinery/power/apc{dir = 8; access = "0000/000-/0000"},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FB" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FC" = (/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FD" = (/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FE" = (/obj/item/weapon/clothing/gloves/yellow,/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FF" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FG" = (/obj/machinery/computer/pod{id = 11},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FH" = (/turf/station/wall,/area/syndicate_station) +"FI" = (/obj/machinery/mass_driver{dir = 4; id = 11},/obj/machinery/pod,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FJ" = (/obj/machinery/door/poddoor{id = 11},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FK" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FL" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FM" = (/obj/landmark{name = "CTF-rogue"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FN" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FO" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FP" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FQ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FR" = (/obj/landmark{name = "Syndicate-Bomb"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FS" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FT" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FU" = (/obj/machinery/computer/pod{id = 12},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FV" = (/obj/machinery/mass_driver{dir = 4; id = 12},/obj/machinery/pod,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FW" = (/obj/machinery/door/poddoor{id = 12},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"FX" = (/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FY" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"FZ" = (/obj/machinery/power/apc{dir = 4; access = "0000/000-/0000"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Ga" = (/obj/landmark{name = "Nuclear-Closet"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gb" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gc" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gd" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Ge" = (/obj/machinery/power/monitor,/obj/cable,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gg" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gh" = (/obj/machinery/computer/pod{id = 13},/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gi" = (/obj/machinery/mass_driver{dir = 4; id = 13},/obj/machinery/pod,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gj" = (/obj/machinery/door/poddoor{id = 13},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gk" = (/obj/machinery/pipes{tag = ""; icon_state = "6"; p_dir = 6},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gl" = (/obj/machinery/manifold{dir = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gm" = (/obj/machinery/manifold{dir = 2},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gn" = (/obj/machinery/pipes{tag = ""; icon_state = "10"; p_dir = 10},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Go" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gp" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gq" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate pod-bay"}) +"Gr" = (/obj/machinery/valve{dir = 1; id = "auxv1"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gs" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gt" = (/obj/machinery/connector{tag = ""; icon_state = "connector"; dir = 1; p_dir = 1},/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gu" = (/obj/machinery/power/terminal{dir = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gv" = (/obj/machinery/power/smes{charge = 2e+006; online = 1; n_tag = "Syndicate"},/obj/window{icon_state = "rwindow"; reinf = 1},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"Gw" = (/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"Gx" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"Gy" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"Gz" = (/obj/machinery/power/apc{dir = 1; access = "0000/000-/0000"},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GA" = (/turf/station/engine/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GB" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GC" = (/obj/machinery/computer/security,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GD" = (/obj/machinery/computer/security{name = "security- PS13"; network = "PS13"},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GE" = (/obj/machinery/manifold{dir = 4},/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GF" = (/obj/machinery/pipes,/obj/machinery/meter,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GG" = (/obj/machinery/vent{tag = "2"; dir = 8; p_dir = 8},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/machinery/igniter,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GH" = (/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 1; reinf = 1},/obj/machinery/compressor,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GI" = (/obj/window{icon_state = "rwindow"; dir = 4; reinf = 1},/obj/machinery/power/turbine,/obj/cable,/turf/station/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GJ" = (/obj/grille,/obj/machinery/inlet,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GK" = (/obj/machinery/computer/pod{name = "Mass Driver and Forcefield Control"; desc = "'Toggle Outer Door' will lower or raise the forcefield"; id = 16},/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GL" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GN" = (/obj/landmark{name = "Nuclear-Bomb"},/obj/machinery/door/window,/turf/station/engine/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GO" = (/obj/machinery/mass_driver{dir = 4; id = 16},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GP" = (/obj/machinery/door/poddoor{id = 16},/turf/station/engine/floor,/area/syndicate_station{name = "syndicate mass driver"}) +"GQ" = (/obj/machinery/pipes{tag = ""; icon_state = "5"; p_dir = 9},/turf/station/wall,/area) +"GR" = (/obj/machinery/pipes,/turf/station/wall,/area) +"GS" = (/obj/machinery/pipes{tag = ""; icon_state = "9"; p_dir = 9},/turf/station/wall,/area) +"GT" = (/obj/machinery/door/poddoor{name = "forcefield"; icon = 'blob.dmi'; icon_state = "blobb0"; id = 16},/turf/space,/area/syndicate_station{name = "syndicate engine and equipment"}) +"GU" = (/turf/station/floor,/area/weapon_sat) +"GV" = (/obj/grille,/turf/space,/area/weapon_sat) +"GW" = (/obj/machinery/computer/data/weapon/log,/turf/station/floor,/area/weapon_sat) +"GX" = (/turf/station/floor/grid,/area/weapon_sat) +"GY" = (/obj/machinery/computer/teleporter,/turf/station/floor,/area/weapon_sat) +"GZ" = (/obj/machinery/teleport/station,/turf/station/floor,/area/weapon_sat) +"Ha" = (/obj/machinery/teleport/hub,/turf/station/floor,/area/weapon_sat) +"Hb" = (/obj/machinery/door/airlock,/turf/station/floor,/area/weapon_sat) +"Hc" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/weapon_sat) +"Hd" = (/obj/item/weapon/radio/beacon,/turf/station/floor,/area/weapon_sat) +"He" = (/obj/machinery/computer/data/weapon/info,/turf/station/floor,/area/weapon_sat) +"Hf" = (/obj/sp_start{name = "zjm7891"; desc = "Researcher on Med. Sat."; special = null},/turf/space,/area/med_sat) +"Hg" = (/obj/sp_start{name = "phoenixman"; desc = "Researcher on Med. Sat."},/turf/space,/area/med_sat) +"Hh" = (/obj/sp_start{name = "exadv1"; desc = "Researcher on Med. Sat."; special = null},/turf/space,/area/med_sat) +"Hi" = (/obj/sp_start{name = "ryanfs"; desc = "Researcher on Med. Sat."; special = null},/turf/space,/area/med_sat) +"Hj" = (/obj/sp_start{name = "hobnob"; desc = "Researcher on Med. Sat."},/turf/space,/area/med_sat) +"Hk" = (/obj/sp_start{name = "exadv1"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hl" = (/obj/sp_start{name = "soraku"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hm" = (/obj/sp_start{name = "epox"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hn" = (/obj/sp_start{name = "hobnob"; desc = "Secret Base"; special = null},/turf/space,/area) +"Ho" = (/obj/sp_start{name = "thiefjack"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hp" = (/obj/sp_start{name = "hikato"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hq" = (/obj/sp_start{name = "expertadvisor"; desc = "Secret Base"; special = null},/turf/space,/area) +"Hr" = (/turf/station/command/wall,/area/supply_station) +"Hs" = (/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Ht" = (/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Hu" = (/obj/rack,/obj/item/weapon/clothing/suit/swat_suit,/obj/item/weapon/clothing/head/swat_hel,/obj/item/weapon/clothing/shoes/swat,/obj/item/weapon/clothing/gloves/swat,/obj/item/weapon/gun/energy/taser_gun,/obj/item/weapon/clothing/mask/robot/swat,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/glasses/thermal,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Hv" = (/turf/station/command/floor,/area/supply_station) +"Hw" = (/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Hx" = (/obj/item/weapon/storage/backpack,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Hy" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/command/floor,/area/supply_station) +"Hz" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/command/floor,/area/supply_station) +"HA" = (/obj/bedsheetbin,/turf/station/command/floor,/area/supply_station) +"HB" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor,/area/supply_station) +"HC" = (/obj/item/weapon/paper_bin,/obj/item/weapon/game_kit,/turf/station/command/floor,/area/supply_station) +"HD" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/command/floor,/area/supply_station) +"HE" = (/obj/watertank,/turf/station/command/floor,/area/supply_station) +"HF" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "4400"},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"HG" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; access = "4400"},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"HH" = (/obj/closet/l3closet,/turf/station/command/floor,/area/supply_station) +"HI" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/command/floor,/area/supply_station) +"HJ" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/backpack,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/command/floor,/area/supply_station) +"HK" = (/obj/item/weapon/tile,/obj/item/weapon/rods,/turf/station/command/floor,/area/supply_station) +"HL" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station) +"HM" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/command/floor,/area/supply_station) +"HN" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor,/area/supply_station) +"HO" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/command/floor,/area/supply_station) +"HP" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"HQ" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"HR" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"HS" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station) +"HT" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/command/floor,/area/supply_station) +"HU" = (/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/turf/station/command/floor,/area/supply_station) +"HV" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/pen,/obj/item/weapon/pen,/turf/station/command/floor,/area/supply_station) +"HW" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/disk_kit,/obj/item/weapon/storage/id_kit,/turf/station/command/floor,/area/supply_station) +"HX" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/obj/item/weapon/storage/lglo_kit,/obj/item/weapon/storage/stma_kit,/turf/station/command/floor,/area/supply_station) +"HY" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station) +"HZ" = (/obj/machinery/dispenser,/turf/station/command/floor,/area/supply_station) +"Ia" = (/obj/weldfueltank,/turf/station/command/floor,/area/supply_station) +"Ib" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area/supply_station) +"Ic" = (/obj/table,/obj/item/weapon/storage/firstaid/syringes,/obj/item/weapon/bottle/toxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/dropper,/turf/station/command/floor,/area/supply_station) +"Id" = (/obj/item/weapon/camera,/turf/station/command/floor,/area/supply_station) +"Ie" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station) +"If" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/command/floor,/area/supply_station) +"Ig" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor,/area/supply_station) +"Ih" = (/obj/move/wall,/turf/space,/area/vehicles/shuttle1) +"Ii" = (/obj/move/floor,/obj/window,/obj/window{dir = 1},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"Ij" = (/obj/closet/emcloset,/turf/station/command/floor,/area/supply_station) +"Ik" = (/obj/move/floor,/obj/window{dir = 1},/turf/space,/area/vehicles/shuttle1) +"Il" = (/obj/machinery/door/window,/turf/station/command/floor,/area/supply_station) +"Im" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"In" = (/obj/move/floor,/obj/window{dir = 8},/turf/space,/area/vehicles/shuttle1) +"Io" = (/obj/move/floor,/turf/space,/area/vehicles/shuttle1) +"Ip" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/vehicles/shuttle1) +"Iq" = (/obj/move/floor,/obj/window{dir = 4},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"Ir" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/turf/station/command/floor,/area/supply_station) +"Is" = (/turf/station/command/wall{icon_state = "CCWall2"},/area/supply_station) +"It" = (/obj/move/floor,/obj/item/weapon/radio/beacon{freq = 140.5},/turf/space,/area/vehicles/shuttle1) +"Iu" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/vehicles/shuttle1) +"Iv" = (/obj/machinery/door/airlock,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Iw" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Ix" = (/obj/machinery/computer/teleporter,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Iy" = (/obj/machinery/teleport/station,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"Iz" = (/obj/machinery/teleport/hub,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"IA" = (/obj/item/weapon/hand_tele,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"IB" = (/obj/move/floor,/obj/machinery/connector{dir = 4; p_dir = 4},/obj/window{dir = 4},/obj/window,/obj/machinery/atmoalter/canister/oxygencanister{c_status = 1},/turf/space,/area/vehicles/shuttle1) +"IC" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/shuttle/engine/heater,/turf/space,/area/vehicles/shuttle1) +"ID" = (/obj/move/floor,/obj/machinery/connector{dir = 8; p_dir = 8},/obj/window{dir = 8},/obj/window,/obj/machinery/atmoalter/canister/poisoncanister{c_status = 1},/turf/space,/area/vehicles/shuttle1) +"IE" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "6"; dir = 6; p_dir = 6},/turf/space,/area/vehicles/shuttle1) +"IF" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/shuttle/engine/router,/turf/space,/area/vehicles/shuttle1) +"IG" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "10"; dir = 10; p_dir = 10},/turf/space,/area/vehicles/shuttle1) +"IH" = (/obj/machinery/computer/pod{name = "Mass Driver"; id = 50},/turf/station/command/floor,/area/supply_station) +"II" = (/obj/machinery/mass_driver{dir = 4; id = 50},/obj/machinery/pod{dir = 8},/turf/station/command/floor,/area/supply_station) +"IJ" = (/obj/machinery/door/poddoor{id = 50},/turf/station/command/floor,/area/supply_station) +"IK" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 5},/obj/machinery/shuttle/engine/propulsion/burst/left,/turf/space,/area/vehicles/shuttle1) +"IL" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 1},/obj/machinery/shuttle/engine/propulsion,/turf/space,/area/vehicles/shuttle1) +"IM" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 9},/obj/machinery/shuttle/engine/propulsion/burst/right,/turf/space,/area/vehicles/shuttle1) +"IN" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"IO" = (/turf/station/command/wall{icon_state = "CCWall2"},/area) +"IP" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor{density = 1},/area) +"IQ" = (/obj/begin,/turf/station/command/floor,/area/start) +"IR" = (/obj/begin,/turf/station/command/floor{icon_state = "Floor2"},/area/start) +"IS" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"IT" = (/obj/machinery/hologram_proj,/turf/station/command/floor{icon_state = "Floor2"},/area) +"IU" = (/turf/station/command/floor{icon_state = "Floor2"},/area) +"IV" = (/obj/begin{layer = 1; level = 3},/turf/station/command/floor,/area/start) +"IW" = (/obj/begin{layer = 1; level = 3},/turf/station/command/floor{icon_state = "Floor2"},/area/start) +"IX" = (/obj/machinery/computer/hologram_comp,/turf/station/command/floor{icon_state = "Floor2"},/area) +"IY" = (/obj/machinery/door/airlock,/turf/station/command/floor,/area/supply_station) +"IZ" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor,/area/supply_station) +"Ja" = (/obj/landmark/alterations{name = "shuttle"},/turf/space,/area) +"Jb" = (/obj/move/wall,/turf/space,/area/shuttle) +"Jc" = (/obj/move/floor,/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle) +"Jd" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/shuttle) +"Je" = (/obj/move/floor,/obj/machinery/sleeper,/turf/space,/area/shuttle) +"Jf" = (/obj/move/floor,/obj/machinery/computer/sleep_console,/turf/space,/area/shuttle) +"Jg" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"Jh" = (/obj/move/floor,/obj/move/wall,/turf/space,/area/shuttle) +"Ji" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"Jj" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/turf/space,/area/shuttle) +"Jk" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/obj/window{dir = 4},/turf/space,/area/shuttle) +"Jl" = (/obj/move/floor,/turf/space,/area/shuttle) +"Jm" = (/obj/move/floor,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"Jn" = (/obj/move/floor,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle) +"Jo" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle) +"Jp" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"Jq" = (/obj/move/floor,/obj/machinery/door/window,/turf/space,/area/shuttle) +"Jr" = (/obj/move/floor,/obj/stool/chair{dir = 4},/turf/space,/area/shuttle) +"Js" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/turf/space,/area/shuttle) +"Jt" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle) +"Ju" = (/obj/move/floor{tag = "dbg"},/turf/space,/area/shuttle) +"Jv" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/shuttle) +"Jw" = (/obj/move/floor,/obj/machinery/computer/shuttle,/obj/window{dir = 4},/turf/space,/area/shuttle) +"Jx" = (/obj/move/floor,/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle) +"Jy" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/turf/space,/area/shuttle) +"Jz" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"JA" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window{dir = 4},/turf/space,/area/shuttle) +"JB" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"JC" = (/obj/machinery/power/solar{id = 3},/turf/station/floor,/area) +"JD" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"JE" = (/turf/station/command/wall/other,/area) +"JF" = (/obj/secloset/medical1,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JG" = (/obj/secloset/medical2,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JH" = (/obj/secloset/animal,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JI" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JJ" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JK" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JL" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JM" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/healthanalyzer,/obj/item/weapon/dropper,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JN" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/pill_canister/epilepsy,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JO" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/syringes,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JP" = (/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JQ" = (/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JR" = (/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"JS" = (/obj/stool/chair,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JU" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/station/floor{icon_state = "Floor1"; intact = 0},/area) +"JV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"JX" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JY" = (/obj/morgue,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"JZ" = (/obj/machinery/sleeper,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"Ka" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"Kb" = (/obj/stool/chair{dir = 4},/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kc" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kd" = (/turf/station/floor,/area/prison{name = "prison common room"}) +"Ke" = (/obj/item/weapon/radio/intercom{pixel_y = 32; freq = 140.1},/turf/station/floor,/area/prison{name = "prison common room"}) +"Kf" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Infirmary"},/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/command/floor,/area/prison{name = "prison medical"}) +"Kg" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"Kh" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"Ki" = (/obj/start{name = "Prison Doctor"},/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"Kj" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kk" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kl" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison common room"}) +"Km" = (/obj/stool/chair,/turf/station/floor,/area/prison{name = "prison common room"}) +"Kn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison common room"}) +"Ko" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"Kp" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/command/floor{icon_state = "Floor2"},/area/prison{name = "prison medical"}) +"Kq" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/id{name = "Senior Medical Researcher (3>5-0-0)"; access_level = 3; lab_access = 5; engine_access = 0; air_access = 0; assignment = "Medical Researcher"},/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kr" = (/obj/stool/chair{dir = 4},/turf/station/floor,/area/prison{name = "prison common room"}) +"Ks" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/prison{name = "prison common room"}) +"Kt" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/prison{name = "prison common room"}) +"Ku" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"Kv" = (/turf/station/floor,/area/prison{name = "prison medical"}) +"Kw" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/stma_kit,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"Kx" = (/obj/table{icon_state = "corners"; dir = 10},/turf/station/floor,/area/prison{name = "prison common room"}) +"Ky" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison common room"}) +"Kz" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison medical"}) +"KA" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/command/floor,/area/prison{name = "prison medical"}) +"KB" = (/obj/closet/wardrobe/white,/turf/station/command/floor,/area/prison{name = "prison medical"}) +"KC" = (/obj/closet/wardrobe/white,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"KD" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"KE" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/lglo_kit,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"KF" = (/obj/item/weapon/storage/toolbox,/turf/station/command/floor/other,/area/prison{name = "prison medical"}) +"KG" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Recreation Area (West)"},/turf/station/floor,/area/prison{name = "prison common room"}) +"KH" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/prison{name = "prison common room"}) +"KI" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Recreation Area (East)"},/turf/station/floor,/area/prison{name = "prison common room"}) +"KJ" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"KK" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/prison{name = "prison medical"}) +"KL" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/floor,/area/prison{name = "prison medical"}) +"KM" = (/obj/machinery/door/window{dir = 4},/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/turf/station/floor,/area/prison{name = "prison medical"}) +"KN" = (/obj/machinery/door/window{dir = 8},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison medical"}) +"KO" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison medical"}) +"KP" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper_bin,/turf/station/floor,/area/prison{name = "prison common room"}) +"KQ" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/floor,/area/prison{name = "prison common room"}) +"KR" = (/turf/station/floor,/area/prison{name = "prison central hall"}) +"KS" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/prison{name = "prison central hall"}) +"KT" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"KU" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"KV" = (/obj/secloset/security1,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"KW" = (/obj/machinery/computer/security{name = "security- PS13"; network = "PS13"; maplevel = 8},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"KX" = (/obj/secloset/security2,/obj/machinery/camera{network = "PS13"; c_tag = "Security Office"},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"KY" = (/obj/secloset/security2,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"KZ" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"La" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lb" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lc" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Ld" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/pen,/turf/station/floor,/area/prison{name = "prison common room"}) +"Le" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "3000"},/turf/station/floor,/area/prison{name = "prison common room"}) +"Lf" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison central hall"}) +"Lg" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Lh" = (/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Li" = (/obj/item/weapon/clothing/gloves/yellow,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lj" = (/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lk" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Ll" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/clipboard,/turf/station/floor,/area/prison{name = "prison common room"}) +"Lm" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/station/floor,/area/prison{name = "prison common room"}) +"Ln" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 1; access = "3000"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"Lo" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/floor,/area/prison{name = "prison central hall"}) +"Lp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lr" = (/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Ls" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lt" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/floor,/area/prison{name = "prison common room"}) +"Lu" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison common room"}) +"Lv" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area/prison{name = "prison common room"}) +"Lw" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/prison{name = "prison central hall"}) +"Lx" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "3000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Ly" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Lz" = (/obj/start{name = "Prison Security"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LA" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LB" = (/obj/table{icon_state = "alone"},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/floor,/area/prison{name = "prison common room"}) +"LC" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/prison{name = "prison common room"}) +"LD" = (/obj/table{icon_state = "sides"; dir = 1},/turf/station/floor,/area/prison{name = "prison common room"}) +"LE" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/pen,/turf/station/floor,/area/prison{name = "prison common room"}) +"LF" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison common room"}) +"LG" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"LH" = (/obj/stool/chair{dir = 1},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"LI" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/prison{name = "prison common room"}) +"LJ" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area/prison{name = "prison central hall"}) +"LK" = (/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LL" = (/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison central hall"}) +"LN" = (/obj/secloset/animal,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LO" = (/obj/bedsheetbin,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LP" = (/obj/secloset/personal,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LQ" = (/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LR" = (/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"LS" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"LT" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"LU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"LV" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"LW" = (/obj/machinery/light_switch{pixel_x = 24; pixel_y = 0},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"LX" = (/obj/machinery/power/apc{dir = 8},/obj/cable,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"LY" = (/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"LZ" = (/obj/stool/chair,/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Ma" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mb" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mc" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Md" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Me" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Mf" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mg" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mh" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mi" = (/obj/stool/chair{dir = 4},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mj" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mk" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/pen,/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Ml" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mm" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mn" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 2},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Mo" = (/obj/machinery/sec_lock{pixel_x = 32},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Mp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mq" = (/obj/closet/wardrobe/orange,/turf/station/floor,/area/prison{name = "prison security and maintenance"}) +"Mr" = (/obj/table{icon_state = "sides"; dir = 8},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Ms" = (/obj/table{icon_state = "sides"; dir = 4},/turf/station/floor,/area/prison{name = "prison jury deliberation room"}) +"Mt" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Mu" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mv" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mw" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"Mx" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 6"}) +"My" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"Mz" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MA" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MB" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MC" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MD" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"ME" = (/obj/item/weapon/bedsheet,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west hall bedroom 1"}) +"MF" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west hall bedroom 1"}) +"MG" = (/obj/item/weapon/bedsheet,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west hall bedroom 2"}) +"MH" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west hall bedroom 2"}) +"MI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MJ" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"MK" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"ML" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west hall bedroom 1"}) +"MM" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison west hall bedroom 1"}) +"MN" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west hall bedroom 2"}) +"MO" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison west hall bedroom 2"}) +"MP" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MQ" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MR" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MS" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison west cell 4"}) +"MT" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/prison{name = "prison central hall"}) +"MU" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MV" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MW" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MX" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 5"}) +"MY" = (/obj/machinery/power/monitor,/turf/station/floor,/area/prison{name = "prison solar control"}) +"MZ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison solar control"}) +"Na" = (/obj/machinery/door/airlock{access = "3000"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nb" = (/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/prison{name = "prison central hall"}) +"Nc" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/prison{name = "prison solar control"}) +"Nd" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/station/floor,/area/prison{name = "prison solar control"}) +"Ne" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nf" = (/turf/station/floor,/area/prison{name = "prison west hall"}) +"Ng" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"Nh" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"Ni" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"Nj" = (/obj/machinery/door/airlock{access = "2000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/space,/area/prison{name = "prison solar control"}) +"Nk" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/airlock{access = "2000"},/turf/station/floor,/area/prison{name = "prison solar control"}) +"Nl" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Solitary Cells"},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nm" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nn" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/prison{name = "prison west hall"}) +"No" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Np" = (/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Nq" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Nr" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"Ns" = (/obj/machinery/power/solar_control{id = 3},/turf/station/floor,/area/prison{name = "prison solar control"}) +"Nt" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/command/wall/other,/area) +"Nu" = (/obj/machinery/power/apc,/obj/cable,/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nv" = (/obj/machinery/light_switch{pixel_y = -24},/turf/station/floor,/area/prison{name = "prison west hall"}) +"Nw" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison central hall"}) +"Nx" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Ny" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"Nz" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"NA" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"NB" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 4"}) +"NC" = (/obj/machinery/power/smes{n_tag = "Prison Station 1"},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison solar control"}) +"ND" = (/obj/machinery/power/terminal{dir = 8},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison solar control"}) +"NE" = (/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{n_tag = "Prison Station 2"},/turf/station/floor,/area/prison{name = "prison solar control"}) +"NF" = (/obj/cable,/obj/machinery/power/terminal{dir = 8},/turf/station/floor,/area/prison{name = "prison solar control"}) +"NG" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west hall bedroom 3"}) +"NH" = (/obj/machinery/power/apc{dir = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison west hall bedroom 3"}) +"NI" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west hall bedroom 4"}) +"NJ" = (/obj/machinery/power/apc{dir = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison west hall bedroom 4"}) +"NK" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"NL" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"NM" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"NN" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"NO" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"NP" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"NQ" = (/obj/cable,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8},/turf/station/floor,/area/prison{name = "prison solar control"}) +"NR" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/machinery/light_switch{pixel_y = -24},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison solar control"}) +"NS" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/command/wall/other,/area) +"NT" = (/obj/item/weapon/bedsheet,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west hall bedroom 3"}) +"NU" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west hall bedroom 3"}) +"NV" = (/obj/item/weapon/bedsheet,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west hall bedroom 4"}) +"NW" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west hall bedroom 4"}) +"NX" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"NY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"NZ" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"Oa" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"Ob" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"Oc" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison west cell 3"}) +"Od" = (/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Oe" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"Of" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"Og" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"Oh" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 3"}) +"Oi" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"Oj" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Ok" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Ol" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Om" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"On" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Oo" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Op" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Oq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Or" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Os" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Ot" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Ou" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison west cell 2"}) +"Ov" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Ow" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Ox" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Oy" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 2"}) +"Oz" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OA" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OB" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OC" = (/obj/closet,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OD" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OE" = (/obj/stool/bed,/mob/monkey{name = "Former Prison Station Technician"},/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OH" = (/obj/stool/bed,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OI" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OJ" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OK" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OL" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison west cell 1"}) +"OM" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "4400"},/obj/machinery/light_switch{pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"ON" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OO" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OP" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/floor,/area/prison{name = "prison east cell 1"}) +"OQ" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison central hall"}) +"OR" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/floor,/area/prison{name = "prison central hall"}) +"OS" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "3000"},/turf/station/floor,/area/prison{name = "prison central hall"}) +"OT" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; access = "3000"},/turf/station/floor,/area/prison{name = "prison central hall"}) +"OU" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison central hall"}) +"OV" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"OW" = (/obj/stool/chair,/turf/station/floor,/area/prison{name = "prison courtroom"}) +"OX" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"OY" = (/turf/station/floor,/area/prison{name = "prison courtroom"}) +"OZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Pa" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Pb" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pc" = (/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pd" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pe" = (/obj/closet/wardrobe/orange,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pf" = (/obj/closet/wardrobe,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pg" = (/obj/closet/wardrobe/mixed,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Ph" = (/obj/secloset/personal,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pi" = (/obj/table{icon_state = "sides"; dir = 2},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Pj" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio{suffix = "\[2]"; freq = 144.9},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Pk" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pm" = (/obj/table{icon_state = "sides"; dir = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pn" = (/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Po" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/command/floor/other,/area/prison{name = "prison wardrobe"}) +"Pq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pr" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Ps" = (/obj/machinery/power/apc{dir = 8},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pt" = (/obj/cable{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pu" = (/obj/table{icon_state = "sides"; dir = 8},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"Pv" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Pw" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-8"; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"Px" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/command/floor/other,/area/prison{name = "prison wardrobe"}) +"Py" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Courtroom"},/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"Pz" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PA" = (/obj/machinery/door/airlock{access = "3000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PB" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PC" = (/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PD" = (/obj/window{dir = 10},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PE" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"PF" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"PG" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PH" = (/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PI" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PJ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "3000"},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PK" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"PL" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"PM" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PN" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PO" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PP" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; access = "3000"},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PQ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; access = "3000"},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PR" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PS" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/prison{name = "prison south-central hall"}) +"PT" = (/obj/machinery/door/window{dir = 8},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison wardrobe"}) +"PU" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PV" = (/obj/table{icon_state = "sides"; dir = 1},/turf/station/floor,/area/prison{name = "prison courtroom"}) +"PW" = (/turf/station/floor,/area/prison{name = "prison south hall"}) +"PX" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison south hall"}) +"PY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison south hall"}) +"PZ" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qa" = (/turf/station/floor,/area/prison{name = "prison command room"}) +"Qb" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison command room"}) +"Qc" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/station/floor,/area/prison{name = "prison command room"}) +"Qd" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qe" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qf" = (/obj/machinery/door/airlock{access = "3000"},/turf/station/floor,/area/prison{name = "prison waiting room"}) +"Qg" = (/obj/machinery/power/apc{dir = 8},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qh" = (/obj/cable{icon_state = "1-8"; d1 = 1; d2 = 8},/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qi" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qj" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qk" = (/obj/stool/chair{dir = 4},/turf/station/floor,/area/prison{name = "prison command room"}) +"Ql" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/pen,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qm" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/paper_bin,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qn" = (/turf/station/floor,/area/prison{name = "prison waiting room"}) +"Qo" = (/obj/stool/chair,/turf/station/floor,/area/prison{name = "prison waiting room"}) +"Qp" = (/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qq" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qr" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper,/turf/station/floor,/area/prison{name = "prison command room"}) +"Qs" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/prison{name = "prison command room"}) +"Qt" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Witness Prep Area"},/turf/station/floor,/area/prison{name = "prison waiting room"}) +"Qu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/prison{name = "prison waiting room"}) +"Qv" = (/obj/item/weapon/tile,/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/prison{name = "prison south hall"}) +"Qw" = (/obj/item/weapon/tile,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/prison{name = "prison south hall"}) +"Qx" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; access = "3000"},/turf/station/floor,/area/prison{name = "prison south hall"}) +"Qy" = (/obj/start{name = "Prison Warden"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/floor,/area/prison{name = "prison command room"}) +"Qz" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/turf/station/floor,/area/prison{name = "prison command room"}) +"QA" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/sop,/turf/station/floor,/area/prison{name = "prison command room"}) +"QB" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Warden's Office"},/turf/station/floor,/area/prison{name = "prison command room"}) +"QC" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison waiting room"}) +"QD" = (/obj/machinery/power/apc,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/station/floor,/area/prison{name = "prison waiting room"}) +"QE" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison waiting room"}) +"QF" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/floor,/area/prison{name = "prison waiting room"}) +"QG" = (/obj/machinery/door/airlock{access = "3000"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/station/command/floor/other,/area/prison{name = "prison south hall"}) +"QH" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area/prison{name = "prison south hall"}) +"QI" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/tile,/turf/station/floor{icon_state = "Floor1"; intact = 0; checkfire = 0; health = 100; burnt = 1},/area/prison{name = "prison south hall"}) +"QJ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/prison{name = "prison command room"}) +"QK" = (/obj/rack,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/tank/jetpack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/mask/gasmask,/obj/landmark/alterations{name = "prison shuttle"},/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QL" = (/obj/rack,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/tank/jetpack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/mask/gasmask,/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QM" = (/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable,/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QN" = (/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/tank/jetpack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/mask/gasmask,/obj/machinery/power/apc{start_charge = 0; charging = 1},/obj/cable{icon_state = "0-8"; d2 = 8},/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QO" = (/obj/machinery/computer/security{name = "security- PS13"; network = "PS13"; maplevel = 8},/turf/station/floor,/area/prison{name = "prison command room"}) +"QP" = (/obj/machinery/power/apc,/obj/cable,/turf/station/floor,/area/prison{name = "prison command room"}) +"QQ" = (/obj/secloset/security1,/turf/station/floor,/area/prison{name = "prison command room"}) +"QR" = (/obj/table,/obj/machinery/recharger,/turf/station/floor,/area/prison{name = "prison command room"}) +"QS" = (/obj/rack,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/under/grey,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/baton,/turf/station/floor,/area/prison{name = "prison command room"}) +"QT" = (/obj/machinery/door/airlock,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/station/command/floor/other,/area/prison{name = "prison shuttle airlock"}) +"QU" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 0},/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QV" = (/obj/machinery/door/airlock,/obj/cable,/turf/station/floor,/area/prison{name = "prison shuttle airlock"}) +"QW" = (/obj/move/wall{icon_state = "wall2"},/turf/space,/area/shuttle_prison) +"QX" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle_prison) +"QY" = (/obj/move/floor,/obj/move/floor{icon_state = "floor2"},/obj/shuttle/door,/turf/space,/area/shuttle_prison) +"QZ" = (/turf/space,/area/shuttle_prison) +"Ra" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison) +"Rb" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair,/turf/space,/area/shuttle_prison) +"Rc" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/grille,/turf/space,/area/shuttle_prison) +"Rd" = (/obj/move/floor{icon_state = "floor2"},/turf/space,/area/shuttle_prison) +"Re" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"Rf" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"Rg" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"Rh" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle_prison) +"Ri" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle_prison) +"Rj" = (/obj/move/floor{icon_state = "floor2"},/obj/shuttle/door,/turf/space,/area/shuttle_prison) +"Rk" = (/obj/move/floor{icon_state = "floor2"},/obj/grille,/turf/space,/area/shuttle_prison) +"Rl" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair{dir = 4},/turf/space,/area/shuttle_prison) +"Rm" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window,/turf/space,/area/shuttle_prison) +"Rn" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/bottle/s_tox,/turf/space,/area/shuttle_prison) +"Ro" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle_prison) +"Rp" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/turf/space,/area/shuttle_prison) +"Rq" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/computer/prison_shuttle,/turf/space,/area/shuttle_prison) +"Rr" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle_prison) +"Rs" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/obj/item/weapon/gun/energy/taser_gun,/turf/space,/area/shuttle_prison) +"Rt" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"Ru" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"Rv" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/orange,/turf/space,/area/shuttle_prison) +"Rw" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacacacaaacacacaaacacacaaacacacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadaeaeaeaeaeaeafaeaeaeaeaeaeagaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacacacaaacacacahacacacaaacacacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaiajakalamanaiababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaaaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapaiaqarasatauaiababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaxasayazaAaBaiababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaCaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaGaHaIaIaJaiaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaKaoaoaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapaiaLaMaNaOaOaPaQaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaTavaUaVaWaWaWaWaWaWaWaWaXaWaWaYaoaoaoaZbabbbabbbabbaZbcbdbdbdbdbdaZbabbbabbbabbaibebfbgbhbibjbkabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbmbnbobpbobqbraoaoaobraoaoaoaoblaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaiaibsbtbubvbwaiaRaaaaaaaaaaaaaaaaaaaaaabxbybzbAaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBaWbCbDbEboaoboboboaoboboboaoaoblaoaoaoaoaoaobFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbGbHbIbJaiaRaaaaaaaaaaaaaaaabxbybybKbLbMbNbOaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibPaiboaoboaoboaoboaoboaoaoblbQavbQaoaoaoaoaobFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbGaibRaiaiaRaaaaaaaaaaaabxbSbKbLbTbTbUbMbVbOaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibWaiboaoboaobXaoboaoboaoaobYbZcabZcbcccdceaobFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbFcfbwcgchciaiaRaaaaaaaaaacjbMckckclcmcncobzcpaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibWaiboaoboaoboaoboaoboaoaocqcrcqcrcsaoblctaobFaoaoaoaoaoaoaoaoaoaoaoaoaobFbFbFbFbGcucvcwcxaiaRaaaaaaaaaabxbycyczcAcncBaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibWaiboaoboaoboaoboaoboaoaocCcrcDcrcEaoblcebFbFaoaocFcFcFcFcFcFcFcFcFaoaobFbFbFbFbGcGcwcwbIaiaRaaaaaabxbybybybybybybybybybycHaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibWaiboaoboaoboaoboaoboaoavcIcrcJcrcKaoblcebFbFaoaocLcMcNcOcPcQcRcRcRaoaobFbFbFbFbGcGcScwcTaiaRaaaabxbKcUbycVcVcVcVcVcVbycWbycHaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibWaiboboboaoboboboaobocXcYcZcrcZdadbaoblcececececcdcdddedededededfdgaoaobFbFbFbFbGcGcwcwdhaiaRaabxbKcUcUbydidididididibycmdjbyaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdkdkdkdkdkaaaibWaibraoaoaobraoaoaobrdlavdmdndndodpaWdqdrdrdraWdsdtdudvdwdtdwdtdxdyaoaobFbFbFbFbGcGcvcwcxaiaiaibycmcmcmdzdididididicnbycmcmbyaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdBdCdDaaaibWaiaoaoaoaoaoaoaoaoaoaoaodEdndFcZdFaoaobFbFbFaobldcdGdHdGdIdGdHdGdJaoaobFbFbFbFbGcGcwcwdKdLdMdNcocmcmcmcmdOdOdOdOdObydPdQcmcoaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdRdBdCdSdDaaaibWaiaaaaaaaaaaaaaaaaaaaoaoaoaoaoaoaoaoaobFbFbFaobldTdUdedVdedVdWdXdYaoaobFbFbFbFbGcGcScwcTaiaiaibycmcmcmcmdidididididjbycmcmbyaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdZdSdDaaaibWaiaiaiaiaiaiaiaiaiaiaoaoaoaoaoaoaoaoaobFbFbFaoeaaWaWaWaWaWaWaYaoaoaoaobFbFbFbFbGcGcwcwbIaiaRaaebecededbydidididididibycmcnbyaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdkdkdkdkdDaaaaaaaaeedRdBdCdSdDaaaiefdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdraWdrdrdrdregbFbFbFaaaaaablbFbFbFbFbFbFbFbFbGcGcvcwcxaiaRaaaaebecedbycVcVcVcVcVcVbycWbycBaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdBdCdDaaaaaaaadkdAdBdZdSdDaaaibWaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaobFbFbFbFbFbFbFbFaaaaaablbFbFbFbFbFbFbFbFbGcucwcwbIaiaRaaaaaaebbybybybybybybybybybycBaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdRdBdCdSdDaaaaaaaadkdRdBdCdSdDaaeheidDdDdDdDdDdDdDdDdDaaaaaaaaaaaaaaaaaaaobFbFbFbFbFbFbFbFaaaaaablbFbFbFbFbFbFbFbFbGaicScwcTaiaRaaaaaaaaaaebbyejekeldjcHaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdZdSdDaaaaaaaadkdAdBdZdSdDaaemeneoepeoeoeoeoeqerdDdDdDdDdDdDdDdDdDdDdDdDdDdDehaWaWaWaWeseseteuaiaiaiaiaiaiaicfbwaiaievewaiabaaaaaaaaaacjbMbUbUclcmdjcobzbAaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdRdBdCdSdDaaaaaaaadkdRdBdCdSdDaaexeyezeyeyeAeBeyeyeyeCeDeDeDeDeDeDeEeDeDeDeFeDeGeiaoeHeIeJeKeLeLbleMeNeOeOeOePaibGaiaiaibHbIaiabaaaaaaaaaaaaebbSeceQbTbTeRbMbNbOaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdZdSdDaaaaaaaadkdDeSeTeTdDeUeUeUeUeUeUeVeUeWeWeWdDeFeXeYeYeZeYeYeYeXeYeYeZfadDaoeIeIfbfcfdfefffgfhfifhfjfkbuflcScwaiaiewaiabaaaaaaaaaaaaaaaaebbybyeceQbMbVbOaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdRdBdCdSdDdDfmfmfmdDdDfnfofpfqfrfsftfufvfwfxeUeoepfydDeFfzfzfzfzfzeYeFeFeFeFeFfAdDaoeIeIfBfCfDfEfFfGfHfIfHfJfKaibIfLcwaibJbIaiabaaaaaaaaaaaaaaaaaaaaaaebbybzcpaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdAdBdZdSdDfMfmfNfNfOdDeSfofPfQfRfSfQfTfUfVfVfWeofXfYdDfZeZeYeYeXeYeYeYeZeYeYeXgadDaoeIgbgcgdgegfaoggghgigjgkglaibIcwgmaiaignaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkdRdBdCdSdDfmfmgogpgqdDgrgsgtgugvgwgugxgygzgveVeoeofYdDeFfzfzfzgAgBeYgCgDeFeFeFfAdDaoeIeIgEgFgGgfaogHgIgJgIgKaiaibIcwcwcwcwbIaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadkgLdDgMgMdDgNgOgPgQgRgSfQgTgUgVgWgXgYgugZgUhaeVeoeqfYdDdDdDdDdDdDdDhbdDdDdDdDdDemdDaohchdhegFgGhfaogKgIgJgIhghhhihjhkhkhkhlhmaiababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadDhnhohphphqhrdDhshtdDdDhugYhvhwgUgYguhxhyhzeUhAeyeyeyhBhChDeyeyhEeyeyhFeyeyeyhGhHdDaohIhJhKgFhLhMaohNhOhPhQhRaiaibGaiaiaiaiaiaiaihSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadDgLhTgphUhVhWdDhXhYhZdDiaibicgUidgUhyhygYieifigeoeoeoeWeqiheoepiieoeqeoeoepeoihijikiliminiogfgfipaoiqgIgJgIgIirisitiuiviwixiyiziAiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadDiCfmgoiDfmhpdDiEiFhZdDdDdDdDdDdDdDiGfpfqiHeUiIiJiKiLeWiMiNiOiOiPeoeoeoiQeoeoihiRdDaoiSiTiUgfgfipaoiViWgJgIgIiXiYiZjajbjajajajcjdiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaadDdDfmfmfmfmgojejfjgaaaiaiaiaiaiaidDjhhsjijjeUjijijijieUeUeVeUeUeUeWeWeWeUeUjkeVdDdDaojljmiojnjnipaohQjohPhQhQjpiYjqjriYiYiYjsjtjuiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaafmfmfmfNfmfmjvjwjxaajyaijzjAjBaidDjCjCjDjEjFjFjFjFjGjHjIjJjKjLeUeoeoeoiijMjNjOdDaaaojPjQjRjSjTjUaWjVjVjWgIgIjXiYjqjYjZkakbiYkckdiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaadDdDdDgogOgOkejxaaaakfkgkfkhkiaidDjCjCjCkjjFjFjFjFkkklkmknkokokpeoepeoeUkqkrksdDaoaoblaoaoaoaoaoaoktgKgJhggIkuiYkvkwkxiYiYkykzkAiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakfkgkfkBkCaidDjCjCjCkDkEkFkGkGkHkIkJknkKkoeUeoeoeoeUkqjNksdDaikLkMkNkOkPkQkRaikSgIkTkUjVkVkWkXkYkZlalalalblciBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajyaildlelfaidDjClgkklgjFjFjFjFjGlhliljkolkeUlleofYeUeUlmeVdDailnlolplqlqlqlraiaiailsaigKiXltlulvlwlxlylzlAlBiBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiailCaiaidDlgjFjFjFjFjFjFjFkklDkoknkolEeUlleofYeUlFlGlHdDailIlJlKlplplLlMaiaiailNaiaiaiaoaolOaoaoaoaiaiailPaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlSlTlUaidDdDdDdDdDeUeUlVlVeUeUlWknkolXlYlZeymalYmbmcmddDaibGmeaimfmfmfmfaimggIgJgIhgaiaoaomhaomiaoaomjaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaimkmlaiaiaiaiaidDmmmnmnmnmompkoknkomqeUmreqmsdDdDdDdDdDaimtgIgIgIgIgIgImugIgIgJgIgIaiaomvmwmxmymzaomAaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamBmClSlTmDaimEmFmGaidDmHmIkFkGmJmKkomLmMmNeUeoeomOdDaiaiaiaiaimPgIgIgIgIgIgIaigIgIgJgIgIaiaomQmwmRmSaoaomAaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaimTmUmVmWmUmXaidDmHmYmYmYmomZkokokonaeUeoeonbdDaincndnenfngjVnhjVjVjVnibujVjVnjjVjVbuaWnknlmRnmaoaimAaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnolSmlnpainqnrnsaidDntnunununvnwnxnynynzeUeoeoiRdDainAnBnCaiaiailNaiaiaiaiaiaiaiaiaiaiaiaonDnEmRnmaoainFaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiainrnGaimlnHnIaidDeUeUeUeUeUeUeUeUeUeVeUnJepnKnLnMnNnBnOainPnQnRainSnTnUnVnWnWnXnYainZaooaobocodaoaioeaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofoglSohoiaiojokolomonooeyeyeyeyezeyeyeyopoqeyeBoreCosneotnAaiouovowoxoyozoAoBoCoDoEoFoGoeaooHoIoJoKaoaioeaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaiaiaiaiaiaiaioLaiaidDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDbGoMoNoMaiouoOoPoQoRoSoToUoVnWoWnXaioeaoaoaoblaoaoaiaiaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaioXoXoYoXoXoXoZpapapapbaiaaaaaaaaaaaaaiaaaaaaaiaKaiaiaaoeaaaaoeaaaaoeaaaapcaaaaoeaaaabGnApdnAaiaiaipeaiaiaiaiaiaiaiaiaiaiaiaipfpgphpipjpkplaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaapmaaaiaiaioXoXoXoXpaaiaipnaiaiaipopopopoaiaiaiaiaiaippaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaicfbwnAnBpqaiprpsptpuaiprpspspspspspspvpsaipwpxpypgpipkpkaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabaipzaiaiaiaiaipAaipBpCpCpCaipDpEpEpEpFpGpHpIpJpKpLpMpNpOaipPpQpRpSpTpUpVpWpXpYpZqaqbbGqcnAqdneqeqfqgqhqiqjqkqiqiqiqiqlqiqmqiqnqoqpqqpiqrpkqsaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaqtquqvqwqxqxqxqxqyaipBqzpBqzaipDqAqBqCqDqEpIqFqGpIpLpIqHqIqJqKqKqLqKqKqKqLqKqKqLqKqMqMbGqNnAnBnAaiqOqPpspsaoaoaoaoaoaoblaoaoaoaopipiqQpipipiqRaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaqtqSqTqUqvqxqxqxqvaipBpCpBpCpIpIqVqFpIqWpIqVqXqYpIqZrarbrcrdrerfrergrererererergrererhbGnAnAnBriaibGaiairjaorkrlrmrmrnrorprqrraorsrtphrupfrvqraiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaarwrxryrzrzrAqvqxqxrBaipBpCpBrCairDrEpIpIrFrGrHrIrJrKpLpIpIrLrMrNrOrPqKrQrRrSrTrUqKqKrVrWbtrXnerYrZaisapspspsaosbscsdsdsdserrsfrraosgshsishshrvsjaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaskslsmsnsospqvqvqvqvaipBsqpBsqpIpIpIsrpIsspIpIstpIqVpLpIpIsuaiaibGaisvsvqKqKswsxsyszsAsBbGaioMoNaiaisCpspspsaosbsDsfsfsdserrsErraosFpisGsHqrsIsJaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaasKsLsMsNsOsOqvqxqxqvaipBsPsQsRairDrEpIpIsSpIpIqHsTpIpLqFpIsUsVsWsXsYsZtatbtctdqKqKqLqKtebGtfnAtgthbutipspspsaotjrrrrrrsdtkrrsfrraoaitltmaiaiaiaiaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaqtqStntoqvqxqxqxqvaiaiaiaitpburbrbtqqVtrtstttutttvtwtxtytzaitAbGtctBtctBtCtDtctEqKtctFbGnAnAnBnAaitGtHpspsaoaoaoaoaotIblaoaoaoaoaotJtKaitLtLtLaiabaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaqtquqvqvqxqxqxqxqytMtNtOpatPairDrEtQtRtStTtTtUtVaitWtXbubutYaibGtBtZtBuaubucqKqKtEuduebGnAnAnBnAaipspsufpspspraoaiuguhuhuiujukulaopisiumpipipiaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabaoaoaoaoaoaoaoaoaoaoaiaiunaiaiaiaiaiaiaiaiaiglgluoupglgluqbuurbubububutYusutuuuvuwuxbGnAnAnBnAuypspspspspspsuzuAuBuCuhuDuEuFuGaouHsipipjpipiaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +uIaaaaaaaaaaaaaouJuKuLuLuLuMuLuNaoaiuOuPuOuOuOuQuRuOuSuOaiuTuUuVuUuWuWbGuXuYuZvavbaivcbububububububwnAnAnBnAaipspspspvpspsaoaivduFuhuFuFveaiaoaiphpipipipiaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaovfuLvgvhviuLuLuLvjvkvluPvkvmvkvkvkvkvlvnaiuUvouVvpuUvqbGvpuUuUuUvoaivraiaivsuUvovtvupqvvnBtfaivwpspspspspraoaivxvyvzvAvyvyuAvBvCvDvEqrpipiaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaovFuLuMvGvHvHvHvIvJbuvKvLvMvNvMvMvMvMvOvMvPvQvQvRuUuUvSvruUuUuUuUuUvtvTvUuUuUuUuUvtnAnAnAtgvVbuqiqiqiqiqiqfaWbuvWuFuFuFuFvXaiaoaisGvYpivZvZaiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaoaoaoaoaoaoaoaoaoaoaiwavkaiaiaiwbaiaiaiwcaiuUuUwdvQwevQwfwgwhwiwjvQwkwlwgvQvQvQwjwkwmnerXwnaoaoaoaopspvwoptaoaiwpaiwqwruFwswtaoaitKaisjwuwuaiabwvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaiuPvkaiwwvlwxaiwyvlwxaiwzwzwzwAwBwCaiuUuVuUuUuUvtuVuUuUuUaoaoaoblaoaowDaowEwFaoaiaiaiwGaoaiwHaiwIwJwKwLaoaoaiwMaiaiaiaiaiaowvwvwvaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaiwNwOaiwPuOwQaiwPuOwQaiwRwRwRwSwTwUaivowVwWwXvpvtwYvpuUwZaoxaxbxcxdxexfxgxhxiaoaiaiaixjaoaiuhaixkxlxmxmaoxnxnxoxpxqxrxsxnaoaoaoaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaaaaaaaaixtxtxtaixuxvaiaiaiaiaiaiaiaiaixwxxxyxyxzxAaiaiaiaiaiaiaibGaixBaiaoxCxfxgxDxExFxGxHxixIxJxKaixLaoaixMaixNxOxPxQaoxRxnxoxnxSxSxTxnxUxnxVaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaaaaaaaaixWxXxYaixZyaybycydydyeyfyfygaiyhxyyiyjykxAaiylylylylymynyoaiypyqaoxaxFyrxGysytyuyvywyxyyyzaiyAaoyByCyDxNyExNxNaoyFxnxoxnxnxnxnxnaixTyGaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaaaaaaayHyIyJyKbuyLyMyNyNyOyNyNyNyMyPaiyQxyyRySyTyUaiyVyWyXyWyYyZypaizaaiaoxazbzczdxgzezezfzgzhzizjaixLaoaiaiaizkxNxNxNaozlzmxoxnxnxnzmxnaizmyGaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaznznababababaizoxXyJzpzqyazrzryazrzrzsyaztaizuxyzvzwyTzxaizyzzzzzzzAzBzCaiypzDaozEzFzGzHzIzJxGzKzLxJyyyzaixLaoaizMzNzOzPzPzPaozQzRzSzTzUzUzUxnaixnyGaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaabaaaayHyJzVyJzWzqyazrzrzszrzryayazXaizYzZxyxyAaAbaiAcyXAdyXAeyZAfaizaaiaoAgAhAiAjAkAlAmAnAoApAqApaixLaoaoaoaoArArArAraoAsAtAsAuAuAuAuAvAvAuAuaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwafAwaaaiAxAyxXaiAzAAzrzrABzrzryaAAACADAEAFAGAEAHzxaiAIAJAIAJAKALypaiAMaiaoaoblaoaoaoaoaoaoaoaoaoaoaoxLaoaaoeoeoeoeoeoeoeANAOAPoeoeoeoeaaaaaaaaaoaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwAQAwaaaixtxtxtaibGARaiaiaiaiaiaiaiaiaiaiaiaiASbGaiaiATAUAVAWAXAYAZBaBbBcBdBeBfBgaoBhBiBiBiBiBiBiBjaoBkaoaaaiaaaaaiaaaaaiBlBmBlaaaaaaaaaaaaaaaaaoabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwAQAwaaaaaaaaaaaiBnBoBoBpBqBrBsaiBtBuBvBwBxByBzBABBaiBCBDALBDBEAYBFAYAYAYAYAYypAYaoAYAYAYAYAYAYBGBHaoxLaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIaaabceaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaahaaaaaiBJBJBJaixLBoBoBKBLBMBNbuBOBPBPBPBPBPBQBRBSaiBTBUAYAYBVAYBWAYBXBjAYAYBYBZCaAYCbCcCcCcCcCdAYaoxLaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIaaabaaaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaznaaAwAQAwabCeCfCgBoaiChCiCjCkBLClCmaiCnCoCpBzBzBzBzCqCrbuCsCtCuBZCvBZCwCxCyCzCACACBCBaoCCCbCDCDCDCDCEBVaoCFaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIaaabceaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwAQAwaaCeCGCHCICJCKCICLCMCNCOCPaiCnCQCRCSCTBzCUCVCWaiCXCYCZDaAYAYAYDbAYAYAYDcAYBjaoaoaoaoaoaoaoaoaoaoxLaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIDdabaaaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwAQAwaaDeDfDgBoaiaiaiDhaiaiaiaiaiaiaiaiaiaiDibuDjaiaiDkAYAYDlAYDmAYDlAYAYDnDoBVDpDlAYDqDrDrDrDrDrDraixLaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIaaabceaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaDsDtDtDuDvDwBoaiaiDxDyDzDzDzDADBDCDDaiBwBzBzByDECUaiCDCDCDDFDkDGDHDIDJDKDLDMDNDOaiDPAYDrDrDrDrDrDraixLaoaaBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIaaabaaaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababAwAQAwaaDQDRDgDSaiaiDTDzDUDzDzDVDzDzDWaiDXDYBzCpCqBzaiaiaiaiaiDkDZEaEbaiaiaiaiaiaiaiAYAYEcEcEcEcEcEcaiEdaoaiBIBIBIBIBIBIBIBIBIBIBIBIBIBIBIceabceaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwAQAwaaCeEeDgEfaiaiEgEhEiEhEiEjEkElEmaiEnBzEoEpEqEraiaaaaaiEsEaEtEaEbaiaaaaaaaaaaaiEuEvEcEcEcEcEcEcaixLBoBoaiaaaaaaaaaaaaEwExEwaaaaaaaaaaababaaaowvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwEyAwaaCeEzEAEBaiaibGaiaiaiaiaiaiaiaiaiaiaiaiaibGECaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiEDEBBoCiEEaaaaaaaaaaEFEGEHaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaahaaaaCeEIEJBoEKBoELCICIEMCICICICICIEMCICICIENEOEPEQERCICICIEMCICICICIESEQCICICICICIETCICICICIEUEVEWEXCjBoEYyHaaaaaaaaaaEFEZEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwFaAwaaaiBJBJaiBJBJBJBJBJaiBJBJBJBJBJaiBJBJBJBJFbaixtBJBJBJBJaiBJBJBJBJBJaiBJBJBJBJBJaiBJBJBJBJFcBoEBBoEBBoBoFdFeFeFeFeFeFfoeEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwFaAwaaabababababababababababababababababababababababababababababababababababababababaiaiaiaiaiaiCiBoBoBoBoEBExoeoeEGoeoeoeEGEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaAwFgAwaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiBoFhFiFjaiFkFlFkFlFmFmFmFmFmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFnxtxtxtxtFoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,2) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiFqFqFqFqFqFqFqFraiFsFtFuaiFvFwFxFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiFyFzFyFyFyFyFyFyaiaiFAFBFCFDaiaiFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpaiFyFyFyFyFyFyFyFyFEaiFFFGFHFvFIFJFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiaiFyFKFLFLFyFMFNFOFOFPFQFBFCFDaiaiFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiFRFyFyFyFyFyFyFSFTFyFCFCFUFHFvFVFWFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiFRFyFXFyFyFyFYFZaiGaGbFCFBFCFDaiaiFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiaiFyFyGcGdFKGeGfFyFyFCGgGhaiFvGiGjFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpaiFyFzGkGlGmGnGoGpaiaiGqaiaiFDaiaiFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpaiFyFyGrGsGsGtGuGvGwGxGyGzGwGAGBaiFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiGCGDGEGFGGGHGIGJGKGLGwGwGMGNGOGPFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpaiaiaiGQGRGRGRGRGSaiaiaiaiaiaiaiaiFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpGTFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFpFpFpFpFpFpFpFpFpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,3) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,4) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiGVGVGVGVGVGVGVGVGVGVGVGVGVGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiaiaiaiaiaiaiaiaiaiaiaiaiaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiGWGUGUGXGUGXGXGXGXGYGZHaaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiaiaiGUGXGUGXGXGXGXGUGUGUaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUHbHcHbGUGUGUGUHdGUGUGUGUGUaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiaiaiGUGXGXGXGXGXGXGXGXGXaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiHeGUGUGXGXGXGXGXGXGXGXGXaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiaiaiaiaiaiaiaiaiaiaiaiaiaiGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGUaiGVGVGVGVGVGVGVGVGVGVGVGVGVGVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHfaaHgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHhaaHiaaHjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,5) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,6) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,7) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHkaaHlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHmHnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHoHpHqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHrHrHrHrHrHrHrHrHrHrHrHrHrHrHraaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHsHtHuHuHuHuHuHrHvHvHvHvHvHvHraaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHwHwHxHxHxHxHxHrHrHrHrHrHrHrHraaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHwHwHwHwHwHwHwHrHvHvHyHyHyHyHraaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHwHwHwHwHwHwHwHrHzHvHyHyHyHyHraaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHrHrHrHrHrHrHrHwHwHrHvHvHyHyHyHyHrHrHrHrHrHrHrHrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHAHBHCHDHvHEHrHFHGHrHHHvHvHvHIHIHrHJHvHvHKHKHKHKHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHvHvHvHvHvHLHrHwHwHrHHHvHMHMHIHIHrHJHvHvHvHvHvHNHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHOHPHQHRHvHSHrHvHvHrHTHvHMHMHIHIHrHJHvHvHvHUHUHUHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHOHVHWHXHvHYHrHvHvHrHTHvHMHMHIHIHrHJHvHvHvHUHUHUHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHOHvHvHvHvHYHrHvHvHrHTHvHMHMHIHIHrHZHvHvHvHUHUHUHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrIaIbHvIcIdIeHrHvHvHrHTHvHMHMHIHIHrHZHvIfIfIfIfIfHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHrHrIgHrHrHrHrHvHvHrHrIgHrHrHrHrHrHZHvIfIfIfIfIfHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIiIhaaaaaaHrHvHvHvHvHvHvHvHvHvHvIjIjIjIjHrHvHvIfIfIfIfIfHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIhIkIhIhHrHrHrHzHvHvHvHvHvHvHvHvHvHvHvHvHvIlHvHvIfIfIfIfIfHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaImInIoIpIqaaaaHrHvHvHvHvHvHvHvHvHvHvHvHvHvHvHrHvHvIrIrIrIrIrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIoIoIoIhIsIsIsHvHvHvHvIsIsIsIsIsIsIsIsIsIsHrHZHvIrIrIrIrIrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaImInItIoIuIvHwIvHvHvHvHvIwIxIyIzHwHwIxIyIzIAHrHZHvIrIrIrIrIrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIoIoIoIhIsIsIsHvHvHvHvIwHwHwHwHwHwHwHwHwHwHrHZHvIrIrIrIrIrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIBICIDIhaaaaHrHvHvHvHvIwHwHwHwHwHwHwHwHwHwHrHrHrHrHrHrHrHrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIhIEIFIGIhHrHrHrHvHvHvHvIwIxIyIzHwHwIxIyIzHwHrHvHDIHHvHvHvIIIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIKILILILIMaaaaHrHvHvHvHvIwHwHwHwHwHwHwHwHwHwHrHvHvHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHrHvHvHvHvIwHwHwHwHwHwHwHwHwINHrHvHvHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIOIOIOIOIOIPIPIPIPIPIPIPIPIOHrHrHrHvHvHvHvIwHwHwHwHwHwHwHwHwHwHrHvHvHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIOIOIOIOIOIOIQIQIRIRIQIQIRIRIQIQIRIRIQIOHrHvHvHvHvHvHvIsIsIsISIsIsIsIsIsIsHrHvHvHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOITIUITIUITIOIVIWIWIVIVIWIWIVIVIWIWIVIVIOHrHvHvHvHvHvHvHvHvHvHvHvHvHvHvHvHvHrHrHrHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIXIUIXIUIXIOIWIWIVIVIWIWIVIVIWIWIVIVIWIOHrHvHvHvHvHvHvHvHvHvHvHvHvHvHvHvHvIYHvIYHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIUIUIUIUIUIOIWIVIVIWIWIVIVIWIWIVIVIWIWIOHrHzHvHvHvHvHvHvHvHvHvHvHvHvHvHvHvHrHrHrHvHvHvHvHvIJaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIUIUIUIUIUIUIVIVIWIWIVIVIWIWIVIVIWIWIVIOHrHvHvHvHvHvHvHvHvHrHrHrHrHrHrHrHrHrHrHrHrHrHrHrHrHraaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIUIUIUIUIUIOIVIWIWIVIVIWIWIVIVIWIWIVIVIOHrHvHvHvHvHvHvHvHvHraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIOIOIOIOIOIOIOIOIOIOIOIOIPIPIPIPIPIPIPIPIOIsIvIsIZIZIZIZIZIZHraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIsHwIsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaaaaaaaaaaaaaaaaaaIsIvIsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJbJbJbJbJcJbJbJdJbJbJbJcJbBIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJeJfJgJhJiJjJkJlJmJbJnJoJbJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJpJlJpJdJlJgJlJpJqJpJgJrJsJtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJeJfJlJtJrJlJuJlJvJrJlJrJwJtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJpJlJpJtJrJpJlJgJxJgJpJrJyJtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJeJfJgJtJzJlJlJlJAJbJgJBJbJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJbJbJbJbJbJcJbJbJdJcJbJbJcJbBIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,8) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaslaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCafJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaJDaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCEyJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaJEJEJEJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaJEJFJGJHJIJJJKJLJMJNJOJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaJEJPJPJQJRJRJQJSJSJPJPJPJPJTJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCJUJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaJEJQJQJVJRJRJWJQJQJPJPJXJYJPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaJEJEJEJEJEJEJEJEJEJEJEJEJEJZKaJRJRJRJRJRJQKbKcJEJYJPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaJEKdKdKdKdKeKdKdKdKdKdKdJEKfKgKgKhKiJRJRJQJPKjJEJYKkJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaJEKdKlKmKmKnKdKdKmKmKlKdJEJZKoJWKpJRJVJQJQJPKqJEJYJPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaRaaJEKdKrKsKtKuKdKrKsKtKuKdJEKvKvJQKpJRJQJPJPJPKwJEJYJTJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaJEKdKrKxKyKuKdKrKxKyKuKdJEKzKzJQKAJQKBKCKDKDKEJEJYKFJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaJEKGKdKHKHKdKdKdKHKHKdKIKJKKKLKMKNKOJEJEJEJEJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaJDaaaaaRaaJEKPKdKdKdKdKlKdKdKdKdKnKQKRKRKRKSKTKUKVKVKVKVKWKXKYKZLaLbLcJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaJELdKdKdKdKdKdKdKmKmKdKdLeKRKRLfKRLgKULhLhLhLhLhLhLhLiLjLjLkJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaJELlKdKdKdKdKdKrKsKtKuLmLnKTKRKRKRLgLoLhLpLhLqLhLpLhLhLhLrLsJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCEyJCaaaRaaJELtKlKdKnKdKdKrKxKyKuLuLvLgKRKRKRLwLxLyLyLyLzLyLyLyLALhLrLsJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaaRaaJELBLCLDLEKPLFLGLHLHLGLIKJLgKRKRKRLgLJLhLqLhLpLhLqLhLKLpLLLsJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaaRaaJEJEJEJEJEJEJEJEJEJEJEJEKQLgLMKRLfLgKULNLNLOLPLPLPLPLQLhLLLsJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaJEJEJEJEJELRLSLSLSLTLUJEJELVKRKRKRLWJEJEJEJEJEJEJEJELXLqLhJEJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaJELULYLZLZMaMbMcMdMeKRKRKRLgKUMfMgMhJELpLhLqLhLqLhLpJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaJELYMiMjMkMlLYMmMnLfKRKRLMMoKUMpMgMhJEMqMqMqMqMqMqMqJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCJUJCaaaaaaaaaaaaaaJELYMiMrMsMlLYMmLgKRKRKRKRMtMuMvMwMxJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaaaaaaaaaaaaJEJEJEJEJEJEJEJELgKRKRKRKRLgJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaaaaaaJEJEJEJEJEJEJEMyMzMAKULgLMKRKRLfLgKUMBMCMDJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaaaaaaaJEMEMFJEMGMHJEMyMzMIKUMJKRKRKRKRMoKUMKMCMDJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaoaoaoJEMLMMJEMNMOJEMPMQMRMSMTKRKRKRKRMtMUMVMWMXJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaCeMYMZJENaJEJENaJEJEJEJEJEJENbLfKRKRLMLgJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaCeNcNdJENeNfNfNeNfNfNfNfNfNfLgKRKRKRKRLgKUNgNhNiJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaDsDtDtNjNdNcNkNlNmNmNnNmNmNmNoNmNmNpNqNqKTKRMoKUNrNhNiJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababJCAQJCaaCeNsNdNtNeNfNfNeNfNfNfNuNvNfLgLMKRKSNwNxNyNzNANBJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaCeNCNDNtNaJEJENaJEJEJEJEJEJELVKRKRKRKRLgJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCEyJCaaCeNENFNtNGNHJENINJJENKNLNMKULgKRKRKRKRLgKUNNNONPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaCeNQNRNSNTNUJENVNWJENKNLNXKUMJLfKRKRLMMoKUNYNONPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaaoaoaoJEJEJEJEJEJEJENZOaObOcOdKRKRKRKRMtOeOfOgOhJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaaaaaaaJEJEJEJEJELgKRKRKRKROiJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaaaaaaaJEOjOkOlKULgLMKRKRLfLgKUOmOnOoJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaaaahaaaaznaaaaaaaaaaaaaaaaJEOjOkOpKUMJKRKRKRKRMoKUOqOnOoJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaJEOrOsOtOuOdKRKRKRKRMtOvOwOxOyJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCJUJCaaabaaaaaaaaaaaaaaaaJEJEJEJEJELgLfKRKRLMLgJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaJEOzOAOBKULgKRKRKRKRLgKUOCODOEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaJEOzOAOFKUMJKRKRKRKRMoKUOGODOHJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaJEOIOJOKOLOdLMKRKRLfMtOMONOOOPJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaRaaaaaaaaaaaaaaaaJEJEJEJEJELVKRKRKRKRLWJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaJEJEJEJEJEJEJEJEJEJEOQOROSOTOUOQJEJEJEJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaJEOVOWOXOYOZPaPaJEJEPbPcPcPcPcPbJEPdPePfPgJEPhPhPhPhPhJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaJDaaaaaRaaaaaaJEPiPiPjOWOYPaPaJEJEPbPkPcPcPlPbPmPnPnPoPnPpPnPnPnPnPqJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaJEOWPrOYOYOYPaPaJEJEPsPcPcPcPcPtPuPvPwPvPvPxPnPhPhPhPhJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaJEPyPzPzPzPzPzPzPAPBPCPcPcPcPkPcPDPqPEPnPFJEPnPnPnPnPoJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCEyJCaaaRaaaaaaJEPGOVOZPGOVPHOZJEJEPIPlPcPcPcPcPJPKPEPnPLJEPhPhPhPhPhJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaaRaaaaaaJEPMPMOYPMPMPHOYJEJEPNPOPPPQPRPSJEJEPTJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaaRaaaaaaJEOYOYOYOYOYPUPVJEPWPXPWPWPWPWPYPZQaQbQcQaQaQdQaQeJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaJEJEJEQfJEJEJEJEJEQgQhQiPWPWPWPWPZQaQjQaQkQaQlQmQaJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaJEQnQoQoQoQoJEQpPWPWPWPWPWPWQqQaQbQaQkQaQrQsQaJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaJEQtQnQnQnQuJEQvQwQwQwPWPWPWQxQaQyQaQkQaQzQAQBJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaJEQCQnQDQEQFQGQhPWPWQwPWQiPWQHQaQbQaQaQaQaQaQaJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCJUJCaaabaaaaaaaaaaJEJEJEJEJEJEJEPWPYPWQIPWPWPWPZQJQbQaQdQaQaQJQaJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaaaaaaaJEQKQLQLQMQNQLQLPZQOQPQQQQQQQQQRQSJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaaaaaaaaaJEJEJEJEQTJEJEJEJEJEJEJEJEJEJEJEJEJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaJEQUJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaJEQVJEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaQWQWQWQWQWQXQWQWQYQWQWQWQXQWQZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaQWRaRbRcRdReRdRfRdRgQWRhRiQWQWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaQWRjRkRkRaRlRaRlRaRmRaRfRlRnRoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCJUJCaaabaaaaaaaaaaaaaaQWRdRaRdRdRlRdRlRdRpRlRdRlRqRoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaQWRjRkRkRaRlRaRlRaRrRaRfRlRsRoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaabaaaaaaaaaaaaaaQWRaRbRcRdRtRdRfRdRuQWRvRwQWQWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaabaaaaaaaaaaaaaaQWQWQWQWQWQXQWQWRjQXQWQWQXQWQZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaznaaJCAQJCabaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaJDaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCAQJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCEyJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaahaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFaJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaJCFgJCaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaslaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"}