"
+ if(!data_core)
+ to_chat(src,"
There is no data to form a manifest with. Contact your Nanotrasen administrator.")
+ return
+ dat += data_core.get_manifest(1) //The 1 makes it monochrome.
+
+ var/datum/browser/popup = new(src, "Crew Manifest", "Crew Manifest", 370, 420, src)
+ popup.set_content(dat)
+ popup.open()
//can't inject synths
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
diff --git a/code/modules/mob/living/simple_animal/aliens/faithless.dm b/code/modules/mob/living/simple_animal/aliens/faithless.dm
index af2e7da48d..3b5e520fcd 100644
--- a/code/modules/mob/living/simple_animal/aliens/faithless.dm
+++ b/code/modules/mob/living/simple_animal/aliens/faithless.dm
@@ -72,7 +72,6 @@
melee_damage_lower = 13
melee_damage_upper = 28
-
/mob/living/simple_animal/hostile/faithless/strong/cult
faction = "cult"
supernatural = 1
diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
index 70e3d20f84..876f5927a2 100644
--- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
@@ -1,6 +1,6 @@
// Hivebots are tuned towards how many default lasers are needed to kill them.
// As such, if laser damage is ever changed, you should change this define.
-#define LASERS_TO_KILL *30
+#define LASERS_TO_KILL * 40
// Default hivebot is melee, and a bit more meaty, so it can meatshield for their ranged friends.
/mob/living/simple_animal/hostile/hivebot
@@ -237,3 +237,5 @@
/obj/item/projectile/bullet/hivebot
damage = 10
damage_type = BRUTE
+
+#undef LASERS_TO_KILL
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/animals/cat.dm b/code/modules/mob/living/simple_animal/animals/cat.dm
index 4b4eba06fb..20d98f9084 100644
--- a/code/modules/mob/living/simple_animal/animals/cat.dm
+++ b/code/modules/mob/living/simple_animal/animals/cat.dm
@@ -63,8 +63,8 @@
handle_flee_target()
/mob/living/simple_animal/cat/PunchTarget()
- if(istype(target_mob,/mob/living/simple_animal/mouse))
- var/mob/living/simple_animal/mouse/mouse = target_mob
+ if(ismouse(target_mob))
+ var/mob/living/simple_mob/animal/passive/mouse/mouse = target_mob
mouse.splat()
visible_emote(pick("bites \the [mouse]!","toys with \the [mouse].","chomps on \the [mouse]!"))
return mouse
@@ -72,7 +72,7 @@
..()
/mob/living/simple_animal/cat/Found(var/atom/found_atom)
- if(istype(found_atom,/mob/living/simple_animal/mouse) && SA_attackable(found_atom))
+ if(ismouse(found_atom) && SA_attackable(found_atom))
return found_atom
/mob/living/simple_animal/cat/proc/handle_flee_target()
@@ -101,6 +101,7 @@
/mob/living/simple_animal/cat/fluff
var/mob/living/carbon/human/friend
var/befriend_job = null
+ var/friend_name = null
/mob/living/simple_animal/cat/fluff/Life()
. = ..()
@@ -136,7 +137,7 @@
if(!friend)
var/mob/living/carbon/human/H = usr
- if(istype(H) && (!befriend_job || H.job == befriend_job))
+ if(istype(H) && (!befriend_job || H.job == befriend_job) && (!friend_name || H.real_name == friend_name))
friend = usr
. = 1
else if(usr == friend)
@@ -191,7 +192,7 @@
icon_dead = "cat3_dead"
icon_rest = "cat3_rest"
holder_type = /obj/item/weapon/holder/cat/fluff/bones
- var/friend_name = "Erstatz Vryroxes"
+ friend_name = "Erstatz Vryroxes"
/mob/living/simple_animal/cat/kitten/New()
gender = pick(MALE, FEMALE)
diff --git a/code/modules/mob/living/simple_animal/animals/corgi.dm b/code/modules/mob/living/simple_animal/animals/corgi.dm
index 33bda8b2e0..6cc1f80523 100644
--- a/code/modules/mob/living/simple_animal/animals/corgi.dm
+++ b/code/modules/mob/living/simple_animal/animals/corgi.dm
@@ -207,6 +207,7 @@
set_dir(i)
sleep(1)
+
//Technically this should be like, its own file or something or a subset of dog but whatever. Not a coder.
/mob/living/simple_animal/corgi/tamaskan
name = "tamaskan"
diff --git a/code/modules/mob/living/simple_animal/animals/mouse.dm b/code/modules/mob/living/simple_animal/animals/mouse.dm
index bf5d03c52c..370001a7ca 100644
--- a/code/modules/mob/living/simple_animal/animals/mouse.dm
+++ b/code/modules/mob/living/simple_animal/animals/mouse.dm
@@ -16,10 +16,10 @@
see_in_dark = 6
universal_understand = 1
- mob_size = MOB_MINISCULE
+ mob_size = MOB_SMALL
pass_flags = PASSTABLE
- can_pull_size = ITEMSIZE_TINY
- can_pull_mobs = MOB_PULL_NONE
+// can_pull_size = ITEMSIZE_TINY
+// can_pull_mobs = MOB_PULL_NONE
layer = MOB_LAYER
density = 0
diff --git a/code/modules/mob/living/simple_animal/animals/spiderbot.dm b/code/modules/mob/living/simple_animal/animals/spiderbot.dm
index b76351b976..9145e1923f 100644
--- a/code/modules/mob/living/simple_animal/animals/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/animals/spiderbot.dm
@@ -46,7 +46,7 @@
/obj/item/device/radio/borg,
/obj/item/weapon/holder,
/obj/machinery/camera,
- /mob/living/simple_animal/borer,
+ /mob/living/simple_mob/animal/borer,
/obj/item/device/mmi,
)
diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm
index e4add4d749..43edd45602 100644
--- a/code/modules/mob/living/simple_animal/borer/borer.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/borer
+/mob/living/simple_mob/animal/borer
name = "cortical borer"
real_name = "cortical borer"
desc = "A small, quivering sluglike creature."
@@ -35,15 +35,15 @@
can_be_antagged = TRUE
-/mob/living/simple_animal/borer/roundstart
+/mob/living/simple_mob/animal/borer/roundstart
roundstart = 1
-/mob/living/simple_animal/borer/Login()
+/mob/living/simple_mob/animal/borer/Login()
..()
if(mind)
borers.add_antagonist(mind)
-/mob/living/simple_animal/borer/New()
+/mob/living/simple_mob/animal/borer/New()
..()
add_language("Cortical Link")
@@ -53,7 +53,7 @@
truename = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]"
if(!roundstart) request_player()
-/mob/living/simple_animal/borer/Life()
+/mob/living/simple_mob/animal/borer/Life()
..()
@@ -91,7 +91,7 @@
if(prob(host.brainloss/20))
host.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_v","gasp"))]")
-/mob/living/simple_animal/borer/Stat()
+/mob/living/simple_mob/animal/borer/Stat()
..()
statpanel("Status")
@@ -103,7 +103,7 @@
if (client.statpanel == "Status")
stat("Chemicals", chemicals)
-/mob/living/simple_animal/borer/proc/detatch()
+/mob/living/simple_mob/animal/borer/proc/detatch()
if(!host || !controlling) return
@@ -154,7 +154,7 @@
qdel(host_brain)
-/mob/living/simple_animal/borer/proc/leave_host()
+/mob/living/simple_mob/animal/borer/proc/leave_host()
if(!host) return
@@ -172,7 +172,7 @@
return
//Procs for grabbing players.
-/mob/living/simple_animal/borer/proc/request_player()
+/mob/living/simple_mob/animal/borer/proc/request_player()
for(var/mob/observer/dead/O in player_list)
if(jobban_isbanned(O, "Borer"))
continue
@@ -180,7 +180,7 @@
if(O.client.prefs.be_special & BE_ALIEN)
question(O.client)
-/mob/living/simple_animal/borer/proc/question(var/client/C)
+/mob/living/simple_mob/animal/borer/proc/question(var/client/C)
spawn(0)
if(!C) return
var/response = alert(C, "A cortical borer needs a player. Are you interested?", "Cortical borer request", "Yes", "No", "Never for this round")
@@ -191,7 +191,7 @@
else if (response == "Never for this round")
C.prefs.be_special ^= BE_ALIEN
-/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
+/mob/living/simple_mob/animal/borer/proc/transfer_personality(var/client/candidate)
if(!candidate || !candidate.mob || !candidate.mob.mind)
return
@@ -209,5 +209,5 @@
your host and your eventual spawn safe and warm."
src << "You can speak to your victim with
say, to other borers with
say :x, and use your Abilities tab to access powers."
-/mob/living/simple_animal/borer/cannot_use_vents()
+/mob/living/simple_mob/animal/borer/cannot_use_vents()
return
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/borer/borer_captive.dm b/code/modules/mob/living/simple_animal/borer/borer_captive.dm
index c34dca00e8..2e5af8be9a 100644
--- a/code/modules/mob/living/simple_animal/borer/borer_captive.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer_captive.dm
@@ -10,7 +10,7 @@
src << "
You cannot speak in IC (muted)."
return
- if(istype(src.loc,/mob/living/simple_animal/borer))
+ if(istype(src.loc,/mob/living/simple_mob/animal/borer))
message = sanitize(message)
if (!message)
@@ -19,7 +19,7 @@
if (stat == 2)
return say_dead(message)
- var/mob/living/simple_animal/borer/B = src.loc
+ var/mob/living/simple_mob/animal/borer/B = src.loc
src << "You whisper silently, \"[message]\""
B.host << "The captive mind of [src] whispers, \"[message]\""
@@ -34,8 +34,8 @@
/mob/living/captive_brain/process_resist()
//Resisting control by an alien mind.
- if(istype(src.loc,/mob/living/simple_animal/borer))
- var/mob/living/simple_animal/borer/B = src.loc
+ if(istype(src.loc,/mob/living/simple_mob/animal/borer))
+ var/mob/living/simple_mob/animal/borer/B = src.loc
var/mob/living/captive_brain/H = src
H << "
You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm
index b75da20cc4..c12736a307 100644
--- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/borer/verb/release_host()
+/mob/living/simple_mob/animal/borer/verb/release_host()
set category = "Abilities"
set name = "Release Host"
set desc = "Slither out of your host."
@@ -38,7 +38,7 @@
detatch()
leave_host()
-/mob/living/simple_animal/borer/verb/infest()
+/mob/living/simple_mob/animal/borer/verb/infest()
set category = "Abilities"
set name = "Infest"
set desc = "Infest a suitable humanoid host."
@@ -126,7 +126,7 @@
return
/*
-/mob/living/simple_animal/borer/verb/devour_brain()
+/mob/living/simple_mob/animal/borer/verb/devour_brain()
set category = "Abilities"
set name = "Devour Brain"
set desc = "Take permanent control of a dead host."
@@ -152,7 +152,7 @@
*/
// BRAIN WORM ZOMBIES AAAAH.
-/mob/living/simple_animal/borer/proc/replace_brain()
+/mob/living/simple_mob/animal/borer/proc/replace_brain()
var/mob/living/carbon/human/H = host
@@ -198,7 +198,7 @@
if(!H.lastKnownIP)
H.lastKnownIP = s2h_ip
-/mob/living/simple_animal/borer/verb/secrete_chemicals()
+/mob/living/simple_mob/animal/borer/verb/secrete_chemicals()
set category = "Abilities"
set name = "Secrete Chemicals"
set desc = "Push some chemicals into your host's bloodstream."
@@ -226,7 +226,7 @@
host.reagents.add_reagent(chem, 10)
chemicals -= 50
-/mob/living/simple_animal/borer/verb/dominate_victim()
+/mob/living/simple_mob/animal/borer/verb/dominate_victim()
set category = "Abilities"
set name = "Paralyze Victim"
set desc = "Freeze the limbs of a potential host with supernatural fear."
@@ -266,7 +266,7 @@
used_dominate = world.time
-/mob/living/simple_animal/borer/verb/bond_brain()
+/mob/living/simple_mob/animal/borer/verb/bond_brain()
set category = "Abilities"
set name = "Assume Control"
set desc = "Fully connect to the brain of your host."
@@ -335,20 +335,3 @@
host.verbs += /mob/living/carbon/proc/spawn_larvae
return
-
-/mob/living/carbon/human/proc/jumpstart()
- set category = "Abilities"
- set name = "Revive Host"
- set desc = "Send a jolt of electricity through your host, reviving them."
-
- if(stat != 2)
- usr << "Your host is already alive."
- return
-
- verbs -= /mob/living/carbon/human/proc/jumpstart
- visible_message("
With a hideous, rattling moan, [src] shudders back to life!")
-
- rejuvenate()
- restore_blood()
- fixblood()
- update_canmove()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/borer/say.dm b/code/modules/mob/living/simple_animal/borer/say.dm
index 440dfa7ff7..f4c12a7458 100644
--- a/code/modules/mob/living/simple_animal/borer/say.dm
+++ b/code/modules/mob/living/simple_animal/borer/say.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/borer/say(var/message)
+/mob/living/simple_mob/animal/borer/say(var/message)
message = sanitize(message)
message = capitalize(message)
diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm
deleted file mode 100644
index 26ab3a1260..0000000000
--- a/code/modules/mob/living/simple_animal/constructs/constructs.dm
+++ /dev/null
@@ -1,488 +0,0 @@
-/mob/living/simple_animal/construct
- name = "Construct"
- real_name = "Construct"
- var/construct_type = "shade"
- desc = ""
- speak_emote = list("hisses")
- emote_hear = list("wails","screeches")
-
- ui_icons = 'icons/mob/screen1_construct.dmi'
- has_hands = 1
- hand_form = "stone manipulators"
-
- response_help = "thinks better of touching"
- response_disarm = "flailed at"
- response_harm = "punched"
-
- intelligence_level = SA_HUMANOID // Player controlled.
-
- hovering = TRUE
- softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'.
- parachuting = TRUE
-
- icon_dead = "shade_dead"
- var/do_glow = 1
-
- speed = -1
- a_intent = I_HURT
- stop_automated_movement = 1
-
- status_flags = CANPUSH
-
- universal_speak = 0
- universal_understand = 1
-
- attack_sound = 'sound/weapons/spiderlunge.ogg'
-
- min_oxy = 0
- max_oxy = 0
- min_tox = 0
- max_tox = 0
- min_co2 = 0
- max_co2 = 0
- min_n2 = 0
- max_n2 = 0
-
- minbodytemp = 0
- show_stat_health = 1
-
- faction = "cult"
- supernatural = 1
-
- see_invisible = SEE_INVISIBLE_NOLIGHTING
- see_in_dark = 7
-
- var/nullblock = 0
-
- mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
- mob_push_flags = ALLMOBS
-
- var/list/construct_spells = list()
-
- can_be_antagged = TRUE
-
- taser_kill = 0 // no
-
- shock_resistance = 0.9 //Electricity isn't very effective on stone, especially that from hell.
-
- armor = list(
- "melee" = 10,
- "bullet" = 10,
- "laser" = 10,
- "energy" = 10,
- "bomb" = 10,
- "bio" = 100,
- "rad" = 100)
-
-/mob/living/simple_animal/construct/place_spell_in_hand(var/path)
- if(!path || !ispath(path))
- return 0
-
- //var/obj/item/weapon/spell/S = new path(src)
- var/obj/item/weapon/spell/construct/S = new path(src)
-
- //No hands needed for innate casts.
- if(S.cast_methods & CAST_INNATE)
- if(S.run_checks())
- S.on_innate_cast(src)
-
- if(l_hand && r_hand) //Make sure our hands aren't full.
- if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful.
- var/obj/item/weapon/spell/r_spell = r_hand
- if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands.
- r_spell.on_combine_cast(S, src)
- else if(istype(l_hand, /obj/item/weapon/spell))
- var/obj/item/weapon/spell/l_spell = l_hand
- if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too.
- l_spell.on_combine_cast(S, src)
- else //Welp
- to_chat(src, "
You require a free manipulator to use this power.")
- return 0
-
- if(S.run_checks())
- put_in_hands(S)
- return 1
- else
- qdel(S)
- return 0
-
-/mob/living/simple_animal/construct/cultify()
- return
-
-/mob/living/simple_animal/construct/New()
- ..()
- name = text("[initial(name)] ([rand(1, 1000)])")
- real_name = name
- add_language("Cult")
- add_language("Occult")
- for(var/spell in construct_spells)
- src.add_spell(new spell, "const_spell_ready")
- updateicon()
-
-/mob/living/simple_animal/construct/updateicon()
- overlays.Cut()
- ..()
- if(do_glow)
- add_glow()
-
-/mob/living/simple_animal/construct/update_icon()
- ..()
- if(do_glow)
- add_glow()
-
-/mob/living/simple_animal/construct/death()
- new /obj/item/weapon/ectoplasm (src.loc)
- ..(null,"collapses in a shattered heap.")
- ghostize()
- qdel(src)
-
-/mob/living/simple_animal/construct/attack_generic(var/mob/user)
- if(istype(user, /mob/living/simple_animal/construct/builder))
- var/mob/living/simple_animal/construct/builder/B = user
- if(health < getMaxHealth())
- var/repair_lower_bound = B.melee_damage_lower * -1
- var/repair_upper_bound = B.melee_damage_upper * -1
- adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound))
- adjustFireLoss(rand(repair_lower_bound, repair_upper_bound))
- user.visible_message("
\The [user] mends some of \the [src]'s wounds.")
- else
- to_chat(user, "
\The [src] is undamaged.")
- return
- return ..()
-
-/mob/living/simple_animal/construct/examine(mob/user)
- ..(user)
- var/msg = "
*---------*\nThis is \icon[src] \a [src]!\n"
- if (src.health < src.getMaxHealth())
- msg += ""
- if (src.health >= src.getMaxHealth()/2)
- msg += "It looks slightly dented.\n"
- else
- msg += "It looks severely dented!\n"
- msg += ""
- msg += "*---------*"
-
- user << msg
-
-/mob/living/simple_animal/construct/Process_Spacemove()
- return 1 //Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. It's not hard to believe.
-
-/////////////////Juggernaut///////////////
-
-
-
-/mob/living/simple_animal/construct/armoured
- name = "Juggernaut"
- real_name = "Juggernaut"
- construct_type = "juggernaut"
- desc = "A possessed suit of armour driven by the will of the restless dead"
- icon = 'icons/mob/mob.dmi'
- icon_state = "behemoth"
- icon_living = "behemoth"
- maxHealth = 300
- health = 300
- response_harm = "harmlessly punches"
- harm_intent_damage = 0
- melee_damage_lower = 30
- melee_damage_upper = 40
- attack_armor_pen = 60 //Being punched by a living, floating statue.
- attacktext = list("smashed their armoured gauntlet into")
- friendly = list("pats")
- mob_size = MOB_HUGE
- speed = 2 //Not super fast, but it might catch up to someone in armor who got punched once or twice.
- environment_smash = 2
- attack_sound = 'sound/weapons/heavysmash.ogg'
- status_flags = 0
- resistance = 10
- construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser,
- /spell/targeted/fortify,
- /spell/targeted/construct_advanced/slam
- )
-
- armor = list(
- "melee" = 70,
- "bullet" = 30,
- "laser" = 30,
- "energy" = 30,
- "bomb" = 10,
- "bio" = 100,
- "rad" = 100)
-
-/mob/living/simple_animal/construct/armoured/Life()
- weakened = 0
- ..()
-
-/mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P)
-// if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) //If it's going to be slow, it's probably going to need every reflect it can get.
- var/reflectchance = 80 - round(P.damage/3)
- if(prob(reflectchance))
- var/damage_mod = rand(2,4)
- var/projectile_dam_type = P.damage_type
- var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
- var/armorcheck = run_armor_check(null, P.check_armour)
- var/soakedcheck = get_armor_soak(null, P.check_armour)
- if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
- visible_message("
The [P.name] bounces off of [src]'s shell!", \
- "
The [P.name] bounces off of [src]'s shell!")
- new /obj/item/weapon/material/shard/shrapnel(src.loc)
- if(!(P.damage_type == BRUTE || P.damage_type == BURN))
- projectile_dam_type = BRUTE
- incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased.
- apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
- return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect.
- else
- visible_message("
The [P.name] gets reflected by [src]'s shell!", \
- "
The [P.name] gets reflected by [src]'s shell!")
- damage_mod = rand(3,5)
- incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
- if(!(P.damage_type == BRUTE || P.damage_type == BURN))
- projectile_dam_type = BURN
- incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased.
- apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
-
- // Find a turf near or on the original location to bounce to
- if(P.starting)
- var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
- var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
- var/turf/curloc = get_turf(src)
-
- // redirect the projectile
- P.redirect(new_x, new_y, curloc, src)
- P.reflected = 1
-
- return -1 // complete projectile permutation
-
- return (..(P))
-
-
-
-////////////////////////Wraith/////////////////////////////////////////////
-
-
-
-/mob/living/simple_animal/construct/wraith
- name = "Wraith"
- real_name = "Wraith"
- construct_type = "wraith"
- desc = "A wicked bladed shell contraption piloted by a bound spirit."
- icon = 'icons/mob/mob.dmi'
- icon_state = "floating"
- icon_living = "floating"
- maxHealth = 200
- health = 200
- melee_damage_lower = 25
- melee_damage_upper = 30
- attack_armor_pen = 15
- attack_sharp = 1
- attack_edge = 1
- attacktext = list("slashed")
- friendly = list("pinches")
- speed = -1
- environment_smash = 1
- attack_sound = 'sound/weapons/rapidslice.ogg'
- construct_spells = list(/spell/targeted/ethereal_jaunt/shift,
- /spell/targeted/ambush_mode
- )
-
-/mob/living/simple_animal/construct/wraith/DoPunch(var/atom/A)
- . = ..()
- if(. && isliving(A))
- var/mob/living/L = A
- L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
-
-/////////////////////////////Artificer/////////////////////////
-
-
-
-/mob/living/simple_animal/construct/builder
- name = "Artificer"
- real_name = "Artificer"
- construct_type = "artificer"
- desc = "A bulbous construct dedicated to building and maintaining temples to their otherworldly lords."
- icon = 'icons/mob/mob.dmi'
- icon_state = "artificer"
- icon_living = "artificer"
- maxHealth = 150
- health = 150
- response_harm = "viciously beaten"
- harm_intent_damage = 5
- melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
- melee_damage_upper = 20
- attacktext = list("rammed")
- speed = 0
- environment_smash = 2
- attack_sound = 'sound/weapons/rapidslice.ogg'
- construct_spells = list(/spell/aoe_turf/conjure/construct/lesser,
- /spell/aoe_turf/conjure/wall,
- /spell/aoe_turf/conjure/floor,
- /spell/aoe_turf/conjure/soulstone,
- /spell/aoe_turf/conjure/pylon,
- /spell/aoe_turf/conjure/door,
- /spell/aoe_turf/conjure/grille,
- /spell/targeted/occult_repair_aura,
- /spell/targeted/construct_advanced/mend_acolyte
- )
-
-
-/////////////////////////////Behemoth/////////////////////////
-/*
- * The Behemoth. Admin-allowance only, still try to keep it in some guideline of 'Balanced', even if it means Security has to be fully geared to be so.
- */
-
-/mob/living/simple_animal/construct/behemoth
- name = "Behemoth"
- real_name = "Behemoth"
- construct_type = "juggernaut"
- desc = "The pinnacle of occult technology, Behemoths are nothing shy of both an Immovable Object, and Unstoppable Force."
- icon = 'icons/mob/mob.dmi'
- icon_state = "behemoth"
- icon_living = "behemoth"
- maxHealth = 750
- health = 750
- speak_emote = list("rumbles")
- response_harm = "harmlessly punched"
- harm_intent_damage = 0
- melee_damage_lower = 50
- melee_damage_upper = 50
- attacktext = list("brutally crushed")
- friendly = list("pokes") //Anything nice the Behemoth would do would still Kill the Human. Leave it at poke.
- speed = 5
- environment_smash = 2
- attack_sound = 'sound/weapons/heavysmash.ogg'
- resistance = 10
- icon_scale = 2
- var/energy = 0
- var/max_energy = 1000
- armor = list(
- "melee" = 60,
- "bullet" = 60,
- "laser" = 60,
- "energy" = 30,
- "bomb" = 10,
- "bio" = 100,
- "rad" = 100)
- construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser,
- /spell/targeted/fortify,
- /spell/targeted/construct_advanced/slam
- )
-
-/mob/living/simple_animal/construct/behemoth/bullet_act(var/obj/item/projectile/P)
- var/reflectchance = 80 - round(P.damage/3)
- if(prob(reflectchance))
- visible_message("
The [P.name] gets reflected by [src]'s shell!", \
- "
The [P.name] gets reflected by [src]'s shell!")
-
- // Find a turf near or on the original location to bounce to
- if(P.starting)
- var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
- var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
- var/turf/curloc = get_turf(src)
-
- // redirect the projectile
- P.redirect(new_x, new_y, curloc, src)
- P.reflected = 1
-
- return -1 // complete projectile permutation
-
- return (..(P))
-
-////////////////////////Harvester////////////////////////////////
-/*
- * Master of Spells and Ranged Abilities. Not as fragile as the Wraith, but nowhere near as maneuverable and deadly in melee.
- */
-
-/mob/living/simple_animal/construct/harvester
- name = "Harvester"
- real_name = "Harvester"
- construct_type = "harvester"
- desc = "A tendril-laden construct piloted by a chained mind."
- icon = 'icons/mob/mob.dmi'
- icon_state = "harvester"
- icon_living = "harvester"
- maxHealth = 150
- health = 150
- melee_damage_lower = 20
- melee_damage_upper = 25
- attack_sharp = 1
- attacktext = list("violently stabbed")
- friendly = list("caresses")
- speed = 0
- environment_smash = 1
- attack_sound = 'sound/weapons/pierce.ogg'
-
- armor = list(
- "melee" = 10,
- "bullet" = 20,
- "laser" = 20,
- "energy" = 20,
- "bomb" = 20,
- "bio" = 100,
- "rad" = 100)
-
- construct_spells = list(
- /spell/aoe_turf/knock/harvester,
- /spell/targeted/construct_advanced/inversion_beam,
- /spell/targeted/construct_advanced/agonizing_sphere,
- /spell/rune_write
- )
-
-////////////////Glow//////////////////
-/mob/living/simple_animal/construct/proc/add_glow()
- var/image/eye_glow = image(icon,"glow-[icon_state]")
- eye_glow.plane = PLANE_LIGHTING_ABOVE
- overlays += eye_glow
- set_light(2, -2, l_color = "#FFFFFF")
-
-/mob/living/simple_animal/construct/proc/remove_glow()
- overlays.Cut()
-
-////////////////HUD//////////////////////
-
-/mob/living/simple_animal/construct/Life()
- . = ..()
- if(.)
- if(fire)
- if(fire_alert) fire.icon_state = "fire1"
- else fire.icon_state = "fire0"
- if(pullin)
- if(pulling) pullin.icon_state = "pull1"
- else pullin.icon_state = "pull0"
-
- if(purged)
- if(purge > 0) purged.icon_state = "purge1"
- else purged.icon_state = "purge0"
-
- silence_spells(purge)
-
-/mob/living/simple_animal/construct/updatehealth() //Special icons.
- health = getMaxHealth() - getToxLoss() - getFireLoss() - getBruteLoss()
-
- //Alive, becoming dead
- if((stat < DEAD) && (health <= 0))
- death()
-
- //Overhealth
- if(health > getMaxHealth())
- health = getMaxHealth()
-
- //Update our hud if we have one
- if(healths)
- if(stat != DEAD)
- var/heal_per = (health / getMaxHealth()) * 100
- switch(heal_per)
- if(100 to INFINITY)
- healths.icon_state = "[construct_type]_health0"
- if(80 to 100)
- healths.icon_state = "[construct_type]_health1"
- if(60 to 80)
- healths.icon_state = "[construct_type]_health2"
- if(40 to 60)
- healths.icon_state = "[construct_type]_health3"
- if(20 to 40)
- healths.icon_state = "[construct_type]_health4"
- if(0 to 20)
- healths.icon_state = "[construct_type]_health5"
- else
- healths.icon_state = "[construct_type]_health6"
- else
- healths.icon_state = "[construct_type]_health7"
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/humanoids/head.dm b/code/modules/mob/living/simple_animal/humanoids/head.dm
deleted file mode 100644
index 22460f0990..0000000000
--- a/code/modules/mob/living/simple_animal/humanoids/head.dm
+++ /dev/null
@@ -1,61 +0,0 @@
-//Look Sir, free head!
-/mob/living/simple_animal/head
- name = "CommandBattle AI"
- desc = "A standard borg shell on its chest crude marking saying CommandBattle AI MK4 : Head."
- icon_state = "crab"
- icon_living = "crab"
- icon_dead = "crab_dead"
- intelligence_level = SA_ANIMAL
-
- wander = 0
- stop_automated_movement = 1
- universal_speak = 1
- turns_per_move = 5
-
- response_help = "pets"
- response_disarm = "gently pushes aside"
- response_harm = "punches"
-
- speak_chance = 1
- speak_emote = list("clicks")
- emote_hear = list("clicks")
- emote_see = list("clacks")
-
- meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
-
- var/list/insults = list(
- "Man you suck",
- "You look like the most retarded douche around",
- "What's up?, oh wait nevermind you are a fucking asshat",
- "you are just overly retarded",
- "Whiteman said what?!",)
- var/list/comments = list("Man have you seen those furry cats?,I mean who in the right mind would like something like that?",
- "They call me abusive,I just like the truth",
- "Beeboop, im a robit",
- "Gooogooooll, break ya bones",
- "Crab say what?",
- "Man they say we have space lizards now, man this shit is getting more wack every minute",
- "The so called \"improved\" station AI is just bullshit, that thing aint fun for noone",
- "The Colony Director is a traitor, he took my power core.",
- "Say \"what\" again. Say \"what\" again. I dare you. I double-dare you, motherfucker. Say \"what\" one more goddamn time.",
- "Ezekiel 25:17 ,The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who in the name of charity and good will shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers. And you will know my name is the Lord... when I lay my vengeance upon thee.",
- "Did you notice a sign out in front of my house that said \"Dead Nigger Storage\"?")
-
-/mob/living/simple_animal/head/Life()
- . = ..()
- if(!. || ai_inactive) return
-
- for(var/mob/A in viewers(world.view,src))
- if(A.ckey)
- say_something(A)
-
-/mob/living/simple_animal/head/proc/say_something(mob/A)
- if(prob(85))
- return
- if(prob(30))
- var/msg = pick(insults)
- msg = "Hey, [A.name].. [msg]"
- src.say(msg)
- else
- var/msg = pick(comments)
- src.say(msg)
diff --git a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm
index 9f8c737894..1bc4b985a4 100644
--- a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm
+++ b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm
@@ -96,7 +96,7 @@
..()
playsound(src,'sound/mecha/mechstep.ogg',40,1)
-
+// This is a PoI mob, not the normal, floaty drones that hang out around windows
/mob/living/simple_animal/hostile/mecha/malf_drone
name = "autonomous mechanized drone"
desc = "It appears to be an exosuit, piloted by a drone intelligence. It looks scary."
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 389209e52c..2cf070f713 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -565,12 +565,6 @@
if(act)
..(act, type, desc)
-/mob/living/simple_animal/proc/visible_emote(var/act_desc)
- custom_emote(1, act_desc)
-
-/mob/living/simple_animal/proc/audible_emote(var/act_desc)
- custom_emote(2, act_desc)
-
/mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj)
ai_log("bullet_act() I was shot by: [Proj.firer]",2)
@@ -683,9 +677,9 @@
//SA vs SA basically
/mob/living/simple_animal/attack_generic(var/mob/attacker)
- ..()
if(attacker)
react_to_attack(attacker)
+ return ..()
/mob/living/simple_animal/movement_delay()
var/tally = 0 //Incase I need to add stuff other than "speed" later
@@ -1253,8 +1247,11 @@
/mob/living/simple_animal/proc/PunchTarget()
if(!Adjacent(target_mob))
return
- if(!client)
- sleep(rand(melee_attack_minDelay, melee_attack_maxDelay))
+ if(!canClick())
+ return
+ setClickCooldown(get_attack_speed())
+// if(!client)
+// sleep(rand(melee_attack_minDelay, melee_attack_maxDelay))
if(isliving(target_mob))
var/mob/living/L = target_mob
@@ -1295,13 +1292,18 @@
//The actual top-level ranged attack proc
/mob/living/simple_animal/proc/ShootTarget()
+ if(!canClick())
+ return FALSE
+
+ setClickCooldown(get_attack_speed())
+
var/target = target_mob
var/tturf = get_turf(target)
if((firing_lines && !client) && !CheckFiringLine(tturf))
step_rand(src)
face_atom(tturf)
- return 0
+ return FALSE
visible_message("
[src] fires at [target]!")
if(rapid)
@@ -1322,7 +1324,7 @@
if(casingtype)
new casingtype
- return 1
+ return TRUE
//Check firing lines for faction_friends (if we're not cooperative, we don't care)
/mob/living/simple_animal/proc/CheckFiringLine(var/turf/tturf)
@@ -1555,13 +1557,13 @@
return 0
else
return armorval
-
+/*
// Force it to target something
/mob/living/simple_animal/proc/taunt(var/mob/living/new_target, var/forced = FALSE)
if(intelligence_level == SA_HUMANOID && !forced)
return
set_target(new_target)
-
+*/
/mob/living/simple_animal/is_sentient()
return intelligence_level != SA_PLANT && intelligence_level != SA_ROBOTIC
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 843990c7f6..2b5d44ded9 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -17,8 +17,8 @@
maxHealth = 150
var/maxHealth_adult = 200
- melee_damage_lower = 5
- melee_damage_upper = 25
+ melee_damage_lower = 10
+ melee_damage_upper = 15
melee_miss_chance = 0
gender = NEUTER
diff --git a/code/modules/mob/living/simple_mob/appearance.dm b/code/modules/mob/living/simple_mob/appearance.dm
new file mode 100644
index 0000000000..05f758d7c4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/appearance.dm
@@ -0,0 +1,76 @@
+/mob/living/simple_mob/update_icon()
+ . = ..()
+ cut_overlays()
+// var/mutable_appearance/ma = new(src)
+// ma.layer = layer
+// ma.plane = plane
+
+ add_overlay(modifier_overlay)
+
+ if(!icon_living) // Prevent the mob from turning invisible if icon_living is null.
+ icon_living = initial(icon_state)
+
+ //Awake and normal
+ if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED) ))
+ icon_state = icon_living
+
+ //Dead
+ else if(stat >= DEAD)
+ icon_state = icon_dead
+
+ //Resting or KO'd
+ else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest)
+ icon_state = icon_rest
+
+ //Backup
+ else
+ icon_state = initial(icon_state)
+
+ if(has_hands)
+ if(r_hand_sprite)
+ add_overlay(r_hand_sprite)
+ if(l_hand_sprite)
+ add_overlay(l_hand_sprite)
+
+ if(has_eye_glow)
+ if(icon_state != icon_living)
+ remove_eyes()
+ else
+ add_eyes()
+
+// appearance = ma
+
+
+// If your simple mob's update_icon() call calls overlays.Cut(), this needs to be called after this, or manually apply modifier_overly to overlays.
+/mob/living/simple_mob/update_modifier_visuals()
+ var/image/effects = null
+ if(modifier_overlay)
+ cut_overlay(modifier_overlay)
+ modifier_overlay.cut_overlays()
+ effects = modifier_overlay
+ else
+ effects = new()
+
+ for(var/datum/modifier/M in modifiers)
+ if(M.mob_overlay_state)
+ var/image/I = image("icon" = 'icons/mob/modifier_effects.dmi', "icon_state" = M.mob_overlay_state)
+ I.appearance_flags = RESET_COLOR // So colored mobs don't affect the overlay.
+ effects.add_overlay(I)
+
+ modifier_overlay = effects
+ add_overlay(modifier_overlay)
+
+
+/mob/living/simple_mob/proc/add_eyes()
+ if(!eye_layer)
+ eye_layer = image(icon, "[icon_state]-eyes")
+ eye_layer.plane = PLANE_LIGHTING_ABOVE
+
+ add_overlay(eye_layer)
+
+/mob/living/simple_mob/proc/remove_eyes()
+ cut_overlay(eye_layer)
+
+
+/mob/living/simple_mob/gib()
+ ..(icon_gib,1,icon) // we need to specify where the gib animation is stored
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/combat.dm b/code/modules/mob/living/simple_mob/combat.dm
new file mode 100644
index 0000000000..e0cf980cc3
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/combat.dm
@@ -0,0 +1,236 @@
+// Does a melee attack.
+/mob/living/simple_mob/proc/attack_target(atom/A)
+ set waitfor = FALSE // For attack animations. Don't want the AI processor to get held up.
+
+ if(!A.Adjacent(src))
+ return FALSE
+ var/turf/their_T = get_turf(A)
+
+ face_atom(A)
+
+ if(melee_attack_delay)
+ // their_T.color = "#FF0000"
+ melee_pre_animation(A)
+ handle_attack_delay(A, melee_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
+
+ // Cooldown testing is done at click code (for players) and interface code (for AI).
+ setClickCooldown(get_attack_speed())
+
+ . = do_attack(A, their_T)
+
+ if(melee_attack_delay)
+ melee_post_animation(A)
+ // their_T.color = "#FFFFFF"
+
+
+
+// This does the actual attack.
+// This is a seperate proc for the purposes of attack animations.
+// A is the thing getting attacked, T is the turf A is/was on when attack_target was called.
+/mob/living/simple_mob/proc/do_attack(atom/A, turf/T)
+ face_atom(A)
+ var/missed = FALSE
+ if(!isturf(A) && !(A in T) ) // Turfs don't contain themselves so checking contents is pointless if we're targeting a turf.
+ missed = TRUE
+ else if(!T.AdjacentQuick(src))
+ missed = TRUE
+
+ if(missed) // Most likely we have a slow attack and they dodged it or we somehow got moved.
+ add_attack_logs(src, A, "Animal-attacked (dodged)", admin_notify = FALSE)
+ playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
+ visible_message(span("warning", "\The [src] misses their attack."))
+ return FALSE
+
+ var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
+
+ damage_to_do = apply_bonus_melee_damage(A, damage_to_do)
+
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.outgoing_melee_damage_percent))
+ damage_to_do *= M.outgoing_melee_damage_percent
+
+ if(isliving(A)) // Check defenses.
+ var/mob/living/L = A
+
+ if(prob(melee_miss_chance))
+ add_attack_logs(src, L, "Animal-attacked (miss)", admin_notify = FALSE)
+ do_attack_animation(src)
+ playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
+ return FALSE // We missed.
+
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if(H.check_shields(damage = damage_to_do, damage_source = src, attacker = src, def_zone = null, attack_text = "the attack"))
+ return FALSE // We were blocked.
+
+ if(apply_attack(A, damage_to_do))
+ apply_melee_effects(A)
+ if(attack_sound)
+ playsound(src, attack_sound, 75, 1)
+
+ return TRUE
+
+// Generally used to do the regular attack.
+// Override for doing special stuff with the direct result of the attack.
+/mob/living/simple_mob/proc/apply_attack(atom/A, damage_to_do)
+ return A.attack_generic(src, damage_to_do, pick(attacktext))
+
+// Override for special effects after a successful attack, like injecting poison or stunning the target.
+/mob/living/simple_mob/proc/apply_melee_effects(atom/A)
+ return
+
+// Override to modify the amount of damage the mob does conditionally.
+// This must return the amount of outgoing damage.
+// Note that this is done before mob modifiers scale the damage.
+/mob/living/simple_mob/proc/apply_bonus_melee_damage(atom/A, damage_amount)
+ return damage_amount
+
+//The actual top-level ranged attack proc
+/mob/living/simple_mob/proc/shoot_target(atom/A)
+ set waitfor = FALSE
+ setClickCooldown(get_attack_speed())
+
+ face_atom(A)
+
+ if(ranged_attack_delay)
+ ranged_pre_animation(A)
+ handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
+
+ if(needs_reload)
+ if(reload_count >= reload_max)
+ try_reload()
+ return FALSE
+
+ visible_message("
\The [src] fires at \the [A]!")
+ shoot(A, src.loc, src)
+ if(casingtype)
+ new casingtype(loc)
+
+ if(ranged_attack_delay)
+ ranged_post_animation(A)
+
+ return TRUE
+
+
+//Shoot a bullet at someone (idk why user is an argument when src would fit???)
+/mob/living/simple_mob/proc/shoot(atom/A, turf/start, mob/living/user, bullet = 0)
+ if(A == start)
+ return
+
+ face_atom(A)
+
+ var/obj/item/projectile/P = new projectiletype(user.loc)
+ if(!P)
+ return
+
+ // If the projectile has its own sound, use it.
+ // Otherwise default to the mob's firing sound.
+ playsound(user, P.fire_sound ? P.fire_sound : projectilesound, 80, 1)
+
+ P.launch(A)
+ if(needs_reload)
+ reload_count++
+
+// if(distance >= special_attack_min_range && distance <= special_attack_max_range)
+// return TRUE
+
+/mob/living/simple_mob/proc/try_reload()
+ set waitfor = FALSE
+ set_AI_busy(TRUE)
+
+ if(do_after(src, reload_time))
+ if(reload_sound)
+ playsound(src.loc, reload_sound, 50, 1)
+ reload_count = 0
+ . = TRUE
+ else
+ . = FALSE
+ set_AI_busy(FALSE)
+
+// Can we currently do a special attack?
+/mob/living/simple_mob/proc/can_special_attack(atom/A)
+ // Validity check.
+ if(!istype(A))
+ return FALSE
+
+ // Ability check.
+ if(isnull(special_attack_min_range) || isnull(special_attack_max_range))
+ return FALSE
+
+ // Distance check.
+ var/distance = get_dist(src, A)
+ if(distance < special_attack_min_range || distance > special_attack_max_range)
+ return FALSE
+
+ // Cooldown check.
+ if(!isnull(special_attack_cooldown) && last_special_attack + special_attack_cooldown > world.time)
+ return FALSE
+
+ // Charge check.
+ if(!isnull(special_attack_charges) && special_attack_charges <= 0)
+ return FALSE
+
+ return TRUE
+
+// Should we do one? Used to make the AI not waste their special attacks. Only checked for AI. Players are free to screw up on their own.
+/mob/living/simple_mob/proc/should_special_attack(atom/A)
+ return TRUE
+
+// Special attacks, like grenades or blinding spit or whatever.
+// Don't override this, override do_special_attack() for your blinding spit/etc.
+/mob/living/simple_mob/proc/special_attack_target(atom/A)
+ face_atom(A)
+
+ if(special_attack_delay)
+ special_pre_animation(A)
+ handle_attack_delay(A, special_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
+
+ last_special_attack = world.time
+ if(do_special_attack(A))
+ if(special_attack_charges)
+ special_attack_charges -= 1
+ . = TRUE
+ else
+ . = FALSE
+
+ if(special_attack_delay)
+ special_post_animation(A)
+
+// Override this for the actual special attack.
+/mob/living/simple_mob/proc/do_special_attack(atom/A)
+ return FALSE
+
+// Sleeps the proc that called it for the correct amount of time.
+// Also makes sure the AI doesn't do anything stupid in the middle of the delay.
+/mob/living/simple_mob/proc/handle_attack_delay(atom/A, delay_amount)
+ set_AI_busy(TRUE)
+
+ // Click delay modifiers also affect telegraphing time.
+ // This means berserked enemies will leave less time to dodge.
+ var/true_attack_delay = delay_amount
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.attack_speed_percent))
+ true_attack_delay *= M.attack_speed_percent
+
+ setClickCooldown(true_attack_delay) // Insurance against a really long attack being longer than default click delay.
+
+ sleep(true_attack_delay)
+
+ set_AI_busy(FALSE)
+
+
+// Override these four for special custom animations (like the GOLEM).
+/mob/living/simple_mob/proc/melee_pre_animation(atom/A)
+ do_windup_animation(A, melee_attack_delay)
+
+/mob/living/simple_mob/proc/melee_post_animation(atom/A)
+
+/mob/living/simple_mob/proc/ranged_pre_animation(atom/A)
+ do_windup_animation(A, ranged_attack_delay) // Semi-placeholder.
+
+/mob/living/simple_mob/proc/ranged_post_animation(atom/A)
+
+/mob/living/simple_mob/proc/special_pre_animation(atom/A)
+ do_windup_animation(A, special_attack_delay) // Semi-placeholder.
+
+/mob/living/simple_mob/proc/special_post_animation(atom/A)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm
new file mode 100644
index 0000000000..af1b2774b3
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/defense.dm
@@ -0,0 +1,224 @@
+// Hit by a projectile.
+/mob/living/simple_mob/bullet_act(var/obj/item/projectile/P)
+ //Projectiles with bonus SA damage
+ if(!P.nodamage)
+ // if(!P.SA_vulnerability || P.SA_vulnerability == intelligence_level)
+ if(P.SA_vulnerability & mob_class)
+ P.damage += P.SA_bonus_damage
+
+ . = ..()
+
+
+// When someone clicks us with an empty hand
+/mob/living/simple_mob/attack_hand(mob/living/L)
+ ..()
+
+ switch(L.a_intent)
+ if(I_HELP)
+ if(health > 0)
+ L.visible_message("
\The [L] [response_help] \the [src].")
+
+ if(I_DISARM)
+ L.visible_message("
\The [L] [response_disarm] \the [src].")
+ L.do_attack_animation(src)
+ //TODO: Push the mob away or something
+
+ if(I_GRAB)
+ if (L == src)
+ return
+ if (!(status_flags & CANPUSH))
+ return
+ if(!incapacitated(INCAPACITATION_ALL) && prob(grab_resist))
+ L.visible_message("
\The [L] tries to grab \the [src] but fails!")
+ return
+
+ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(L, src)
+
+ L.put_in_active_hand(G)
+
+ G.synch()
+ G.affecting = src
+ LAssailant = L
+
+ L.visible_message("
\The [L] has grabbed [src] passively!")
+ L.do_attack_animation(src)
+
+ if(I_HURT)
+ var/armor = run_armor_check(def_zone = null, attack_flag = "melee")
+ apply_damage(damage = harm_intent_damage, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+ L.visible_message("
\The [L] [response_harm] \the [src]!")
+ L.do_attack_animation(src)
+
+ return
+
+
+// When somoene clicks us with an item in hand
+/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user)
+ if(istype(O, /obj/item/stack/medical))
+ if(stat != DEAD)
+ // This could be done better.
+ var/obj/item/stack/medical/MED = O
+ if(health < getMaxHealth())
+ if(MED.amount >= 1)
+ adjustBruteLoss(-MED.heal_brute)
+ MED.amount -= 1
+ if(MED.amount <= 0)
+ qdel(MED)
+ visible_message("
\The [user] applies the [MED] on [src].")
+ else
+ var/datum/gender/T = gender_datums[src.get_visible_gender()]
+ to_chat(user, "
\The [src] is dead, medical items won't bring [T.him] back to life.") // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code
+ if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
+ if(istype(O, /obj/item/weapon/material/knife))
+ harvest(user)
+
+ return ..()
+
+
+// Handles the actual harming by a melee weapon.
+/mob/living/simple_mob/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
+ effective_force = O.force
+
+ //Animals can't be stunned(?)
+ if(O.damtype == HALLOSS)
+ effective_force = 0
+ if(supernatural && istype(O,/obj/item/weapon/nullrod))
+ effective_force *= 2
+ purge = 3
+ if(O.force <= resistance)
+ to_chat(user,"
This weapon is ineffective, it does no damage.")
+ return 2 //???
+
+ . = ..()
+
+
+// Exploding.
+/mob/living/simple_mob/ex_act(severity)
+ if(!blinded)
+ flash_eyes()
+ var/armor = run_armor_check(def_zone = null, attack_flag = "bomb")
+ var/bombdam = 500
+ switch (severity)
+ if (1.0)
+ bombdam = 500
+ if (2.0)
+ bombdam = 60
+ if (3.0)
+ bombdam = 30
+
+ apply_damage(damage = bombdam, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+
+ if(bombdam > maxHealth)
+ gib()
+
+// Cold stuff.
+/mob/living/simple_mob/get_cold_protection()
+ return cold_resist
+
+
+// Fire stuff. Not really exciting at the moment.
+/mob/living/simple_mob/handle_fire()
+ return
+/mob/living/simple_mob/update_fire()
+ return
+/mob/living/simple_mob/IgniteMob()
+ return
+/mob/living/simple_mob/ExtinguishMob()
+ return
+
+/mob/living/simple_mob/get_heat_protection()
+ return heat_resist
+
+// Electricity
+/mob/living/simple_mob/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
+ shock_damage *= siemens_coeff
+ if(shock_damage < 1)
+ return 0
+
+ apply_damage(damage = shock_damage, damagetype = BURN, def_zone = null, blocked = null, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+ playsound(loc, "sparks", 50, 1, -1)
+
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, loc)
+ s.start()
+
+/mob/living/simple_mob/get_shock_protection()
+ return shock_resist
+
+// Shot with taser/stunvolver
+/mob/living/simple_mob/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null)
+ if(taser_kill)
+ var/stunDam = 0
+ var/agonyDam = 0
+ var/armor = run_armor_check(def_zone = null, attack_flag = "energy")
+
+ if(stun_amount)
+ stunDam += stun_amount * 0.5
+ apply_damage(damage = stunDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE)
+
+ if(agony_amount)
+ agonyDam += agony_amount * 0.5
+ apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE)
+
+
+// Electromagnetism
+/mob/living/simple_mob/emp_act(severity)
+ ..() // To emp_act() its contents.
+ if(!isSynthetic())
+ return
+ switch(severity)
+ if(1)
+ // adjustFireLoss(rand(15, 25))
+ adjustFireLoss(min(60, getMaxHealth()*0.5)) // Weak mobs will always take two direct EMP hits to kill. Stronger ones might take more.
+ if(2)
+ adjustFireLoss(min(30, getMaxHealth()*0.25))
+ // adjustFireLoss(rand(10, 18))
+ if(3)
+ adjustFireLoss(min(15, getMaxHealth()*0.125))
+ // adjustFireLoss(rand(5, 12))
+ if(4)
+ adjustFireLoss(min(7, getMaxHealth()*0.0625))
+ // adjustFireLoss(rand(1, 6))
+
+// Water
+/mob/living/simple_mob/get_water_protection()
+ return water_resist
+
+// "Poison" (aka what reagents would do if we wanted to deal with those).
+/mob/living/simple_mob/get_poison_protection()
+ return poison_resist
+
+// Armor
+/mob/living/simple_mob/getarmor(def_zone, attack_flag)
+ var/armorval = armor[attack_flag]
+ if(!armorval)
+ return 0
+ else
+ return armorval
+
+/mob/living/simple_mob/getsoak(def_zone, attack_flag)
+ var/armorval = armor_soak[attack_flag]
+ if(!armorval)
+ return 0
+ else
+ return armorval
+
+// Lightning
+/mob/living/simple_mob/lightning_act()
+ ..()
+ // If a non-player simple_mob was struck, inflict huge damage.
+ // If the damage is fatal, it is turned to ash.
+ if(!client)
+ inflict_shock_damage(200) // Mobs that are very beefy or resistant to shock may survive getting struck.
+ updatehealth()
+ if(health <= 0)
+ visible_message(span("critical", "\The [src] disintegrates into ash!"))
+ ash()
+ return // No point deafening something that wont exist.
+
+// Injections.
+/mob/living/simple_mob/can_inject(mob/user, error_msg, target_zone, ignore_thickness)
+ if(ignore_thickness)
+ return TRUE
+ return !thick_armor
+
diff --git a/code/modules/mob/living/simple_mob/hands.dm b/code/modules/mob/living/simple_mob/hands.dm
new file mode 100644
index 0000000000..0e8820fe2e
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/hands.dm
@@ -0,0 +1,143 @@
+// Hand procs for player-controlled SA's
+/mob/living/simple_mob/swap_hand()
+ src.hand = !( src.hand )
+ if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
+ if(hand) //This being 1 means the left hand is in use
+ hud_used.l_hand_hud_object.icon_state = "l_hand_active"
+ hud_used.r_hand_hud_object.icon_state = "r_hand_inactive"
+ else
+ hud_used.l_hand_hud_object.icon_state = "l_hand_inactive"
+ hud_used.r_hand_hud_object.icon_state = "r_hand_active"
+ return
+
+/mob/living/simple_mob/put_in_hands(var/obj/item/W) // No hands.
+ if(has_hands)
+ put_in_active_hand(W)
+ return 1
+ W.forceMove(get_turf(src))
+ return 1
+
+//Puts the item into our active hand if possible. returns 1 on success.
+/mob/living/simple_mob/put_in_active_hand(var/obj/item/W)
+ if(!has_hands)
+ return FALSE
+ return (hand ? put_in_l_hand(W) : put_in_r_hand(W))
+
+/mob/living/simple_mob/put_in_l_hand(var/obj/item/W)
+ if(!..() || l_hand)
+ return 0
+ W.forceMove(src)
+ l_hand = W
+ W.equipped(src,slot_l_hand)
+ W.add_fingerprint(src)
+ update_inv_l_hand()
+ return TRUE
+
+/mob/living/simple_mob/put_in_r_hand(var/obj/item/W)
+ if(!..() || r_hand)
+ return 0
+ W.forceMove(src)
+ r_hand = W
+ W.equipped(src,slot_r_hand)
+ W.add_fingerprint(src)
+ update_inv_r_hand()
+ return TRUE
+
+/mob/living/simple_mob/update_inv_r_hand()
+ if(QDESTROYING(src))
+ return
+
+ if(r_hand)
+ r_hand.screen_loc = ui_rhand //TODO
+
+ //determine icon state to use
+ var/t_state
+ if(r_hand.item_state_slots && r_hand.item_state_slots[slot_r_hand_str])
+ t_state = r_hand.item_state_slots[slot_r_hand_str]
+ else if(r_hand.item_state)
+ t_state = r_hand.item_state
+ else
+ t_state = r_hand.icon_state
+
+ //determine icon to use
+ var/icon/t_icon
+ if(r_hand.item_icons && (slot_r_hand_str in r_hand.item_icons))
+ t_icon = r_hand.item_icons[slot_r_hand_str]
+ else if(r_hand.icon_override)
+ t_state += "_r"
+ t_icon = r_hand.icon_override
+ else
+ t_icon = INV_R_HAND_DEF_ICON
+
+ //apply color
+ var/image/standing = image(icon = t_icon, icon_state = t_state)
+ standing.color = r_hand.color
+
+ r_hand_sprite = standing
+
+ else
+ r_hand_sprite = null
+
+ update_icon()
+
+/mob/living/simple_mob/update_inv_l_hand()
+ if(QDESTROYING(src))
+ return
+
+ if(l_hand)
+ l_hand.screen_loc = ui_lhand //TODO
+
+ //determine icon state to use
+ var/t_state
+ if(l_hand.item_state_slots && l_hand.item_state_slots[slot_l_hand_str])
+ t_state = l_hand.item_state_slots[slot_l_hand_str]
+ else if(l_hand.item_state)
+ t_state = l_hand.item_state
+ else
+ t_state = l_hand.icon_state
+
+ //determine icon to use
+ var/icon/t_icon
+ if(l_hand.item_icons && (slot_l_hand_str in l_hand.item_icons))
+ t_icon = l_hand.item_icons[slot_l_hand_str]
+ else if(l_hand.icon_override)
+ t_state += "_l"
+ t_icon = l_hand.icon_override
+ else
+ t_icon = INV_L_HAND_DEF_ICON
+
+ //apply color
+ var/image/standing = image(icon = t_icon, icon_state = t_state)
+ standing.color = l_hand.color
+
+ l_hand_sprite = standing
+
+ else
+ l_hand_sprite = null
+
+ update_icon()
+
+//Can insert extra huds into the hud holder here.
+/mob/living/simple_mob/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements)
+ return
+
+//If they can or cannot use tools/machines/etc
+/mob/living/simple_mob/IsAdvancedToolUser()
+ return has_hands
+
+/mob/living/simple_mob/proc/IsHumanoidToolUser(var/atom/tool)
+ if(!humanoid_hands)
+ var/display_name = null
+ if(tool)
+ display_name = tool
+ else
+ display_name = "object"
+ to_chat(src, "
Your [hand_form] are not fit for use of \the [display_name].")
+ return humanoid_hands
+
+/mob/living/simple_mob/drop_from_inventory(var/obj/item/W, var/atom/target = null)
+ . = ..(W, target)
+ if(!target)
+ target = src.loc
+ if(.)
+ W.forceMove(src.loc)
diff --git a/code/modules/mob/living/simple_mob/life.dm b/code/modules/mob/living/simple_mob/life.dm
new file mode 100644
index 0000000000..bab2aa4129
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/life.dm
@@ -0,0 +1,160 @@
+/mob/living/simple_mob/Life()
+ ..()
+
+ //Health
+ updatehealth()
+ if(stat >= DEAD)
+ return FALSE
+
+ handle_stunned()
+ handle_weakened()
+ handle_paralysed()
+ handle_supernatural()
+ handle_atmos()
+
+ handle_special()
+
+ return TRUE
+
+
+//Should we be dead?
+/mob/living/simple_mob/updatehealth()
+ health = getMaxHealth() - getFireLoss() - getBruteLoss() - getToxLoss() - getOxyLoss() - getCloneLoss()
+
+ //Alive, becoming dead
+ if((stat < DEAD) && (health <= 0))
+ death()
+
+ //Overhealth
+ if(health > getMaxHealth())
+ health = getMaxHealth()
+
+ //Update our hud if we have one
+ if(healths)
+ if(stat != DEAD)
+ var/heal_per = (health / getMaxHealth()) * 100
+ switch(heal_per)
+ if(100 to INFINITY)
+ healths.icon_state = "health0"
+ if(80 to 100)
+ healths.icon_state = "health1"
+ if(60 to 80)
+ healths.icon_state = "health2"
+ if(40 to 60)
+ healths.icon_state = "health3"
+ if(20 to 40)
+ healths.icon_state = "health4"
+ if(0 to 20)
+ healths.icon_state = "health5"
+ else
+ healths.icon_state = "health6"
+ else
+ healths.icon_state = "health7"
+
+ //Updates the nutrition while we're here
+ if(nutrition_icon)
+ var/food_per = (nutrition / initial(nutrition)) * 100
+ switch(food_per)
+ if(90 to INFINITY)
+ nutrition_icon.icon_state = "nutrition0"
+ if(75 to 90)
+ nutrition_icon.icon_state = "nutrition1"
+ if(50 to 75)
+ nutrition_icon.icon_state = "nutrition2"
+ if(25 to 50)
+ nutrition_icon.icon_state = "nutrition3"
+ if(0 to 25)
+ nutrition_icon.icon_state = "nutrition4"
+
+// Override for special bullshit.
+/mob/living/simple_mob/proc/handle_special()
+ return
+
+
+// Handle interacting with and taking damage from atmos
+// TODO - Refactor this to use handle_environment() like a good /mob/living
+/mob/living/simple_mob/proc/handle_atmos()
+ var/atmos_unsuitable = 0
+
+ var/atom/A = src.loc
+
+ if(istype(A,/turf))
+ var/turf/T = A
+
+ var/datum/gas_mixture/Environment = T.return_air()
+
+ if(Environment)
+
+ if( abs(Environment.temperature - bodytemperature) > 40 )
+ bodytemperature += ((Environment.temperature - bodytemperature) / 5)
+
+ if(min_oxy)
+ if(Environment.gas["oxygen"] < min_oxy)
+ atmos_unsuitable = 1
+ if(max_oxy)
+ if(Environment.gas["oxygen"] > max_oxy)
+ atmos_unsuitable = 1
+ if(min_tox)
+ if(Environment.gas["phoron"] < min_tox)
+ atmos_unsuitable = 2
+ if(max_tox)
+ if(Environment.gas["phoron"] > max_tox)
+ atmos_unsuitable = 2
+ if(min_n2)
+ if(Environment.gas["nitrogen"] < min_n2)
+ atmos_unsuitable = 1
+ if(max_n2)
+ if(Environment.gas["nitrogen"] > max_n2)
+ atmos_unsuitable = 1
+ if(min_co2)
+ if(Environment.gas["carbon_dioxide"] < min_co2)
+ atmos_unsuitable = 1
+ if(max_co2)
+ if(Environment.gas["carbon_dioxide"] > max_co2)
+ atmos_unsuitable = 1
+
+ //Atmos effect
+ if(bodytemperature < minbodytemp)
+ fire_alert = 2
+ adjustFireLoss(cold_damage_per_tick)
+ if(fire)
+ fire.icon_state = "fire1"
+ else if(bodytemperature > maxbodytemp)
+ fire_alert = 1
+ adjustFireLoss(heat_damage_per_tick)
+ if(fire)
+ fire.icon_state = "fire2"
+ else
+ fire_alert = 0
+ if(fire)
+ fire.icon_state = "fire0"
+
+ if(atmos_unsuitable)
+ adjustOxyLoss(unsuitable_atoms_damage)
+ if(oxygen)
+ oxygen.icon_state = "oxy1"
+ else if(oxygen)
+ if(oxygen)
+ oxygen.icon_state = "oxy0"
+ adjustOxyLoss(-unsuitable_atoms_damage)
+
+
+/mob/living/simple_mob/proc/handle_supernatural()
+ if(purge)
+ purge -= 1
+
+/mob/living/simple_mob/death(gibbed, deathmessage = "dies!")
+ density = 0 //We don't block even if we did before
+
+ if(has_eye_glow)
+ remove_eyes()
+
+ if(loot_list.len) //Drop any loot
+ for(var/path in loot_list)
+ if(prob(loot_list[path]))
+ new path(get_turf(src))
+
+ spawn(3) //We'll update our icon in a sec
+ update_icon()
+
+ return ..(gibbed,deathmessage)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/on_click.dm b/code/modules/mob/living/simple_mob/on_click.dm
new file mode 100644
index 0000000000..4b824c9580
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/on_click.dm
@@ -0,0 +1,48 @@
+/*
+ Animals
+*/
+/mob/living/simple_mob/UnarmedAttack(var/atom/A, var/proximity)
+ if(!(. = ..()))
+ return
+
+// setClickCooldown(get_attack_speed())
+
+ if(has_hands && istype(A,/obj) && a_intent != I_HURT)
+ var/obj/O = A
+ return O.attack_hand(src)
+
+ switch(a_intent)
+ if(I_HELP)
+ if(isliving(A))
+ custom_emote(1,"[pick(friendly)] \the [A]!")
+
+ if(I_HURT)
+ if(can_special_attack(A) && special_attack_target(A))
+ return
+
+ else if(melee_damage_upper == 0 && istype(A,/mob/living))
+ custom_emote(1,"[pick(friendly)] \the [A]!")
+
+ else
+ attack_target(A)
+
+ if(I_GRAB)
+ if(has_hands)
+ A.attack_hand(src)
+ else
+ attack_target(A)
+
+ if(I_DISARM)
+ if(has_hands)
+ A.attack_hand(src)
+ else
+ attack_target(A)
+
+/mob/living/simple_mob/RangedAttack(var/atom/A)
+// setClickCooldown(get_attack_speed())
+
+ if(can_special_attack(A) && special_attack_target(A))
+ return
+
+ if(projectiletype)
+ shoot_target(A)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/simple_hud.dm b/code/modules/mob/living/simple_mob/simple_hud.dm
new file mode 100644
index 0000000000..fe851648b4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/simple_hud.dm
@@ -0,0 +1,311 @@
+/mob/living/simple_mob/instantiate_hud(var/datum/hud/hud)
+ if(!client)
+ return //Why bother.
+
+ var/ui_style = 'icons/mob/screen1_animal.dmi'
+ if(ui_icons)
+ ui_style = ui_icons
+
+ var/ui_color = "#ffffff"
+ var/ui_alpha = 255
+
+ var/list/adding = list()
+ var/list/other = list()
+ var/list/hotkeybuttons = list()
+ var/list/slot_info = list()
+
+ hud.adding = adding
+ hud.other = other
+ hud.hotkeybuttons = hotkeybuttons
+
+ var/list/hud_elements = list()
+ var/obj/screen/using
+ var/obj/screen/inventory/inv_box
+
+ var/has_hidden_gear
+ if(LAZYLEN(hud_gears))
+ for(var/gear_slot in hud_gears)
+ inv_box = new /obj/screen/inventory()
+ inv_box.icon = ui_style
+ inv_box.color = ui_color
+ inv_box.alpha = ui_alpha
+
+ var/list/slot_data = hud_gears[gear_slot]
+ inv_box.name = gear_slot
+ inv_box.screen_loc = slot_data["loc"]
+ inv_box.slot_id = slot_data["slot"]
+ inv_box.icon_state = slot_data["state"]
+ slot_info["[inv_box.slot_id]"] = inv_box.screen_loc
+
+ if(slot_data["dir"])
+ inv_box.set_dir(slot_data["dir"])
+
+ if(slot_data["toggle"])
+ other += inv_box
+ has_hidden_gear = 1
+ else
+ adding += inv_box
+
+ if(has_hidden_gear)
+ using = new /obj/screen()
+ using.name = "toggle"
+ using.icon = ui_style
+ using.icon_state = "other"
+ using.screen_loc = ui_inventory
+ using.hud_layerise()
+ using.color = ui_color
+ using.alpha = ui_alpha
+ adding += using
+
+ //Intent Backdrop
+ using = new /obj/screen()
+ using.name = "act_intent"
+ using.icon = ui_style
+ using.icon_state = "intent_"+a_intent
+ using.screen_loc = ui_acti
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.adding += using
+ hud.action_intent = using
+
+ hud_elements |= using
+
+ //Small intent quarters
+ var/icon/ico
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height())
+ using = new /obj/screen()
+ using.name = I_HELP
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.alpha = ui_alpha
+ using.layer = LAYER_HUD_ITEM //These sit on the intent box
+ hud.adding += using
+ hud.help_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height())
+ using = new /obj/screen()
+ using.name = I_DISARM
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.alpha = ui_alpha
+ using.layer = LAYER_HUD_ITEM
+ hud.adding += using
+ hud.disarm_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2)
+ using = new /obj/screen()
+ using.name = I_GRAB
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.alpha = ui_alpha
+ using.layer = LAYER_HUD_ITEM
+ hud.adding += using
+ hud.grab_intent = using
+
+ ico = new(ui_style, "black")
+ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
+ ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2)
+ using = new /obj/screen()
+ using.name = I_HURT
+ using.icon = ico
+ using.screen_loc = ui_acti
+ using.alpha = ui_alpha
+ using.layer = LAYER_HUD_ITEM
+ hud.adding += using
+ hud.hurt_intent = using
+
+ //Move intent (walk/run)
+ using = new /obj/screen()
+ using.name = "mov_intent"
+ using.icon = ui_style
+ using.icon_state = (m_intent == "run" ? "running" : "walking")
+ using.screen_loc = ui_movi
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.adding += using
+ hud.move_intent = using
+
+ //Resist button
+ using = new /obj/screen()
+ using.name = "resist"
+ using.icon = ui_style
+ using.icon_state = "act_resist"
+ using.screen_loc = ui_pull_resist
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.hotkeybuttons += using
+
+ //Pull button
+ pullin = new /obj/screen()
+ pullin.icon = ui_style
+ pullin.icon_state = "pull0"
+ pullin.name = "pull"
+ pullin.screen_loc = ui_pull_resist
+ hud.hotkeybuttons += pullin
+ hud_elements |= pullin
+
+ //Health status
+ healths = new /obj/screen()
+ healths.icon = ui_style
+ healths.icon_state = "health0"
+ healths.name = "health"
+ healths.screen_loc = ui_health
+ hud_elements |= healths
+
+ //Oxygen dep icon
+ oxygen = new /obj/screen()
+ oxygen.icon = ui_style
+ oxygen.icon_state = "oxy0"
+ oxygen.name = "oxygen"
+ oxygen.screen_loc = ui_oxygen
+ hud_elements |= oxygen
+
+ //Toxins present icon
+ toxin = new /obj/screen()
+ toxin.icon = ui_style
+ toxin.icon_state = "tox0"
+ toxin.name = "toxin"
+ toxin.screen_loc = ui_toxin
+ hud_elements |= toxin
+
+ //Fire warning
+ fire = new /obj/screen()
+ fire.icon = ui_style
+ fire.icon_state = "fire0"
+ fire.name = "fire"
+ fire.screen_loc = ui_fire
+ hud_elements |= fire
+
+ //Pressure warning
+ pressure = new /obj/screen()
+ pressure.icon = ui_style
+ pressure.icon_state = "pressure0"
+ pressure.name = "pressure"
+ pressure.screen_loc = ui_pressure
+ hud_elements |= pressure
+
+ //Body temp warning
+ bodytemp = new /obj/screen()
+ bodytemp.icon = ui_style
+ bodytemp.icon_state = "temp0"
+ bodytemp.name = "body temperature"
+ bodytemp.screen_loc = ui_temp
+ hud_elements |= bodytemp
+
+ //Nutrition status
+ nutrition_icon = new /obj/screen()
+ nutrition_icon.icon = ui_style
+ nutrition_icon.icon_state = "nutrition0"
+ nutrition_icon.name = "nutrition"
+ nutrition_icon.screen_loc = ui_nutrition
+ hud_elements |= nutrition_icon
+
+ pain = new /obj/screen( null )
+
+ zone_sel = new /obj/screen/zone_sel( null )
+ zone_sel.icon = ui_style
+ zone_sel.color = ui_color
+ zone_sel.alpha = ui_alpha
+ zone_sel.overlays.Cut()
+ zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[zone_sel.selecting]")
+ hud_elements |= zone_sel
+
+ //Hand things
+ if(has_hands)
+ //Drop button
+ using = new /obj/screen()
+ using.name = "drop"
+ using.icon = ui_style
+ using.icon_state = "act_drop"
+ using.screen_loc = ui_drop_throw
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.hotkeybuttons += using
+
+ //Equip detail
+ using = new /obj/screen()
+ using.name = "equip"
+ using.icon = ui_style
+ using.icon_state = "act_equip"
+ using.screen_loc = ui_equip
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.adding += using
+
+ //Hand slots themselves
+ inv_box = new /obj/screen/inventory/hand()
+ inv_box.hud = src
+ inv_box.name = "r_hand"
+ inv_box.icon = ui_style
+ inv_box.icon_state = "r_hand_inactive"
+ if(!hand) //This being 0 or null means the right hand is in use
+ inv_box.icon_state = "r_hand_active"
+ inv_box.screen_loc = ui_rhand
+ inv_box.slot_id = slot_r_hand
+ inv_box.color = ui_color
+ inv_box.alpha = ui_alpha
+ hud.r_hand_hud_object = inv_box
+ hud.adding += inv_box
+ slot_info["[slot_r_hand]"] = inv_box.screen_loc
+
+ inv_box = new /obj/screen/inventory/hand()
+ inv_box.hud = src
+ inv_box.name = "l_hand"
+ inv_box.icon = ui_style
+ inv_box.icon_state = "l_hand_inactive"
+ if(hand) //This being 1 means the left hand is in use
+ inv_box.icon_state = "l_hand_active"
+ inv_box.screen_loc = ui_lhand
+ inv_box.slot_id = slot_l_hand
+ inv_box.color = ui_color
+ inv_box.alpha = ui_alpha
+ hud.l_hand_hud_object = inv_box
+ hud.adding += inv_box
+ slot_info["[slot_l_hand]"] = inv_box.screen_loc
+
+ //Swaphand titlebar
+ using = new /obj/screen/inventory()
+ using.name = "hand"
+ using.icon = ui_style
+ using.icon_state = "hand1"
+ using.screen_loc = ui_swaphand1
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.adding += using
+
+ using = new /obj/screen/inventory()
+ using.name = "hand"
+ using.icon = ui_style
+ using.icon_state = "hand2"
+ using.screen_loc = ui_swaphand2
+ using.color = ui_color
+ using.alpha = ui_alpha
+ hud.adding += using
+
+ //Throw button
+ throw_icon = new /obj/screen()
+ throw_icon.icon = ui_style
+ throw_icon.icon_state = "act_throw_off"
+ throw_icon.name = "throw"
+ throw_icon.screen_loc = ui_drop_throw
+ throw_icon.color = ui_color
+ throw_icon.alpha = ui_alpha
+ hud.hotkeybuttons += throw_icon
+ hud_elements |= throw_icon
+
+ extra_huds(hud,ui_style,hud_elements)
+
+ client.screen = list()
+
+ client.screen += hud_elements
+ client.screen += adding + hotkeybuttons
+ client.screen += client.void
+
+ return
diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm
new file mode 100644
index 0000000000..c1e6b91adb
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/simple_mob.dm
@@ -0,0 +1,290 @@
+// Reorganized and somewhat cleaned up.
+// AI code has been made into a datum, inside the AI module folder.
+
+/mob/living/simple_mob
+ name = "animal"
+ desc = ""
+ icon = 'icons/mob/animal.dmi'
+ health = 20
+ maxHealth = 20
+
+ // Generally we don't want simple_mobs to get displaced when bumped into due to it trivializing combat with windup attacks.
+ // Some subtypes allow displacement, like passive animals.
+ mob_bump_flag = HEAVY
+ mob_swap_flags = ~HEAVY
+ mob_push_flags = ~HEAVY
+
+ var/tt_desc = "Uncataloged Life Form" //Tooltip description
+
+ //Settings for played mobs
+ var/show_stat_health = 1 // Does the percentage health show in the stat panel for the mob
+ var/has_hands = 0 // Set to 1 to enable the use of hands and the hands hud
+ var/humanoid_hands = 0 // Can a player in this mob use things like guns or AI cards?
+ var/hand_form = "hands" // Used in IsHumanoidToolUser. 'Your X are not fit-'.
+ var/list/hud_gears // Slots to show on the hud (typically none)
+ var/ui_icons // Icon file path to use for the HUD, otherwise generic icons are used
+ var/r_hand_sprite // If they have hands,
+ var/l_hand_sprite // they could use some icons.
+ var/player_msg // Message to print to players about 'how' to play this mob on login.
+
+ //Mob icon/appearance settings
+ var/icon_living = "" // The iconstate if we're alive, required
+ var/icon_dead = "" // The iconstate if we're dead, required
+ var/icon_gib = "generic_gib" // The iconstate for being gibbed, optional. Defaults to a generic gib animation.
+ var/icon_rest = null // The iconstate for resting, optional
+ var/image/modifier_overlay = null // Holds overlays from modifiers.
+ var/image/eye_layer = null // Holds the eye overlay.
+ var/has_eye_glow = FALSE // If true, adds an overlay over the lighting plane for [icon_state]-eyes.
+ attack_icon = 'icons/effects/effects.dmi' //Just the default, played like the weapon attack anim
+ attack_icon_state = "slash" //Just the default
+
+ //Mob talking settings
+ universal_speak = 0 // Can all mobs in the entire universe understand this one?
+ var/has_langs = list(LANGUAGE_GALCOM)// Text name of their language if they speak something other than galcom. They speak the first one.
+
+ //Movement things.
+ var/movement_cooldown = 5 // Lower is faster.
+ var/movement_sound = null // If set, will play this sound when it moves on its own will.
+ var/turn_sound = null // If set, plays the sound when the mob's dir changes in most cases.
+ var/movement_shake_radius = 0 // If set, moving will shake the camera of all living mobs within this radius slightly.
+
+ //Mob interaction
+ var/response_help = "tries to help" // If clicked on help intent
+ var/response_disarm = "tries to disarm" // If clicked on disarm intent
+ var/response_harm = "tries to hurt" // If clicked on harm intent
+ var/list/friends = list() // Mobs on this list wont get attacked regardless of faction status.
+ var/harm_intent_damage = 3 // How much an unarmed harm click does to this mob.
+ var/meat_amount = 0 // How much meat to drop from this mob when butchered
+ var/obj/meat_type // The meat object to drop
+ var/list/loot_list = list() // The list of lootable objects to drop, with "/path = prob%" structure
+ var/obj/item/weapon/card/id/myid// An ID card if they have one to give them access to stuff.
+
+ //Mob environment settings
+ var/minbodytemp = 250 // Minimum "okay" temperature in kelvin
+ var/maxbodytemp = 350 // Maximum of above
+ var/heat_damage_per_tick = 3 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
+ var/cold_damage_per_tick = 2 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
+ var/fire_alert = 0 // 0 = fine, 1 = hot, 2 = cold
+
+ var/min_oxy = 5 // Oxygen in moles, minimum, 0 is 'no minimum'
+ var/max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
+ var/min_tox = 0 // Phoron min
+ var/max_tox = 1 // Phoron max
+ var/min_co2 = 0 // CO2 min
+ var/max_co2 = 5 // CO2 max
+ var/min_n2 = 0 // N2 min
+ var/max_n2 = 0 // N2 max
+ var/unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
+
+ //Hostility settings
+ var/taser_kill = 1 // Is the mob weak to tasers
+
+ //Attack ranged settings
+ var/projectiletype // The projectiles I shoot
+ var/projectilesound // The sound I make when I do it
+ var/casingtype // What to make the hugely laggy casings pile out of
+
+ // Reloading settings, part of ranged code
+ var/needs_reload = FALSE // If TRUE, mob needs to reload occasionally
+ var/reload_max = 1 // How many shots the mob gets before it has to reload, will not be used if needs_reload is FALSE
+ var/reload_count = 0 // A counter to keep track of how many shots the mob has fired so far. Reloads when it hits reload_max.
+ var/reload_time = 1 SECONDS // How long it takes for a mob to reload. This is to buy a player a bit of time to run or fight.
+ var/reload_sound = 'sound/weapons/flipblade.ogg' // What sound gets played when the mob successfully reloads. Defaults to the same sound as reloading guns. Can be null.
+
+ //Mob melee settings
+ var/melee_damage_lower = 2 // Lower bound of randomized melee damage
+ var/melee_damage_upper = 6 // Upper bound of randomized melee damage
+ var/list/attacktext = list("attacked") // "You are [attacktext] by the mob!"
+ var/list/friendly = list("nuzzles") // "The mob [friendly] the person."
+ var/attack_sound = null // Sound to play when I attack
+ var/melee_miss_chance = 0 // percent chance to miss a melee attack.
+ var/attack_armor_type = "melee" // What armor does this check?
+ var/attack_armor_pen = 0 // How much armor pen this attack has.
+ var/attack_sharp = FALSE // Is the attack sharp?
+ var/attack_edge = FALSE // Does the attack have an edge?
+
+ var/melee_attack_delay = null // If set, the mob will do a windup animation and can miss if the target moves out of the way.
+ var/ranged_attack_delay = null
+ var/special_attack_delay = null
+
+ //Special attacks
+// var/special_attack_prob = 0 // The chance to ATTEMPT a special_attack_target(). If it fails, it will do a regular attack instead.
+ // This is commented out to ease the AI attack logic by being (a bit more) determanistic.
+ // You should instead limit special attacks using the below vars instead.
+ var/special_attack_min_range = null // The minimum distance required for an attempt to be made.
+ var/special_attack_max_range = null // The maximum for an attempt.
+ var/special_attack_charges = null // If set, special attacks will work off of a charge system, and won't be usable if all charges are expended. Good for grenades.
+ var/special_attack_cooldown = null // If set, special attacks will have a cooldown between uses.
+ var/last_special_attack = null // world.time when a special attack occured last, for cooldown calculations.
+
+ //Damage resistances
+ var/grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
+ var/resistance = 0 // Damage reduction for all types
+ var/list/armor = list( // Values for normal getarmor() checks
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+ var/list/armor_soak = list( // Values for getsoak() checks.
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+ // Protection against heat/cold/electric/water effects.
+ // 0 is no protection, 1 is total protection. Negative numbers increase vulnerability.
+ var/heat_resist = 0.0
+ var/cold_resist = 0.0
+ var/shock_resist = 0.0
+ var/water_resist = 1.0
+ var/poison_resist = 0.0
+ var/thick_armor = FALSE // Stops injections and "injections".
+ var/purge = 0 // Cult stuff.
+ var/supernatural = FALSE // Ditto.
+
+
+/mob/living/simple_mob/initialize()
+ verbs -= /mob/verb/observe
+ health = maxHealth
+
+ for(var/L in has_langs)
+ languages |= all_languages[L]
+ if(languages.len)
+ default_language = languages[1]
+
+ if(has_eye_glow)
+ add_eyes()
+ return ..()
+
+
+/mob/living/simple_mob/Destroy()
+ default_language = null
+ if(myid)
+ qdel(myid)
+ myid = null
+
+ friends.Cut()
+ languages.Cut()
+
+ if(has_eye_glow)
+ remove_eyes()
+ return ..()
+
+/mob/living/simple_mob/death()
+ update_icon()
+ ..()
+
+
+//Client attached
+/mob/living/simple_mob/Login()
+ . = ..()
+ to_chat(src,"
You are \the [src]. [player_msg]")
+
+
+/mob/living/simple_mob/emote(var/act, var/type, var/desc)
+ if(act)
+ ..(act, type, desc)
+
+
+/mob/living/simple_mob/SelfMove(turf/n, direct)
+ var/turf/old_turf = get_turf(src)
+ var/old_dir = dir
+ . = ..()
+ if(. && movement_shake_radius)
+ for(var/mob/living/L in range(movement_shake_radius, src))
+ shake_camera(L, 1, 1)
+ if(turn_sound && dir != old_dir)
+ playsound(src, turn_sound, 50, 1)
+ else if(movement_sound && old_turf != get_turf(src)) // Playing both sounds at the same time generally sounds bad.
+ playsound(src, movement_sound, 50, 1)
+/*
+/mob/living/simple_mob/set_dir(new_dir)
+ if(dir != new_dir)
+ playsound(src, turn_sound, 50, 1)
+ return ..()
+*/
+/mob/living/simple_mob/movement_delay()
+ var/tally = 0 //Incase I need to add stuff other than "speed" later
+
+ tally = movement_cooldown
+
+ if(force_max_speed)
+ return -3
+
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.haste) && M.haste == TRUE)
+ return -3
+ if(!isnull(M.slowdown))
+ tally += M.slowdown
+
+ // Turf related slowdown
+ var/turf/T = get_turf(src)
+ if(T && T.movement_cost && !hovering) // Flying mobs ignore turf-based slowdown.
+ tally += T.movement_cost
+
+ if(purge)//Purged creatures will move more slowly. The more time before their purge stops, the slower they'll move.
+ if(tally <= 0)
+ tally = 1
+ tally *= purge
+
+ if(m_intent == "walk")
+ tally *= 1.5
+
+ return tally+config.animal_delay
+
+
+/mob/living/simple_mob/Stat()
+ ..()
+ if(statpanel("Status") && show_stat_health)
+ stat(null, "Health: [round((health / getMaxHealth()) * 100)]%")
+
+/mob/living/simple_mob/lay_down()
+ ..()
+ if(resting && icon_rest)
+ icon_state = icon_rest
+ else
+ icon_state = icon_living
+ update_icon()
+
+
+/mob/living/simple_mob/say(var/message,var/datum/language/language)
+ var/verb = "says"
+ if(speak_emote.len)
+ verb = pick(speak_emote)
+
+ message = sanitize(message)
+
+ ..(message, null, verb)
+
+/mob/living/simple_mob/get_speech_ending(verb, var/ending)
+ return verb
+
+
+// Harvest an animal's delicious byproducts
+/mob/living/simple_mob/proc/harvest(var/mob/user)
+ var/actual_meat_amount = max(1,(meat_amount/2))
+ if(meat_type && actual_meat_amount>0 && (stat == DEAD))
+ for(var/i=0;i
[user] chops up \the [src]!")
+ new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
+ qdel(src)
+ else
+ user.visible_message("[user] butchers \the [src] messily!")
+ gib()
+
+
+/mob/living/simple_mob/is_sentient()
+ return mob_class & MOB_CLASS_HUMANOID|MOB_CLASS_ANIMAL|MOB_CLASS_SLIME // Update this if needed.
+
+/mob/living/simple_mob/get_nametag_desc(mob/user)
+ return "[tt_desc]"
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm b/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm
new file mode 100644
index 0000000000..e41d5ae66b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm
@@ -0,0 +1,9 @@
+/mob/living/simple_mob/animal
+ mob_class = MOB_CLASS_ANIMAL
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ response_help = "pets"
+ response_disarm = "shoos"
+ response_harm = "hits"
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
new file mode 100644
index 0000000000..92f4e51c9c
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm
@@ -0,0 +1,237 @@
+// Borers are probably still going to be buggy as fuck, this is just bringing their mob defines up to the new system.
+// IMO they're a relic of several ages we're long past, their code and their design showing this plainly, but removing them would
+// make certain people Unhappy so here we are. They need a complete redesign but thats beyond the scope of the rewrite.
+
+/mob/living/simple_mob/animal/borer
+ name = "cortical borer"
+ desc = "A small, quivering sluglike creature."
+ icon_state = "brainslug"
+ item_state = "brainslug"
+ icon_living = "brainslug"
+ icon_dead = "brainslug_dead"
+
+ response_help = "pokes"
+ response_disarm = "prods"
+ response_harm = "stomps on"
+ attacktext = list("nipped")
+ friendly = list("prods")
+
+ status_flags = CANPUSH
+ pass_flags = PASSTABLE
+ movement_cooldown = 5
+
+ universal_understand = TRUE
+ can_be_antagged = TRUE
+
+ holder_type = /obj/item/weapon/holder/borer
+ ai_holder_type = null // This is player-controlled, always.
+
+ var/chemicals = 10 // A resource used for reproduction and powers.
+ var/mob/living/carbon/human/host = null // The humanoid host for the brain worm.
+ var/true_name = null // String used when speaking among other worms.
+ var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth.
+ var/controlling = FALSE // Used in human death ceck.
+ var/docile = FALSE // Sugar can stop borers from acting.
+ var/has_reproduced = FALSE
+ var/roundstart = FALSE // If true, spawning won't try to pull a ghost.
+ var/used_dominate // world.time when the dominate power was last used.
+
+
+/mob/living/simple_mob/animal/borer/roundstart
+ roundstart = TRUE
+
+/mob/living/simple_mob/animal/borer/Login()
+ ..()
+ if(mind)
+ borers.add_antagonist(mind)
+
+/mob/living/simple_mob/animal/borer/initialize()
+ add_language("Cortical Link")
+
+ verbs += /mob/living/proc/ventcrawl
+ verbs += /mob/living/proc/hide
+
+ true_name = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]"
+
+ if(!roundstart)
+ request_player()
+
+ return ..()
+
+/mob/living/simple_mob/animal/borer/handle_special()
+ if(host && !stat && !host.stat)
+ // Handle docility.
+ if(host.reagents.has_reagent("sugar") && !docile)
+ var/message = "You feel the soporific flow of sugar in your host's blood, lulling you into docility."
+ var/target = controlling ? host : src
+ to_chat(target, span("warning", message))
+ docile = TRUE
+
+ else if(docile)
+ var/message = "You shake off your lethargy as the sugar leaves your host's blood."
+ var/target = controlling ? host : src
+ to_chat(target, span("notice", message))
+ docile = FALSE
+
+ // Chem regen.
+ if(chemicals < 250)
+ chemicals++
+
+ // Control stuff.
+ if(controlling)
+ if(docile)
+ to_chat(host, span("warning", "You are feeling far too docile to continue controlling your host..."))
+ host.release_control()
+ return
+
+ if(prob(5))
+ host.adjustBrainLoss(0.1)
+
+ if(prob(host.brainloss/20))
+ host.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_v","gasp"))]")
+
+/mob/living/simple_mob/animal/borer/Stat()
+ ..()
+ if(client.statpanel == "Status")
+ statpanel("Status")
+ if(emergency_shuttle)
+ var/eta_status = emergency_shuttle.get_status_panel_eta()
+ if(eta_status)
+ stat(null, eta_status)
+ stat("Chemicals", chemicals)
+
+/mob/living/simple_mob/animal/borer/proc/detatch()
+ if(!host || !controlling)
+ return
+
+ if(istype(host, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = host
+ var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
+ if(head)
+ head.implants -= src
+
+ controlling = FALSE
+
+ host.remove_language("Cortical Link")
+ host.verbs -= /mob/living/carbon/proc/release_control
+ host.verbs -= /mob/living/carbon/proc/punish_host
+ host.verbs -= /mob/living/carbon/proc/spawn_larvae
+
+ if(host_brain)
+ // these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed.
+ // computer_id and IP are not updated magically on their own in offline mobs -walter0o
+
+ // This shit need to die in a phoron fire.
+
+ // host -> self
+ var/h2s_id = host.computer_id
+ var/h2s_ip= host.lastKnownIP
+ host.computer_id = null
+ host.lastKnownIP = null
+
+ src.ckey = host.ckey
+
+ if(!src.computer_id)
+ src.computer_id = h2s_id
+
+ if(!host_brain.lastKnownIP)
+ src.lastKnownIP = h2s_ip
+
+ // brain -> host
+ var/b2h_id = host_brain.computer_id
+ var/b2h_ip= host_brain.lastKnownIP
+ host_brain.computer_id = null
+ host_brain.lastKnownIP = null
+
+ host.ckey = host_brain.ckey
+
+ if(!host.computer_id)
+ host.computer_id = b2h_id
+
+ if(!host.lastKnownIP)
+ host.lastKnownIP = b2h_ip
+
+ qdel(host_brain)
+
+
+/mob/living/simple_mob/animal/borer/proc/leave_host()
+ if(!host)
+ return
+
+ if(host.mind)
+ borers.remove_antagonist(host.mind)
+
+ forceMove(get_turf(host))
+
+ reset_view(null)
+ machine = null
+
+ host.reset_view(null)
+ host.machine = null
+ host = null
+
+/mob/living/simple_mob/animal/borer/proc/request_player()
+ var/datum/ghost_query/Q = new /datum/ghost_query/borer()
+ var/list/winner = Q.query() // This will sleep the proc for awhile.
+ if(winner.len)
+ var/mob/observer/dead/D = winner[1]
+ transfer_personality(D)
+
+/mob/living/simple_mob/animal/borer/proc/transfer_personality(mob/candidate)
+ if(!candidate || !candidate.mind)
+ return
+
+ src.mind = candidate.mind
+ candidate.mind.current = src
+ ckey = candidate.ckey
+
+ if(mind)
+ mind.assigned_role = "Cortical Borer"
+ mind.special_role = "Cortical Borer"
+
+ to_chat(src, span("notice", "You are a cortical borer! You are a brain slug that worms its way \
+ into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, \
+ your host and your eventual spawn safe and warm."))
+ to_chat(src, "You can speak to your victim with say, to other borers with say :x, and use your Abilities tab to access powers.")
+
+/mob/living/simple_mob/animal/borer/cannot_use_vents()
+ return
+
+// This is awful but its literally say code.
+/mob/living/simple_mob/animal/borer/say(message)
+ message = sanitize(message)
+ message = capitalize(message)
+
+ if(!message)
+ return
+
+ if(stat >= DEAD)
+ return say_dead(message)
+ else if(stat)
+ return
+
+ if(client && client.prefs.muted & MUTE_IC)
+ to_chat(src, span("danger", "You cannot speak in IC (muted)."))
+ return
+
+ if(copytext(message, 1, 2) == "*")
+ return emote(copytext(message, 2))
+
+ var/datum/language/L = parse_language(message)
+ if(L && L.flags & HIVEMIND)
+ L.broadcast(src,trim(copytext(message,3)), src.true_name)
+ return
+
+ if(!host)
+ //TODO: have this pick a random mob within 3 tiles to speak for the borer.
+ to_chat(src, span("warning", "You have no host to speak to."))
+ return //No host, no audible speech.
+
+ to_chat(src, "You drop words into [host]'s mind: \"[message]\"")
+ to_chat(host, "Your own thoughts speak: \"[message]\"")
+
+ for(var/mob/M in player_list)
+ if(istype(M, /mob/new_player))
+ continue
+ else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
+ to_chat(M, "[src.true_name] whispers to [host], \"[message]\"")
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm
new file mode 100644
index 0000000000..f5da079b97
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm
@@ -0,0 +1,59 @@
+// Straight move from the old location, with the paths corrected.
+
+/mob/living/captive_brain
+ name = "host brain"
+ real_name = "host brain"
+ universal_understand = 1
+
+/mob/living/captive_brain/say(var/message)
+
+ if (src.client)
+ if(client.prefs.muted & MUTE_IC)
+ src << "You cannot speak in IC (muted)."
+ return
+
+ if(istype(src.loc, /mob/living/simple_mob/animal/borer))
+
+ message = sanitize(message)
+ if (!message)
+ return
+ log_say(message,src)
+ if (stat == 2)
+ return say_dead(message)
+
+ var/mob/living/simple_mob/animal/borer/B = src.loc
+ src << "You whisper silently, \"[message]\""
+ B.host << "The captive mind of [src] whispers, \"[message]\""
+
+ for (var/mob/M in player_list)
+ if (istype(M, /mob/new_player))
+ continue
+ else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
+ M << "The captive mind of [src] whispers, \"[message]\""
+
+/mob/living/captive_brain/emote(var/message)
+ return
+
+/mob/living/captive_brain/process_resist()
+ //Resisting control by an alien mind.
+ if(istype(src.loc, /mob/living/simple_mob/animal/borer))
+ var/mob/living/simple_mob/animal/borer/B = src.loc
+ var/mob/living/captive_brain/H = src
+
+ H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
+ B.host << "You feel the captive mind of [src] begin to resist your control."
+
+ spawn(rand(200,250)+B.host.brainloss)
+ if(!B || !B.controlling) return
+
+ B.host.adjustBrainLoss(rand(0.1,0.5))
+ H << "With an immense exertion of will, you regain control of your body!"
+ B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."
+ B.detatch()
+ verbs -= /mob/living/carbon/proc/release_control
+ verbs -= /mob/living/carbon/proc/punish_host
+ verbs -= /mob/living/carbon/proc/spawn_larvae
+
+ return
+
+ ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm
new file mode 100644
index 0000000000..55dac2492a
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm
@@ -0,0 +1,354 @@
+/mob/living/simple_mob/animal/borer/verb/release_host()
+ set category = "Abilities"
+ set name = "Release Host"
+ set desc = "Slither out of your host."
+
+ if(!host)
+ src << "You are not inside a host body."
+ return
+
+ if(stat)
+ src << "You cannot leave your host in your current state."
+
+ if(docile)
+ src << "You are feeling far too docile to do that."
+ return
+
+ if(!host || !src) return
+
+ src << "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal."
+
+ if(!host.stat)
+ host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..."
+
+ spawn(100)
+
+ if(!host || !src) return
+
+ if(src.stat)
+ src << "You cannot release your host in your current state."
+ return
+
+ src << "You wiggle out of [host]'s ear and plop to the ground."
+ if(host.mind)
+ if(!host.stat)
+ host << "Something slimy wiggles out of your ear and plops to the ground!"
+ host << "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again."
+
+ detatch()
+ leave_host()
+
+/mob/living/simple_mob/animal/borer/verb/infest()
+ set category = "Abilities"
+ set name = "Infest"
+ set desc = "Infest a suitable humanoid host."
+
+ if(host)
+ src << "You are already within a host."
+ return
+
+ if(stat)
+ src << "You cannot infest a target in your current state."
+ return
+
+ var/list/choices = list()
+ for(var/mob/living/carbon/C in view(1,src))
+ if(src.Adjacent(C))
+ choices += C
+
+ if(!choices.len)
+ src << "There are no viable hosts within range..."
+ return
+
+ var/mob/living/carbon/M = input(src,"Who do you wish to infest?") in null|choices
+
+ if(!M || !src) return
+
+ if(!(src.Adjacent(M))) return
+
+ if(M.has_brain_worms())
+ src << "You cannot infest someone who is already infested!"
+ return
+
+ if(istype(M,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = M
+
+ var/obj/item/organ/external/E = H.organs_by_name[BP_HEAD]
+ if(!E || E.is_stump())
+ src << "\The [H] does not have a head!"
+
+ if(!H.should_have_organ("brain"))
+ src << "\The [H] does not seem to have an ear canal to breach."
+ return
+
+ if(H.check_head_coverage())
+ src << "You cannot get through that host's protective gear."
+ return
+
+ M << "Something slimy begins probing at the opening of your ear canal..."
+ src << "You slither up [M] and begin probing at their ear canal..."
+
+ if(!do_after(src,30))
+ src << "As [M] moves away, you are dislodged and fall to the ground."
+ return
+
+ if(!M || !src) return
+
+ if(src.stat)
+ src << "You cannot infest a target in your current state."
+ return
+
+ if(M in view(1, src))
+ src << "You wiggle into [M]'s ear."
+ if(!M.stat)
+ M << "Something disgusting and slimy wiggles into your ear!"
+
+ src.host = M
+ src.forceMove(M)
+
+ //Update their traitor status.
+ if(host.mind)
+ borers.add_antagonist_mind(host.mind, 1, borers.faction_role_text, borers.faction_welcome)
+
+ if(istype(M,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = M
+ var/obj/item/organ/I = H.internal_organs_by_name["brain"]
+ if(!I) // No brain organ, so the borer moves in and replaces it permanently.
+ replace_brain()
+ else
+ // If they're in normally, implant removal can get them out.
+ var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
+ head.implants += src
+
+ return
+ else
+ src << "They are no longer in range!"
+ return
+
+/*
+/mob/living/simple_mob/animal/borer/verb/devour_brain()
+ set category = "Abilities"
+ set name = "Devour Brain"
+ set desc = "Take permanent control of a dead host."
+
+ if(!host)
+ src << "You are not inside a host body."
+ return
+
+ if(host.stat != 2)
+ src << "Your host is still alive."
+ return
+
+ if(stat)
+ src << "You cannot do that in your current state."
+
+ if(docile)
+ src << "You are feeling far too docile to do that."
+ return
+
+
+ src << "It only takes a few moments to render the dead host brain down into a nutrient-rich slurry..."
+ replace_brain()
+*/
+
+// BRAIN WORM ZOMBIES AAAAH.
+/mob/living/simple_mob/animal/borer/proc/replace_brain()
+
+ var/mob/living/carbon/human/H = host
+
+ if(!istype(host))
+ src << "This host does not have a suitable brain."
+ return
+
+ src << "You settle into the empty brainpan and begin to expand, fusing inextricably with the dead flesh of [H]."
+
+ H.add_language("Cortical Link")
+
+ if(host.stat == 2)
+ H.verbs |= /mob/living/carbon/human/proc/jumpstart
+
+ H.verbs |= /mob/living/carbon/human/proc/psychic_whisper
+ H.verbs |= /mob/living/carbon/human/proc/tackle
+ H.verbs |= /mob/living/carbon/proc/spawn_larvae
+
+ if(H.client)
+ H.ghostize(0)
+
+ if(src.mind)
+ src.mind.special_role = "Borer Husk"
+ src.mind.transfer_to(host)
+
+ H.ChangeToHusk()
+
+ var/obj/item/organ/internal/borer/B = new(H)
+ H.internal_organs_by_name["brain"] = B
+ H.internal_organs |= B
+
+ var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD)
+ affecting.implants -= src
+
+ var/s2h_id = src.computer_id
+ var/s2h_ip= src.lastKnownIP
+ src.computer_id = null
+ src.lastKnownIP = null
+
+ if(!H.computer_id)
+ H.computer_id = s2h_id
+
+ if(!H.lastKnownIP)
+ H.lastKnownIP = s2h_ip
+
+/mob/living/simple_mob/animal/borer/verb/secrete_chemicals()
+ set category = "Abilities"
+ set name = "Secrete Chemicals"
+ set desc = "Push some chemicals into your host's bloodstream."
+
+ if(!host)
+ src << "You are not inside a host body."
+ return
+
+ if(stat)
+ src << "You cannot secrete chemicals in your current state."
+
+ if(docile)
+ src << "You are feeling far too docile to do that."
+ return
+
+ if(chemicals < 50)
+ src << "You don't have enough chemicals!"
+
+ var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in list("alkysine","bicaridine","hyperzine","tramadol")
+
+ if(!chem || chemicals < 50 || !host || controlling || !src || stat) //Sanity check.
+ return
+
+ src << "You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream."
+ host.reagents.add_reagent(chem, 10)
+ chemicals -= 50
+
+/mob/living/simple_mob/animal/borer/verb/dominate_victim()
+ set category = "Abilities"
+ set name = "Paralyze Victim"
+ set desc = "Freeze the limbs of a potential host with supernatural fear."
+
+ if(world.time - used_dominate < 150)
+ src << "You cannot use that ability again so soon."
+ return
+
+ if(host)
+ src << "You cannot do that from within a host body."
+ return
+
+ if(src.stat)
+ src << "You cannot do that in your current state."
+ return
+
+ var/list/choices = list()
+ for(var/mob/living/carbon/C in view(3,src))
+ if(C.stat != 2)
+ choices += C
+
+ if(world.time - used_dominate < 150)
+ src << "You cannot use that ability again so soon."
+ return
+
+ var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices
+
+ if(!M || !src) return
+
+ if(M.has_brain_worms())
+ src << "You cannot infest someone who is already infested!"
+ return
+
+ src << "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread."
+ M << "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing."
+ M.Weaken(10)
+
+ used_dominate = world.time
+
+/mob/living/simple_mob/animal/borer/verb/bond_brain()
+ set category = "Abilities"
+ set name = "Assume Control"
+ set desc = "Fully connect to the brain of your host."
+
+ if(!host)
+ src << "You are not inside a host body."
+ return
+
+ if(src.stat)
+ src << "You cannot do that in your current state."
+ return
+
+ if(docile)
+ src << "You are feeling far too docile to do that."
+ return
+
+ src << "You begin delicately adjusting your connection to the host brain..."
+
+ spawn(100+(host.brainloss*5))
+
+ if(!host || !src || controlling)
+ return
+ else
+
+ src << "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system."
+ host << "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours."
+ host.add_language("Cortical Link")
+
+ // host -> brain
+ var/h2b_id = host.computer_id
+ var/h2b_ip= host.lastKnownIP
+ host.computer_id = null
+ host.lastKnownIP = null
+
+ qdel(host_brain)
+ host_brain = new(src)
+
+ host_brain.ckey = host.ckey
+
+ host_brain.name = host.name
+
+ if(!host_brain.computer_id)
+ host_brain.computer_id = h2b_id
+
+ if(!host_brain.lastKnownIP)
+ host_brain.lastKnownIP = h2b_ip
+
+ // self -> host
+ var/s2h_id = src.computer_id
+ var/s2h_ip= src.lastKnownIP
+ src.computer_id = null
+ src.lastKnownIP = null
+
+ host.ckey = src.ckey
+
+ if(!host.computer_id)
+ host.computer_id = s2h_id
+
+ if(!host.lastKnownIP)
+ host.lastKnownIP = s2h_ip
+
+ controlling = 1
+
+ host.verbs += /mob/living/carbon/proc/release_control
+ host.verbs += /mob/living/carbon/proc/punish_host
+ host.verbs += /mob/living/carbon/proc/spawn_larvae
+
+ return
+
+/mob/living/carbon/human/proc/jumpstart()
+ set category = "Abilities"
+ set name = "Revive Host"
+ set desc = "Send a jolt of electricity through your host, reviving them."
+
+ if(stat != 2)
+ usr << "Your host is already alive."
+ return
+
+ verbs -= /mob/living/carbon/human/proc/jumpstart
+ visible_message("With a hideous, rattling moan, [src] shudders back to life!")
+
+ rejuvenate()
+ restore_blood()
+ fixblood()
+ update_canmove()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm
new file mode 100644
index 0000000000..775f9ae6cb
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm
@@ -0,0 +1,156 @@
+GLOBAL_VAR_CONST(MAX_CHICKENS, 50) // How many chickens CAN we have?
+GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
+
+/mob/living/simple_mob/animal/passive/chicken
+ name = "chicken"
+ desc = "Hopefully the eggs are good this season."
+ tt_desc = "E Gallus gallus"
+ icon_state = "chicken"
+ icon_living = "chicken"
+ icon_dead = "chicken_dead"
+
+ health = 10
+ maxHealth = 10
+
+ pass_flags = PASSTABLE
+ mob_size = MOB_SMALL
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+ attacktext = list("kicked")
+
+ has_langs = list("Bird")
+
+ say_list_type = /datum/say_list/chicken
+
+ meat_amount = 2
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ var/eggsleft = 0
+ var/body_color
+
+/mob/living/simple_mob/animal/passive/chicken/New()
+ ..()
+ if(!body_color)
+ body_color = pick( list("brown","black","white") )
+ icon_state = "chicken_[body_color]"
+ icon_living = "chicken_[body_color]"
+ icon_dead = "chicken_[body_color]_dead"
+ pixel_x = rand(-6, 6)
+ pixel_y = rand(0, 10)
+ GLOB.chicken_count += 1
+
+/mob/living/simple_mob/animal/passive/chicken/Destroy()
+ ..()
+ GLOB.chicken_count -= 1
+
+/mob/living/simple_mob/animal/passive/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) //feedin' dem chickens
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O
+ if(G.seed && G.seed.kitchen_tag == "wheat")
+ if(!stat && eggsleft < 8)
+ user.visible_message("[user] feeds [O] to [name]! It clucks happily.","You feed [O] to [name]! It clucks happily.")
+ user.drop_item()
+ qdel(O)
+ eggsleft += rand(1, 4)
+ else
+ to_chat(user, "[name] doesn't seem hungry!")
+ else
+ to_chat(user, "[name] doesn't seem interested in that.")
+ else
+ ..()
+
+/mob/living/simple_mob/animal/passive/chicken/Life()
+ . =..()
+ if(!.)
+ return
+ if(!stat && prob(3) && eggsleft > 0)
+ visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]")
+ eggsleft--
+ var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(get_turf(src))
+ E.pixel_x = rand(-6,6)
+ E.pixel_y = rand(-6,6)
+ if(GLOB.chicken_count < GLOB.MAX_CHICKENS && prob(10))
+ processing_objects.Add(E)
+
+
+
+
+
+
+
+/obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
+
+// This only starts normally if there are less than MAX_CHICKENS chickens
+/obj/item/weapon/reagent_containers/food/snacks/egg/process()
+ if(isturf(loc))
+ amount_grown += rand(1,2)
+ if(amount_grown >= 100)
+ visible_message("[src] hatches with a quiet cracking sound.")
+ new /mob/living/simple_mob/animal/passive/chick(get_turf(src))
+ processing_objects.Remove(src)
+ qdel(src)
+ else
+ processing_objects.Remove(src)
+
+
+
+
+
+
+
+/mob/living/simple_mob/animal/passive/chick
+ name = "chick"
+ desc = "Adorable! They make such a racket though."
+ tt_desc = "E Gallus gallus"
+ icon_state = "chick"
+ icon_living = "chick"
+ icon_dead = "chick_dead"
+ icon_gib = "chick_gib"
+
+ health = 1
+ maxHealth = 1
+
+ pass_flags = PASSTABLE | PASSGRILLE
+ mob_size = MOB_MINISCULE
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+ attacktext = list("kicked")
+
+ has_langs = list("Bird")
+
+ say_list_type = /datum/say_list/chick
+
+ meat_amount = 1
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ var/amount_grown = 0
+
+/mob/living/simple_mob/animal/passive/chick/New()
+ ..()
+ pixel_x = rand(-6, 6)
+ pixel_y = rand(0, 10)
+
+/mob/living/simple_mob/animal/passive/chick/Life()
+ . =..()
+ if(!.)
+ return
+ if(!stat)
+ amount_grown += rand(1,2)
+ if(amount_grown >= 100)
+ new /mob/living/simple_mob/animal/passive/chicken(src.loc)
+ qdel(src)
+
+// Say Lists
+/datum/say_list/chicken
+ speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.")
+ emote_hear = list("clucks","croons")
+ emote_see = list("pecks at the ground","flaps its wings viciously")
+
+/datum/say_list/chick
+ speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
+ emote_hear = list("cheeps")
+ emote_see = list("pecks at the ground","flaps its tiny wings")
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm
new file mode 100644
index 0000000000..b5373c176a
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm
@@ -0,0 +1,67 @@
+/mob/living/simple_mob/animal/passive/cow
+ name = "cow"
+ desc = "Known for their milk, just don't tip them over."
+ tt_desc = "E Bos taurus"
+ icon_state = "cow"
+ icon_living = "cow"
+ icon_dead = "cow_dead"
+ icon_gib = "cow_gib"
+
+ health = 50
+ maxHealth = 50
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+ attacktext = list("kicked")
+
+ say_list_type = /datum/say_list/cow
+
+ meat_amount = 6
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ var/datum/reagents/udder = null
+
+/mob/living/simple_mob/animal/passive/cow/New()
+ udder = new(50)
+ udder.my_atom = src
+ ..()
+
+/mob/living/simple_mob/animal/passive/cow/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ var/obj/item/weapon/reagent_containers/glass/G = O
+ if(stat == CONSCIOUS && istype(G) && G.is_open_container())
+ user.visible_message("[user] milks [src] using \the [O].")
+ var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
+ if(G.reagents.total_volume >= G.volume)
+ to_chat(user, "The [O] is full.")
+ if(!transfered)
+ to_chat(user, "The udder is dry. Wait a bit longer...")
+ else
+ ..()
+
+/mob/living/simple_mob/animal/passive/cow/Life()
+ . = ..()
+ if(stat == CONSCIOUS)
+ if(udder && prob(5))
+ udder.add_reagent("milk", rand(5, 10))
+
+/mob/living/simple_mob/animal/passive/cow/attack_hand(mob/living/carbon/M as mob)
+ if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead)
+ M.visible_message("[M] tips over [src].","You tip over [src].")
+ Weaken(30)
+ icon_state = icon_dead
+ spawn(rand(20,50))
+ if(!stat && M)
+ icon_state = icon_living
+ var/list/responses = list( "[src] looks at you imploringly.",
+ "[src] looks at you pleadingly",
+ "[src] looks at you with a resigned expression.",
+ "[src] seems resigned to its fate.")
+ to_chat(M, pick(responses))
+ else
+ ..()
+
+/datum/say_list/cow
+ speak = list("moo?","moo","MOOOOOO")
+ emote_hear = list("brays", "moos","moos hauntingly")
+ emote_see = list("shakes its head")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm
new file mode 100644
index 0000000000..7ff82a8160
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm
@@ -0,0 +1,81 @@
+/mob/living/simple_mob/animal/goat
+ name = "goat"
+ desc = "Not known for their pleasant disposition."
+ tt_desc = "E Oreamnos americanus"
+ icon_state = "goat"
+ icon_living = "goat"
+ icon_dead = "goat_dead"
+
+ faction = "goat"
+
+ health = 40
+ maxHealth = 40
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+
+ melee_damage_lower = 1
+ melee_damage_upper = 5
+ attacktext = list("kicked")
+
+ say_list_type = /datum/say_list/goat
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate
+
+ meat_amount = 4
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ var/datum/reagents/udder = null
+
+/mob/living/simple_mob/animal/goat/New()
+ udder = new(50)
+ udder.my_atom = src
+ ..()
+
+/mob/living/simple_mob/animal/goat/Life()
+ . = ..()
+ if(.)
+ if(stat == CONSCIOUS)
+ if(udder && prob(5))
+ udder.add_reagent("milk", rand(5, 10))
+
+ if(locate(/obj/effect/plant) in loc)
+ var/obj/effect/plant/SV = locate() in loc
+ SV.die_off(1)
+
+ if(locate(/obj/machinery/portable_atmospherics/hydroponics/soil/invisible) in loc)
+ var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/SP = locate() in loc
+ qdel(SP)
+
+ if(!pulledby)
+ var/obj/effect/plant/food
+ food = locate(/obj/effect/plant) in oview(5,loc)
+ if(food)
+ var/step = get_step_to(src, food, 0)
+ Move(step)
+
+/mob/living/simple_mob/animal/goat/Move()
+ ..()
+ if(!stat)
+ for(var/obj/effect/plant/SV in loc)
+ SV.die_off(1)
+
+/mob/living/simple_mob/animal/goat/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ var/obj/item/weapon/reagent_containers/glass/G = O
+ if(stat == CONSCIOUS && istype(G) && G.is_open_container())
+ user.visible_message("[user] milks [src] using \the [O].")
+ var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
+ if(G.reagents.total_volume >= G.volume)
+ to_chat(user, "The [O] is full.")
+ if(!transfered)
+ to_chat(user, "The udder is dry. Wait a bit longer...")
+ else
+ ..()
+
+/datum/say_list/goat
+ speak = list("EHEHEHEHEH","eh?")
+ emote_hear = list("brays")
+ emote_see = list("shakes its head", "stamps a foot", "glares around")
+
+ // say_got_target doesn't seem to handle emotes, but keeping this here in case someone wants to make it work
+// say_got_target = list("[src] gets an evil-looking gleam in their eye.")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
new file mode 100644
index 0000000000..a85463d723
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
@@ -0,0 +1,64 @@
+/*
+ Spiders come in various types, and are a fairly common enemy both inside and outside the station.
+ Their attacks can inject reagents, which can cause harm long after the spider is killed.
+ Thick material will prevent injections, similar to other means of injections.
+*/
+
+// The base spider, in the 'walking tank' family.
+/mob/living/simple_mob/animal/giant_spider
+ name = "giant spider"
+ desc = "Furry and brown, it makes you shudder to look at it. This one has deep red eyes."
+ tt_desc = "Atrax robustus gigantus"
+ icon_state = "guard"
+ icon_living = "guard"
+ icon_dead = "guard_dead"
+ has_eye_glow = TRUE
+
+ faction = "spiders"
+ maxHealth = 200
+ health = 200
+ pass_flags = PASSTABLE
+ movement_cooldown = 10
+ poison_resist = 0.5
+
+ see_in_dark = 10
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "punches"
+
+ melee_damage_lower = 18
+ melee_damage_upper = 30
+ attack_sharp = 1
+ attack_edge = 1
+ attack_sound = 'sound/weapons/bite.ogg'
+
+ heat_damage_per_tick = 20
+ cold_damage_per_tick = 20
+ minbodytemp = 175 // So they can all survive Sif without having to be classed under /sif subtype.
+
+ speak_emote = list("chitters")
+
+ meat_amount = 1
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat
+
+ say_list_type = /datum/say_list/spider
+
+ var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks.
+ var/poison_chance = 10 // Chance for injection to occur.
+ var/poison_per_bite = 5 // Amount added per injection.
+
+/mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(L.reagents)
+ var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD)
+ if(L.can_inject(src, null, target_zone))
+ inject_poison(L, target_zone)
+
+// Does actual poison injection, after all checks passed.
+/mob/living/simple_mob/animal/giant_spider/proc/inject_poison(mob/living/L, target_zone)
+ if(prob(poison_chance))
+ to_chat(L, "You feel a tiny prick.")
+ L.reagents.add_reagent(poison_type, poison_per_bite)
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm
new file mode 100644
index 0000000000..575e3ad204
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm
@@ -0,0 +1,67 @@
+// Carriers are not too dangerous on their own, but they create more spiders when dying.
+
+/mob/living/simple_mob/animal/giant_spider/carrier
+ desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes."
+ icon_state = "carrier"
+ icon_living = "carrier"
+ icon_dead = "carrier_dead"
+
+ maxHealth = 100
+ health = 100
+
+ melee_damage_lower = 8
+ melee_damage_upper = 25
+
+ poison_per_bite = 3
+ poison_type = "chloralhydrate"
+
+ movement_cooldown = 5
+
+ player_msg = "Upon dying, you will release a swarm of spiderlings or young hunter spiders.
\
+ If a spider emerges, you will be placed in control of it."
+
+ var/spiderling_count = 0
+ var/spiderling_type = /obj/effect/spider/spiderling
+ var/swarmling_type = /mob/living/simple_mob/animal/giant_spider/hunter
+ var/swarmling_faction = "spiders"
+ var/swarmling_prob = 10 // Odds that a spiderling will be a swarmling instead.
+
+/mob/living/simple_mob/animal/giant_spider/carrier/initialize()
+ spiderling_count = rand(5, 10)
+ adjust_scale(1.2)
+ return ..()
+
+/mob/living/simple_mob/animal/giant_spider/carrier/death()
+ visible_message(span("warning", "\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.") )
+ spawn(1)
+ var/list/new_spiders = list()
+ for(var/i = 1 to spiderling_count)
+ if(prob(swarmling_prob) && src)
+ var/mob/living/simple_mob/animal/giant_spider/swarmling = new swarmling_type(src.loc)
+ var/swarm_health = Floor(swarmling.maxHealth * 0.4)
+ var/swarm_dam_lower = Floor(melee_damage_lower * 0.4)
+ var/swarm_dam_upper = Floor(melee_damage_upper * 0.4)
+ swarmling.name = "spiderling"
+ swarmling.maxHealth = swarm_health
+ swarmling.health = swarm_health
+ swarmling.melee_damage_lower = swarm_dam_lower
+ swarmling.melee_damage_upper = swarm_dam_upper
+ swarmling.faction = swarmling_faction
+ swarmling.adjust_scale(0.75)
+ new_spiders += swarmling
+ else if(src)
+ var/obj/effect/spider/spiderling/child = new spiderling_type(src.loc)
+ child.skitter()
+ else // We might've gibbed or got deleted.
+ break
+ // Transfer our player to their new body, if RNG provided one.
+ if(new_spiders.len && client)
+ var/mob/living/simple_mob/animal/giant_spider/new_body = pick(new_spiders)
+ new_body.key = src.key
+ return ..()
+
+/mob/living/simple_mob/animal/giant_spider/carrier/recursive
+ desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes. \
+ You have a distinctly bad feeling about this."
+
+ swarmling_type = /mob/living/simple_mob/animal/giant_spider/carrier/recursive
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm
new file mode 100644
index 0000000000..c3d1f60731
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm
@@ -0,0 +1,45 @@
+// Electric spiders fire taser-like beams at their enemies.
+// TODO: AI
+
+/mob/living/simple_mob/animal/giant_spider/electric
+ desc = "Spined and yellow, it makes you shudder to look at it. This one has flickering gold eyes."
+ icon_state = "spark"
+ icon_living = "spark"
+ icon_dead = "spark_dead"
+
+ maxHealth = 210
+ health = 210
+
+ taser_kill = 0 //It -is- the taser.
+
+ base_attack_cooldown = 10
+ projectilesound = 'sound/weapons/taser2.ogg'
+ projectiletype = /obj/item/projectile/beam/stun/electric_spider
+
+ melee_damage_lower = 10
+ melee_damage_upper = 25
+
+ poison_chance = 15
+ poison_per_bite = 3
+ poison_type = "stimm"
+
+ shock_resist = 0.75
+
+ player_msg = "You can fire a taser-like ranged attack by clicking on an enemy or tile at a distance."
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/electric_spider
+
+
+/obj/item/projectile/beam/stun/electric_spider
+ name = "stun beam"
+ agony = 20
+
+// The electric spider's AI.
+/datum/ai_holder/simple_mob/ranged/electric_spider
+
+/datum/ai_holder/simple_mob/ranged/electric_spider/max_range(atom/movable/AM)
+ if(isliving(AM))
+ var/mob/living/L = AM
+ if(L.incapacitated(INCAPACITATION_DISABLED) || L.stat == UNCONSCIOUS) // If our target is stunned, go in for the kill.
+ return 1
+ return ..() // Do ranged if possible otherwise.
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm
new file mode 100644
index 0000000000..19b85cccd4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm
@@ -0,0 +1,20 @@
+// Frost spiders inject cryotoxin, slowing people down (which is very bad if trying to run from spiders).
+
+/mob/living/simple_mob/animal/giant_spider/frost
+ desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes."
+ icon_state = "frost"
+ icon_living = "frost"
+ icon_dead = "frost_dead"
+
+ maxHealth = 175
+ health = 175
+
+ poison_per_bite = 5
+ poison_type = "cryotoxin"
+ heat_resist = -0.50
+ cold_resist = 0.75
+
+// Sif variant with a somewhat different desc.
+/mob/living/simple_mob/animal/giant_spider/frost/sif
+ desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes. \
+ It isn't native to Sif."
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm
new file mode 100644
index 0000000000..f3eb1cf81e
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm
@@ -0,0 +1,165 @@
+// Hunters are fast, fragile, and possess a leaping attack.
+// The leaping attack is somewhat telegraphed and can be dodged if one is paying attention.
+// The AI would've followed up after a successful leap with dragging the downed victim away, but the dragging code was too janky.
+
+/mob/living/simple_mob/animal/giant_spider/hunter
+ desc = "Furry and black, it makes you shudder to look at it. This one has sparkling purple eyes."
+ icon_state = "hunter"
+ icon_living = "hunter"
+ icon_dead = "hunter_dead"
+
+ maxHealth = 120
+ health = 120
+
+ poison_per_bite = 5
+ melee_damage_lower = 9
+ melee_damage_upper = 15
+
+ movement_cooldown = 0 // Hunters are FAST.
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/hunter_spider
+
+ player_msg = "You are very fast, and can perform a leaping attack by clicking on someone from a short distance away.
\
+ If the leap succeeds, the target will be knocked down briefly and you will be on top of them.
\
+ Note that there is a short delay before you leap!
\
+ In addition, you will do more damage to incapacitated opponents."
+
+ // Leaping is a special attack, so these values determine when leap can happen.
+ // Leaping won't occur if its on cooldown.
+ special_attack_min_range = 2
+ special_attack_max_range = 4
+ special_attack_cooldown = 10 SECONDS
+
+ var/leap_warmup = 1 SECOND // How long the leap telegraphing is.
+ var/leap_sound = 'sound/weapons/spiderlunge.ogg'
+
+// Multiplies damage if the victim is stunned in some form, including a successful leap.
+/mob/living/simple_mob/animal/giant_spider/hunter/apply_bonus_melee_damage(atom/A, damage_amount)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(L.incapacitated(INCAPACITATION_DISABLED))
+ return damage_amount * 1.5
+ return ..()
+
+
+// The actual leaping attack.
+/mob/living/simple_mob/animal/giant_spider/hunter/do_special_attack(atom/A)
+ set waitfor = FALSE
+ set_AI_busy(TRUE)
+
+ // Telegraph, since getting stunned suddenly feels bad.
+ do_windup_animation(A, leap_warmup)
+ sleep(leap_warmup) // For the telegraphing.
+
+ // Do the actual leap.
+ status_flags |= LEAPING // Lets us pass over everything.
+ visible_message(span("danger","\The [src] leaps at \the [A]!"))
+ throw_at(get_step(get_turf(A), get_turf(src)), special_attack_max_range+1, 1, src)
+ playsound(src, leap_sound, 75, 1)
+
+ sleep(5) // For the throw to complete. It won't hold up the AI ticker due to waitfor being false.
+
+ if(status_flags & LEAPING)
+ status_flags &= ~LEAPING // Revert special passage ability.
+
+ var/turf/T = get_turf(src) // Where we landed. This might be different than A's turf.
+
+ . = FALSE
+
+ // Now for the stun.
+ var/mob/living/victim = null
+ for(var/mob/living/L in T) // So player-controlled spiders only need to click the tile to stun them.
+ if(L == src)
+ continue
+
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if(H.check_shields(damage = 0, damage_source = src, attacker = src, def_zone = null, attack_text = "the leap"))
+ continue // We were blocked.
+
+ victim = L
+ break
+
+ if(victim)
+ victim.Weaken(2)
+ victim.visible_message(span("danger","\The [src] knocks down \the [victim]!"))
+ to_chat(victim, span("critical", "\The [src] jumps on you!"))
+ . = TRUE
+
+ set_AI_busy(FALSE)
+
+// var/obj/item/weapon/grab/G = new(src, victim)
+// put_in_active_hand(G)
+
+// G.synch()
+// G.affecting = victim
+// victim.LAssailant = src
+
+// visible_message("\The [src] seizes \the [victim] aggressively!")
+// do_attack_animation(victim)
+
+
+// This AI would've isolated people it stuns with its 'leap' attack, by dragging them away.
+/datum/ai_holder/simple_mob/melee/hunter_spider
+
+/*
+
+/datum/ai_holder/simple_mob/melee/hunter_spider/post_special_attack(mob/living/L)
+ drag_away(L)
+
+// Called after a successful leap.
+/datum/ai_holder/simple_mob/melee/hunter_spider/proc/drag_away(mob/living/L)
+ world << "Doing drag_away attack on [L]"
+ if(!istype(L))
+ world << "Invalid type."
+ return FALSE
+
+ // If they didn't get stunned, then don't bother.
+ if(!L.incapacitated(INCAPACITATION_DISABLED))
+ world << "Not incapcitated."
+ return FALSE
+
+ // Grab them.
+ if(!holder.start_pulling(L))
+ world << "Failed to pull."
+ return FALSE
+
+ holder.visible_message(span("danger","\The [holder] starts to drag \the [L] away!"))
+
+ var/list/allies = list()
+ var/list/enemies = list()
+ for(var/mob/living/thing in hearers(vision_range, holder))
+ if(thing == holder || thing == L) // Don't count ourselves or the thing we just started pulling.
+ continue
+ if(holder.IIsAlly(thing))
+ allies += thing
+ else
+ enemies += thing
+
+ // First priority: Move our victim to our friends.
+ if(allies.len)
+ world << "Going to move to ally"
+ give_destination(get_turf(pick(allies)), min_distance = 2, combat = TRUE) // This will switch our stance.
+
+ // Second priority: Move our victim away from their friends.
+ // There's a chance of it derping and pulling towards enemies if there's more than two people.
+ // Preventing that will likely be both a lot of effort for developers and the CPU.
+ else if(enemies.len)
+ world << "Going to move away from enemies"
+ var/mob/living/hostile = pick(enemies)
+ var/turf/move_to = get_turf(hostile)
+ for(var/i = 1 to vision_range) // Move them this many steps away from their friend.
+ move_to = get_step_away(move_to, L, 7)
+ if(move_to)
+ give_destination(move_to, min_distance = 2, combat = TRUE) // This will switch our stance.
+
+ // Third priority: Move our victim SOMEWHERE away from where they were.
+ else
+ world << "Going to move away randomly"
+ var/turf/move_to = get_turf(L)
+ move_to = get_step(move_to, pick(cardinal))
+ for(var/i = 1 to vision_range) // Move them this many steps away from where they were before.
+ move_to = get_step_away(move_to, L, 7)
+ if(move_to)
+ give_destination(move_to, min_distance = 2, combat = TRUE) // This will switch our stance.
+*/
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm
new file mode 100644
index 0000000000..1f1ecac678
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm
@@ -0,0 +1,103 @@
+// Lurkers are somewhat similar to Hunters, however the big difference is that Lurkers have an imperfect cloak.
+// Their AI will try to do hit and run tactics, striking the enemy when its "cloaked", for bonus damage and a stun.
+// They keep attacking until the stun ends, then retreat to cloak again and repeat the cycle.
+// Hitting the spider before it does its ambush attack will break the cloak and make the spider flee.
+
+/mob/living/simple_mob/animal/giant_spider/lurker
+ desc = "Translucent and white, it makes you shudder to look at it. This one has incandescent red eyes."
+ icon_state = "lurker"
+ icon_living = "lurker"
+ icon_dead = "lurker_dead"
+
+ maxHealth = 100
+ health = 100
+
+ poison_per_bite = 5
+
+ movement_cooldown = 5
+
+ melee_damage_lower = 10
+ melee_damage_upper = 10
+ poison_chance = 30
+ poison_type = "cryptobiolin"
+ poison_per_bite = 1
+
+ player_msg = "You have an imperfect, but automatic stealth. If you attack something while 'hidden', then \
+ you will do bonus damage, stun the target, and unstealth for a period of time.
\
+ Getting attacked will also break your stealth."
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run
+
+ var/cloaked = FALSE
+ var/cloaked_alpha = 45 // Lower = Harder to see.
+ var/cloaked_bonus_damage = 30 // This is added on top of the normal melee damage.
+ var/cloaked_weaken_amount = 3 // How long to stun for.
+ var/cloak_cooldown = 10 SECONDS // Amount of time needed to re-cloak after losing it.
+ var/last_uncloak = 0 // world.time
+
+
+/mob/living/simple_mob/animal/giant_spider/lurker/proc/cloak()
+ if(cloaked)
+ return
+ animate(src, alpha = cloaked_alpha, time = 1 SECOND)
+ cloaked = TRUE
+
+
+/mob/living/simple_mob/animal/giant_spider/lurker/proc/uncloak()
+ last_uncloak = world.time // This is assigned even if it isn't cloaked already, to 'reset' the timer if the spider is continously getting attacked.
+ if(!cloaked)
+ return
+ animate(src, alpha = initial(alpha), time = 1 SECOND)
+ cloaked = FALSE
+
+
+// Check if cloaking if possible.
+/mob/living/simple_mob/animal/giant_spider/lurker/proc/can_cloak()
+ if(stat)
+ return FALSE
+ if(last_uncloak + cloak_cooldown > world.time)
+ return FALSE
+
+ return TRUE
+
+
+// Called by things that break cloaks, like Technomancer wards.
+/mob/living/simple_mob/animal/giant_spider/lurker/break_cloak()
+ uncloak()
+
+
+/mob/living/simple_mob/animal/giant_spider/lurker/is_cloaked()
+ return cloaked
+
+
+// Cloaks the spider automatically, if possible.
+/mob/living/simple_mob/animal/giant_spider/lurker/handle_special()
+ if(!cloaked && can_cloak())
+ cloak()
+
+
+// Applies bonus base damage if cloaked.
+/mob/living/simple_mob/animal/giant_spider/lurker/apply_bonus_melee_damage(atom/A, damage_amount)
+ if(cloaked)
+ return damage_amount + cloaked_bonus_damage
+ return ..()
+
+// Applies stun, then uncloaks.
+/mob/living/simple_mob/animal/giant_spider/lurker/apply_melee_effects(atom/A)
+ if(cloaked)
+ if(isliving(A))
+ var/mob/living/L = A
+ L.Weaken(cloaked_weaken_amount)
+ to_chat(L, span("danger", "\The [src] ambushes you!"))
+ playsound(L, 'sound/weapons/spiderlunge.ogg', 75, 1)
+ uncloak()
+ ..() // For the poison.
+
+// Force uncloaking if attacked.
+/mob/living/simple_mob/animal/giant_spider/lurker/bullet_act(obj/item/projectile/P)
+ . = ..()
+ break_cloak()
+
+/mob/living/simple_mob/animal/giant_spider/lurker/hit_with_weapon(obj/item/O, mob/living/user, effective_force, hit_zone)
+ . = ..()
+ break_cloak()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm
new file mode 100644
index 0000000000..62934195dd
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm
@@ -0,0 +1,230 @@
+// Nurses, they create webs and eggs.
+// They're fragile but their attacks can cause horrifying consequences.
+/mob/living/simple_mob/animal/giant_spider/nurse
+ desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes."
+ icon_state = "nurse"
+ icon_living = "nurse"
+ icon_dead = "nurse_dead"
+
+ maxHealth = 40
+ health = 40
+
+ movement_cooldown = 5 // A bit faster so that they can inject the eggs easier.
+
+ melee_damage_lower = 5 // Doesn't do a lot of damage, since the goal is to make more spiders with egg attacks.
+ melee_damage_upper = 10
+ poison_per_bite = 5
+ poison_type = "stoxin"
+
+ player_msg = "You can spin webs on an adjacent tile, or cocoon an object by clicking on it.
\
+ You can also cocoon a dying or dead entity by clicking on them, and you will gain charges for egg-laying.
\
+ To lay eggs, click a nearby tile. Laying eggs will deplete a charge."
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/nurse_spider
+
+ var/fed = 0 // Counter for how many egg laying 'charges' the spider has.
+ var/egg_inject_chance = 25 // One in four chance to get eggs.
+ var/egg_type = /obj/effect/spider/eggcluster/small
+ var/web_type = /obj/effect/spider/stickyweb/dark
+
+
+/mob/living/simple_mob/animal/giant_spider/nurse/inject_poison(mob/living/L, target_zone)
+ ..() // Inject the stoxin here.
+ if(ishuman(L) && prob(egg_inject_chance))
+ var/mob/living/carbon/human/H = L
+ var/obj/item/organ/external/O = H.get_organ(target_zone)
+ if(O)
+ var/eggcount = 0
+ for(var/obj/effect/spider/eggcluster/E in O.implants)
+ eggcount++
+ if(!eggcount)
+ var/eggs = new egg_type(O, src)
+ O.implants += eggs
+ to_chat(H, span("critical", "\The [src] injects something into your [O.name]!") ) // Oh god its laying eggs in me!
+
+// Webs target in a web if able to.
+/mob/living/simple_mob/animal/giant_spider/nurse/attack_target(atom/A)
+ if(isturf(A))
+ if(fed)
+ return lay_eggs(A)
+ return web_tile(A)
+
+ if(isliving(A))
+ var/mob/living/L = A
+ if(!L.stat)
+ return ..()
+
+ if(!istype(A, /atom/movable))
+ return
+ var/atom/movable/AM = A
+
+ if(AM.anchored)
+ return ..()
+
+ return spin_cocoon(AM)
+
+/mob/living/simple_mob/animal/giant_spider/nurse/proc/spin_cocoon(atom/movable/AM)
+ if(!istype(AM))
+ return FALSE // We can't cocoon walls sadly.
+ visible_message(span("notice", "\The [src] begins to secrete a sticky substance around \the [AM].") )
+
+ // Get our AI to stay still.
+ set_AI_busy(TRUE)
+
+ if(!do_mob(src, AM, 5 SECONDS))
+ set_AI_busy(FALSE)
+ to_chat(src, span("warning", "You need to stay still to spin a web around \the [AM]."))
+ return FALSE
+
+ set_AI_busy(FALSE)
+
+ if(!AM) // Make sure it didn't get deleted for whatever reason.
+ to_chat(src, span("warning", "Whatever you were spinning a web for, its no longer there..."))
+ return FALSE
+
+ if(!isturf(AM.loc))
+ to_chat(src, span("warning", "You can't spin \the [AM] in a web while it is inside \the [AM.loc]."))
+ return FALSE
+
+ if(!Adjacent(AM))
+ to_chat(src, span("warning", "You need to be next to \the [AM] to spin it into a web."))
+ return FALSE
+
+ // Finally done with the checks.
+ var/obj/effect/spider/cocoon/C = new(AM.loc)
+ var/large_cocoon = FALSE
+ for(var/mob/living/L in C.loc)
+ if(istype(L, /mob/living/simple_mob/animal/giant_spider)) // Cannibalism is bad.
+ continue
+ fed++
+ visible_message(span("warning","\The [src] sticks a proboscis into \the [L], and sucks a viscous substance out."))
+ to_chat(src, span("notice", "You've fed upon \the [L], and can now lay [fed] cluster\s of eggs."))
+ L.forceMove(C)
+ large_cocoon = TRUE
+ break
+
+ // This part's pretty stupid.
+ for(var/obj/O in C.loc)
+ if(!O.anchored)
+ O.forceMove(C)
+
+ // Todo: Put this code on the cocoon object itself?
+ if(large_cocoon)
+ C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3")
+
+ return TRUE
+
+/mob/living/simple_mob/animal/giant_spider/nurse/handle_special()
+ set waitfor = FALSE
+ if(get_AI_stance() == STANCE_IDLE && !is_AI_busy() && isturf(loc))
+ if(fed)
+ lay_eggs(loc)
+ else
+ web_tile(loc)
+
+/mob/living/simple_mob/animal/giant_spider/nurse/proc/web_tile(turf/T)
+ if(!istype(T))
+ return FALSE
+
+ var/obj/effect/spider/stickyweb/W = locate() in T
+ if(W)
+ return FALSE // Already got webs here.
+
+ visible_message(span("notice", "\The [src] begins to secrete a sticky substance.") )
+ // Get our AI to stay still.
+ set_AI_busy(TRUE)
+
+ if(!do_mob(src, T, 5 SECONDS))
+ set_AI_busy(FALSE)
+ to_chat(src, span("warning", "You need to stay still to spin a web on \the [T]."))
+ return FALSE
+
+ W = locate() in T
+ if(W)
+ return FALSE // Spamclick protection.
+
+ set_AI_busy(FALSE)
+ new web_type(T)
+ return TRUE
+
+
+/mob/living/simple_mob/animal/giant_spider/nurse/proc/lay_eggs(turf/T)
+ if(!istype(T))
+ return FALSE
+
+ if(!fed)
+ return FALSE
+
+ var/obj/effect/spider/eggcluster/E = locate() in T
+ if(E)
+ return FALSE // Already got eggs here.
+
+ visible_message(span("notice", "\The [src] begins to lay a cluster of eggs.") )
+ // Get our AI to stay still.
+ set_AI_busy(TRUE)
+
+ if(!do_mob(src, T, 5 SECONDS))
+ set_AI_busy(FALSE)
+ to_chat(src, span("warning", "You need to stay still to lay eggs on \the [T]."))
+ return FALSE
+
+ E = locate() in T
+ if(E)
+ return FALSE // Spamclick protection.
+
+ set_AI_busy(FALSE)
+ new egg_type(T)
+ fed--
+ return TRUE
+
+
+// Variant that 'blocks' light (by being a negative light source).
+// This is done to make webbed rooms scary and allow for spiders on the other side of webs to see prey.
+/obj/effect/spider/stickyweb/dark
+ name = "dense web"
+ desc = "It's sticky, and blocks a lot of light."
+ light_color = "#FFFFFF"
+ light_range = 2
+ light_power = -3
+
+// This is still stupid, but whatever.
+/mob/living/simple_mob/animal/giant_spider/nurse/hat
+ desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes and a tiny nurse hat."
+ icon_state = "nursemed"
+ icon_living = "nursemed"
+ icon_dead = "nursemed_dead"
+
+
+// The AI for nurse spiders. Wraps things in webs by 'attacking' them.
+/datum/ai_holder/simple_mob/melee/nurse_spider
+ wander = TRUE
+ base_wander_delay = 8
+ cooperative = FALSE // So we don't ask our spider friends to attack things we're webbing. This might also make them stay at the base if their friends find tasty explorers.
+
+// Get us unachored objects as an option as well.
+/datum/ai_holder/simple_mob/melee/nurse_spider/list_targets()
+ . = ..()
+
+ var/static/alternative_targets = typecacheof(list(/obj/item, /obj/structure))
+
+ for(var/AT in typecache_filter_list(range(vision_range, holder), alternative_targets))
+ var/obj/O = AT
+ if(can_see(holder, O, vision_range) && !O.anchored)
+ . += O
+
+// Select an obj if no mobs are around.
+/datum/ai_holder/melee/nurse_spider/pick_target(list/targets)
+ var/mobs_only = locate(/mob/living) in targets // If a mob is in the list of targets, then ignore objects.
+ if(mobs_only)
+ for(var/A in targets)
+ if(!isliving(A))
+ targets -= A
+
+ return ..(targets)
+
+/datum/ai_holder/simple_mob/melee/nurse_spider/can_attack(atom/movable/the_target)
+ . = ..()
+ if(!.) // Parent returned FALSE.
+ if(istype(the_target, /obj))
+ var/obj/O = the_target
+ if(!O.anchored)
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm
new file mode 100644
index 0000000000..1c2eaa6dda
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm
@@ -0,0 +1,21 @@
+// Pepper spiders inject condensed capsaicin into their victims.
+
+/mob/living/simple_mob/animal/giant_spider/pepper
+ desc = "Red and brown, it makes you shudder to look at it. This one has glinting red eyes."
+ icon_state = "pepper"
+ icon_living = "pepper"
+ icon_dead = "pepper_dead"
+
+ maxHealth = 210
+ health = 210
+
+ melee_damage_lower = 8
+ melee_damage_upper = 15
+
+ poison_chance = 20
+ poison_per_bite = 5
+ poison_type = "condensedcapsaicin_v"
+
+/mob/living/simple_mob/animal/giant_spider/pepper/initialize()
+ adjust_scale(1.1)
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm
new file mode 100644
index 0000000000..d9508a05d8
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm
@@ -0,0 +1,56 @@
+// Phorogenic spiders explode when they die.
+// You really shouldn't melee them.
+
+/mob/living/simple_mob/animal/giant_spider/phorogenic
+ desc = "Crystalline and purple, it makes you shudder to look at it. This one has haunting purple eyes."
+ icon_state = "phoron"
+ icon_living = "phoron"
+ icon_dead = "phoron_dead"
+
+ maxHealth = 225
+ health = 225
+ taser_kill = FALSE //You will need more than a peashooter to kill the juggernaut.
+
+ melee_damage_lower = 25
+ melee_damage_upper = 40
+ attack_armor_pen = 15
+
+ movement_cooldown = 15
+
+ poison_chance = 30
+ poison_per_bite = 0.5
+ poison_type = "phoron"
+
+ var/exploded = FALSE
+ var/explosion_dev_range = 1
+ var/explosion_heavy_range = 2
+ var/explosion_light_range = 4
+ var/explosion_flash_range = 6 // This doesn't do anything iirc.
+
+ var/explosion_delay_lower = 1 SECOND // Lower bound for explosion delay.
+ var/explosion_delay_upper = 2 SECONDS // Upper bound.
+
+/mob/living/simple_mob/animal/giant_spider/phorogenic/initialize()
+ adjust_scale(1.25)
+ return ..()
+
+/mob/living/simple_mob/animal/giant_spider/phorogenic/death()
+ visible_message(span("critical", "\The [src]'s body begins to rupture!"))
+ var/delay = rand(explosion_delay_lower, explosion_delay_upper)
+ spawn(0)
+ // Flash black and red as a warning.
+ for(var/i = 1 to delay)
+ if(i % 2 == 0)
+ color = "#000000"
+ else
+ color = "#FF0000"
+ sleep(1)
+
+ spawn(delay)
+ // The actual boom.
+ if(src && !exploded)
+ visible_message(span("danger", "\The [src]'s body detonates!"))
+ exploded = TRUE
+ explosion(src.loc, explosion_dev_range, explosion_heavy_range, explosion_light_range, explosion_flash_range)
+ return ..()
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm
new file mode 100644
index 0000000000..dc0a345865
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm
@@ -0,0 +1,20 @@
+// Thermic spiders inject a special variant of thermite that burns someone from the inside.
+
+/mob/living/simple_mob/animal/giant_spider/thermic
+ desc = "Mirage-cloaked and orange, it makes you shudder to look at it. This one has simmering orange eyes."
+ icon_state = "pit"
+ icon_living = "pit"
+ icon_dead = "pit_dead"
+
+ maxHealth = 175
+ health = 175
+
+ melee_damage_lower = 10
+ melee_damage_upper = 25
+
+ heat_resist = 0.75
+ cold_resist = -0.50
+
+ poison_chance = 30
+ poison_per_bite = 1
+ poison_type = "thermite_v"
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm
new file mode 100644
index 0000000000..82a68d4c1f
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm
@@ -0,0 +1,185 @@
+// Tunnelers have a special ability that allows them to charge at an enemy by tunneling towards them.
+// Any mobs inbetween the tunneler's path and the target will be stunned if the tunneler hits them.
+// The target will suffer a stun as well, if the tunneler hits them at the end. A successful hit will stop the tunneler.
+// If the target moves fast enough, the tunneler can miss, causing it to overshoot.
+// If the tunneler hits a solid wall, the tunneler will suffer a stun.
+
+/mob/living/simple_mob/animal/giant_spider/tunneler
+ desc = "Sandy and brown, it makes you shudder to look at it. This one has glittering yellow eyes."
+ icon_state = "tunneler"
+ icon_living = "tunneler"
+ icon_dead = "tunneler_dead"
+
+ maxHealth = 120
+ health = 120
+
+ melee_damage_lower = 10
+ melee_damage_upper = 10
+
+ poison_chance = 15
+ poison_per_bite = 3
+ poison_type = "serotrotium_v"
+
+// ai_holder_type = /datum/ai_holder/simple_mob/melee/tunneler
+
+ player_msg = "You can perform a tunneling attack by clicking on someone from a distance.
\
+ There is a noticable travel delay as you tunnel towards the tile the target was at when you started the tunneling attack.
\
+ Any entities inbetween you and the targeted tile will be stunned for a brief period of time.
\
+ Whatever is on the targeted tile when you arrive will suffer a potent stun.
\
+ If nothing is on the targeted tile, you will overshoot and keep going for a few more tiles.
\
+ If you hit a wall or other solid structure during that time, you will suffer a lengthy stun and be vulnerable to more harm."
+
+ // Tunneling is a special attack, similar to the hunter's Leap.
+ special_attack_min_range = 2
+ special_attack_max_range = 6
+ special_attack_cooldown = 10 SECONDS
+
+ var/tunnel_warning = 0.5 SECONDS // How long the dig telegraphing is.
+ var/tunnel_tile_speed = 2 // How long to wait between each tile. Higher numbers result in an easier to dodge tunnel attack.
+
+/mob/living/simple_mob/animal/giant_spider/tunneler/frequent
+ special_attack_cooldown = 5 SECONDS
+
+/mob/living/simple_mob/animal/giant_spider/tunneler/fast
+ tunnel_tile_speed = 1
+
+/mob/living/simple_mob/animal/giant_spider/tunneler/should_special_attack(atom/A)
+ // Make sure its possible for the spider to reach the target so it doesn't try to go through a window.
+ var/turf/destination = get_turf(A)
+ var/turf/starting_turf = get_turf(src)
+ var/turf/T = starting_turf
+ for(var/i = 1 to get_dist(starting_turf, destination))
+ if(T == destination)
+ break
+
+ T = get_step(T, get_dir(T, destination))
+ if(T.check_density(ignore_mobs = TRUE))
+ return FALSE
+ return T == destination
+
+
+/mob/living/simple_mob/animal/giant_spider/tunneler/do_special_attack(atom/A)
+ set waitfor = FALSE
+ set_AI_busy(TRUE)
+
+ // Save where we're gonna go soon.
+ var/turf/destination = get_turf(A)
+ var/turf/starting_turf = get_turf(src)
+
+ // Telegraph to give a small window to dodge if really close.
+ do_windup_animation(A, tunnel_warning)
+ sleep(tunnel_warning) // For the telegraphing.
+
+ // Do the dig!
+ visible_message(span("danger","\The [src] tunnels towards \the [A]!"))
+ submerge()
+
+ if(handle_tunnel(destination) == FALSE)
+ set_AI_busy(FALSE)
+ emerge()
+ return FALSE
+
+ // Did we make it?
+ if(!(src in destination))
+ set_AI_busy(FALSE)
+ emerge()
+ return FALSE
+
+ var/overshoot = TRUE
+
+ // Test if something is at destination.
+ for(var/mob/living/L in destination)
+ if(L == src)
+ continue
+
+ visible_message(span("danger","\The [src] erupts from underneath, and hits \the [L]!"))
+ playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1)
+ L.Weaken(3)
+ overshoot = FALSE
+
+ if(!overshoot) // We hit the target, or something, at destination, so we're done.
+ set_AI_busy(FALSE)
+ emerge()
+ return TRUE
+
+ // Otherwise we need to keep going.
+ to_chat(src, span("warning", "You overshoot your target!"))
+ playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
+ var/dir_to_go = get_dir(starting_turf, destination)
+ for(var/i = 1 to rand(2, 4))
+ destination = get_step(destination, dir_to_go)
+
+ if(handle_tunnel(destination) == FALSE)
+ set_AI_busy(FALSE)
+ emerge()
+ return FALSE
+
+ set_AI_busy(FALSE)
+ emerge()
+ return FALSE
+
+
+
+// Does the tunnel movement, stuns enemies, etc.
+/mob/living/simple_mob/animal/giant_spider/tunneler/proc/handle_tunnel(turf/destination)
+ var/turf/T = get_turf(src) // Hold our current tile.
+
+ // Regular tunnel loop.
+ for(var/i = 1 to get_dist(src, destination))
+ if(stat)
+ return FALSE // We died or got knocked out on the way.
+ if(loc == destination)
+ break // We somehow got there early.
+
+ // Update T.
+ T = get_step(src, get_dir(src, destination))
+ if(T.check_density(ignore_mobs = TRUE))
+ to_chat(src, span("critical", "You hit something really solid!"))
+ playsound(src, "punch", 75, 1)
+ Weaken(5)
+ add_modifier(/datum/modifier/tunneler_vulnerable, 10 SECONDS)
+ return FALSE // Hit a wall.
+
+ // Stun anyone in our way.
+ for(var/mob/living/L in T)
+ playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1)
+ L.Weaken(2)
+
+ // Get into the tile.
+ forceMove(T)
+
+ // Visuals and sound.
+ dig_under_floor(get_turf(src))
+ playsound(src, 'sound/effects/break_stone.ogg', 75, 1)
+ sleep(tunnel_tile_speed)
+
+// For visuals.
+/mob/living/simple_mob/animal/giant_spider/tunneler/proc/submerge()
+ alpha = 0
+ dig_under_floor(get_turf(src))
+ new /obj/effect/temporary_effect/tunneler_hole(get_turf(src))
+
+// Ditto.
+/mob/living/simple_mob/animal/giant_spider/tunneler/proc/emerge()
+ alpha = 255
+ dig_under_floor(get_turf(src))
+ new /obj/effect/temporary_effect/tunneler_hole(get_turf(src))
+
+/mob/living/simple_mob/animal/giant_spider/tunneler/proc/dig_under_floor(turf/T)
+ new /obj/item/weapon/ore/glass(T) // This will be rather weird when on station but the alternative is too much work.
+
+/obj/effect/temporary_effect/tunneler_hole
+ name = "hole"
+ desc = "A collapsing tunnel hole."
+ icon_state = "tunnel_hole"
+ time_to_die = 1 MINUTE
+
+/datum/modifier/tunneler_vulnerable
+ name = "Vulnerable"
+ desc = "You are vulnerable to more harm than usual."
+ on_created_text = "You feel vulnerable..."
+ on_expired_text = "You feel better."
+ stacks = MODIFIER_STACK_EXTEND
+
+ incoming_damage_percent = 2
+ evasion = -100
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm
new file mode 100644
index 0000000000..0024bc8962
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm
@@ -0,0 +1,37 @@
+/mob/living/simple_mob/animal/giant_spider/webslinger
+ desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes, and a cloak of web."
+ tt_desc = "X Brachypelma phorus balisticus"
+ icon_state = "webslinger"
+ icon_living = "webslinger"
+ icon_dead = "webslinger_dead"
+ maxHealth = 90
+ health = 90
+ projectilesound = 'sound/weapons/thudswoosh.ogg'
+ projectiletype = /obj/item/projectile/webball
+ base_attack_cooldown = 10
+ melee_damage_lower = 8
+ melee_damage_upper = 15
+ poison_per_bite = 2
+ poison_type = "psilocybin"
+ player_msg = "You can fire a ranged attack by clicking on an enemy or tile at a distance."
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged
+
+// Check if we should bola, or just shoot the pain ball
+/mob/living/simple_mob/animal/giant_spider/webslinger/should_special_attack(atom/A)
+ if(ismob(A))
+ if(ishuman(A))
+ var/mob/living/carbon/human/H = A
+ if(!H.legcuffed)
+ return TRUE
+ return FALSE
+
+// Now we've got a running human in sight, time to throw the bola
+/mob/living/simple_mob/animal/giant_spider/webslinger/do_special_attack(atom/A)
+ set waitfor = FALSE
+ set_AI_busy(TRUE)
+ var/obj/item/projectile/bola/B = new /obj/item/projectile/bola(src.loc)
+ playsound(src, 'sound/weapons/thudswoosh.ogg', 100, 1)
+ if(!B)
+ return
+ B.launch(A)
+ set_AI_busy(FALSE)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm
new file mode 100644
index 0000000000..3b40147794
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm
@@ -0,0 +1,25 @@
+//Look Sir, free crabs!
+/mob/living/simple_mob/animal/passive/crab
+ name = "crab"
+ desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time."
+ tt_desc = "E Cancer bellianus"
+ faction = "crabs"
+
+ icon_state = "crab"
+ icon_living = "crab"
+ icon_dead = "crab_dead"
+
+ mob_size = MOB_SMALL
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "stomps"
+ friendly = "pinches"
+
+ say_list_type = /datum/say_list/crab
+
+//COFFEE! SQUEEEEEEEEE!
+/mob/living/simple_mob/animal/passive/crab/Coffee
+ name = "Coffee"
+ real_name = "Coffee"
+ desc = "It's Coffee, the other pet!"
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
new file mode 100644
index 0000000000..bdf8853b4b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
@@ -0,0 +1,77 @@
+// Different types of fish! They are all subtypes of this tho
+/mob/living/simple_mob/animal/passive/fish
+ name = "fish"
+ desc = "Its a fishy. No touchy fishy."
+ icon = 'icons/mob/fish.dmi'
+
+ mob_size = MOB_SMALL
+ // So fish are actually underwater.
+ plane = TURF_PLANE
+ layer = UNDERWATER_LAYER
+
+ // By default they can be in any water turf. Subtypes might restrict to deep/shallow etc
+ var/global/list/suitable_turf_types = list(
+ /turf/simulated/floor/beach/water,
+ /turf/simulated/floor/beach/coastline,
+ /turf/simulated/floor/holofloor/beach/water,
+ /turf/simulated/floor/holofloor/beach/coastline,
+ /turf/simulated/floor/water
+ )
+
+// Makes the AI unable to willingly go on land.
+/mob/living/simple_mob/animal/passive/fish/IMove(newloc)
+ if(is_type_in_list(newloc, suitable_turf_types))
+ return ..() // Procede as normal.
+ return MOVEMENT_FAILED // Don't leave the water!
+
+// Take damage if we are not in water
+/mob/living/simple_mob/animal/passive/fish/handle_breathing()
+ var/turf/T = get_turf(src)
+ if(T && !is_type_in_list(T, suitable_turf_types))
+ if(prob(50))
+ say(pick("Blub", "Glub", "Burble"))
+ adjustBruteLoss(unsuitable_atoms_damage)
+
+// Subtypes.
+/mob/living/simple_mob/animal/passive/fish/bass
+ name = "bass"
+ tt_desc = "E Micropterus notius"
+ icon_state = "bass-swim"
+ icon_living = "bass-swim"
+ icon_dead = "bass-dead"
+
+/mob/living/simple_mob/animal/passive/fish/trout
+ name = "trout"
+ tt_desc = "E Salmo trutta"
+ icon_state = "trout-swim"
+ icon_living = "trout-swim"
+ icon_dead = "trout-dead"
+
+/mob/living/simple_mob/animal/passive/fish/salmon
+ name = "salmon"
+ tt_desc = "E Oncorhynchus nerka"
+ icon_state = "salmon-swim"
+ icon_living = "salmon-swim"
+ icon_dead = "salmon-dead"
+
+/mob/living/simple_mob/animal/passive/fish/perch
+ name = "perch"
+ tt_desc = "E Perca flavescens"
+ icon_state = "perch-swim"
+ icon_living = "perch-swim"
+ icon_dead = "perch-dead"
+
+/mob/living/simple_mob/animal/passive/fish/pike
+ name = "pike"
+ tt_desc = "E Esox aquitanicus"
+ icon_state = "pike-swim"
+ icon_living = "pike-swim"
+ icon_dead = "pike-dead"
+
+/mob/living/simple_mob/animal/passive/fish/koi
+ name = "koi"
+ tt_desc = "E Cyprinus rubrofuscus"
+ icon_state = "koi-swim"
+ icon_living = "koi-swim"
+ icon_dead = "koi-dead"
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm
new file mode 100644
index 0000000000..adb2ea83ca
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm
@@ -0,0 +1,24 @@
+/mob/living/simple_mob/animal/passive/lizard
+ name = "lizard"
+ desc = "A cute, tiny lizard."
+ tt_desc = "E Anolis cuvieri"
+
+ icon_state = "lizard"
+ icon_living = "lizard"
+ icon_dead = "lizard-dead"
+
+ health = 5
+ maxHealth = 5
+ mob_size = MOB_MINISCULE
+
+ response_help = "pets"
+ response_disarm = "shoos"
+ response_harm = "stomps on"
+
+ attacktext = list("bitten")
+ melee_damage_lower = 1
+ melee_damage_upper = 2
+
+ speak_emote = list("hisses")
+
+ say_list_type = /datum/say_list/lizard
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm
new file mode 100644
index 0000000000..6fc73fc5f9
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm
@@ -0,0 +1,29 @@
+/mob/living/simple_mob/animal/passive/yithian
+ name = "yithian"
+ desc = "A friendly creature vaguely resembling an oversized snail without a shell."
+ tt_desc = "J Escargot escargot" // a product of Jade, which is a planet that totally exists
+
+ icon_state = "yithian"
+ icon_living = "yithian"
+ icon_dead = "yithian_dead"
+ icon = 'icons/jungle.dmi'
+
+ // Same stats as lizards.
+ health = 5
+ maxHealth = 5
+ mob_size = MOB_MINISCULE
+
+/mob/living/simple_mob/animal/passive/tindalos
+ name = "tindalos"
+ desc = "It looks like a large, flightless grasshopper."
+ tt_desc = "J Locusta bruchus"
+
+ icon_state = "tindalos"
+ icon_living = "tindalos"
+ icon_dead = "tindalos_dead"
+ icon = 'icons/jungle.dmi'
+
+ // Same stats as lizards.
+ health = 5
+ maxHealth = 5
+ mob_size = MOB_MINISCULE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
new file mode 100644
index 0000000000..70afdaf910
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
@@ -0,0 +1,115 @@
+/mob/living/simple_mob/animal/passive/mouse
+ name = "mouse"
+ real_name = "mouse"
+ desc = "It's a small rodent."
+ tt_desc = "E Mus musculus"
+ icon_state = "mouse_gray"
+ item_state = "mouse_gray"
+ icon_living = "mouse_gray"
+ icon_dead = "mouse_gray_dead"
+
+ maxHealth = 5
+ health = 5
+
+ mob_size = MOB_MINISCULE
+ pass_flags = PASSTABLE
+// can_pull_size = ITEMSIZE_TINY
+// can_pull_mobs = MOB_PULL_NONE
+ layer = MOB_LAYER
+ density = 0
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "stamps on"
+
+ min_oxy = 16 //Require atleast 16kPA oxygen
+ minbodytemp = 223 //Below -50 Degrees Celcius
+ maxbodytemp = 323 //Above 50 Degrees Celcius
+
+ has_langs = list("Mouse")
+
+ holder_type = /obj/item/weapon/holder/mouse
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ say_list_type = /datum/say_list/mouse
+
+ var/body_color //brown, gray and white, leave blank for random
+
+/mob/living/simple_mob/animal/passive/mouse/New()
+ ..()
+
+ verbs += /mob/living/proc/ventcrawl
+ verbs += /mob/living/proc/hide
+
+ if(name == initial(name))
+ name = "[name] ([rand(1, 1000)])"
+ real_name = name
+
+ if(!body_color)
+ body_color = pick( list("brown","gray","white") )
+ icon_state = "mouse_[body_color]"
+ item_state = "mouse_[body_color]"
+ icon_living = "mouse_[body_color]"
+ icon_dead = "mouse_[body_color]_dead"
+ icon_rest = "mouse_[body_color]_sleep"
+ desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
+
+/mob/living/simple_mob/animal/passive/mouse/Crossed(AM as mob|obj)
+ if( ishuman(AM) )
+ if(!stat)
+ var/mob/M = AM
+ M.visible_message("\icon[src] Squeek!")
+ playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1)
+ ..()
+
+/mob/living/simple_mob/animal/passive/mouse/death()
+ layer = MOB_LAYER
+ playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 35, 1)
+ if(client)
+ client.time_died_as_mouse = world.time
+ ..()
+
+/mob/living/simple_mob/animal/passive/mouse/cannot_use_vents()
+ return
+
+/mob/living/simple_mob/animal/passive/mouse/proc/splat()
+ src.health = 0
+ src.stat = DEAD
+ src.icon_dead = "mouse_[body_color]_splat"
+ src.icon_state = "mouse_[body_color]_splat"
+ layer = MOB_LAYER
+ if(client)
+ client.time_died_as_mouse = world.time
+
+/*
+ * Mouse types
+ */
+
+/mob/living/simple_mob/animal/passive/mouse/white
+ body_color = "white"
+ icon_state = "mouse_white"
+
+/mob/living/simple_mob/animal/passive/mouse/gray
+ body_color = "gray"
+ icon_state = "mouse_gray"
+
+/mob/living/simple_mob/animal/passive/mouse/brown
+ body_color = "brown"
+ icon_state = "mouse_brown"
+
+//TOM IS ALIVE! SQUEEEEEEEE~K :)
+/mob/living/simple_mob/animal/passive/mouse/brown/Tom
+ name = "Tom"
+ desc = "Jerry the cat is not amused."
+
+/mob/living/simple_mob/animal/passive/mouse/brown/Tom/New()
+ ..()
+ // Change my name back, don't want to be named Tom (666)
+ name = initial(name)
+
+
+// Mouse noises
+/datum/say_list/mouse
+ speak = list("Squeek!","SQUEEK!","Squeek?")
+ emote_hear = list("squeeks","squeaks","squiks")
+ emote_see = list("runs in a circle", "shakes", "scritches at something")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm
new file mode 100644
index 0000000000..c488d1ed28
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm
@@ -0,0 +1,5 @@
+// Passive mobs can't attack things, and will run away instead.
+// They can also be displaced by all mobs.
+/mob/living/simple_mob/animal/passive
+ ai_holder_type = /datum/ai_holder/simple_mob/passive
+ mob_bump_flag = 0
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm
new file mode 100644
index 0000000000..7fcd020f8e
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm
@@ -0,0 +1,27 @@
+/mob/living/simple_mob/animal/passive/penguin
+ name = "penguin"
+ desc = "An ungainly, waddling, cute, and VERY well-dressed bird."
+ tt_desc = "Aptenodytes forsteri"
+ icon_state = "penguin"
+ icon_living = "penguin"
+ icon_dead = "penguin_dead"
+
+ maxHealth = 20
+ health = 20
+ minbodytemp = 175 // Same as Sif mobs.
+
+ response_help = "pets"
+ response_disarm = "pushes aside"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 10
+ melee_damage_upper = 15
+ attacktext = list("pecked")
+
+ has_langs = list("Bird")
+
+/mob/living/simple_mob/animal/passive/penguin/tux
+ name = "Tux"
+ desc = "A penguin that has been known to associate with gnus."
+ speak_emote = list("interjects")
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm
new file mode 100644
index 0000000000..5e77a57a3c
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm
@@ -0,0 +1,93 @@
+// Base bird type.
+
+/mob/living/simple_mob/animal/passive/bird
+ name = "bird"
+ desc = "A domesticated bird. Tweet tweet!"
+ player_msg = "You are able to fly."
+
+ icon = 'icons/mob/birds.dmi'
+ icon_state = "parrot"
+ item_state = null
+ icon_rest = "parrot-held"
+ icon_dead = "parrot-dead"
+
+ pass_flags = PASSTABLE
+
+ health = 30
+ maxHealth = 30
+ melee_damage_lower = 3
+ melee_damage_upper = 3
+
+ movement_cooldown = 0
+ hovering = TRUE // Birds can fly.
+ softfall = TRUE
+ parachuting = TRUE
+
+ attacktext = list("claws", "pecks")
+ speak_emote = list("chirps", "caws")
+ has_langs = list("Bird")
+ response_help = "pets"
+ response_disarm = "gently moves aside"
+ response_harm = "swats"
+
+ say_list_type = /datum/say_list/bird
+ holder_type = /obj/item/weapon/holder/bird
+
+/datum/say_list/bird
+ speak = list("Chirp!","Caw!","Screech!","Squawk!")
+ emote_hear = list("chirps","caws")
+ emote_see = list("shakes their head", "ruffles their feathers")
+
+/obj/item/weapon/holder/bird
+ name = "bird"
+ desc = "It's a bird!"
+ icon_state = null
+ item_icons = null
+ w_class = ITEMSIZE_SMALL
+
+/obj/item/weapon/holder/bird/sync(var/mob/living/simple_mob/SM)
+ ..()
+ icon_state = SM.icon_rest // Looks better if the bird isn't flapping constantly in the UI.
+
+// Subtypes for birbs.
+
+/mob/living/simple_mob/animal/passive/bird/black_bird
+ name = "common blackbird"
+ desc = "A species of bird, both the males and females are known to be territorial on their breeding grounds."
+ icon_state = "commonblackbird"
+ icon_dead = "commonblackbird-dead"
+ tt_desc = "E Turdus merula"
+ icon_scale = 0.5
+
+/mob/living/simple_mob/animal/passive/bird/azure_tit
+ name = "azure tit"
+ desc = "A species of bird, colored blue and white."
+ icon_state = "azuretit"
+ icon_dead = "azuretit-dead"
+ tt_desc = "E Cyanistes cyanus"
+ icon_scale = 0.5
+
+/mob/living/simple_mob/animal/passive/bird/european_robin
+ name = "european robin"
+ desc = "A species of bird, they have been studied for their sense of magnetoreception."
+ icon_state = "europeanrobin"
+ icon_dead = "europeanrobin-dead"
+ tt_desc = "E Erithacus rubecula"
+ icon_scale = 0.5
+
+/mob/living/simple_mob/animal/passive/bird/goldcrest
+ name = "goldcrest"
+ desc = "A species of bird, they were once called 'king of the birds' in ancient human folklore, for their golden crest. \
+ Today, their scientific name still elude towards this, with regulus, meaning petty king."
+ icon_state = "goldcrest"
+ icon_dead = "goldcrest-dead"
+ tt_desc = "E Regulus regulus"
+ icon_scale = 0.5
+
+/mob/living/simple_mob/animal/passive/bird/ringneck_dove
+ name = "ringneck dove"
+ desc = "A species of bird. They are also known as the barbary dove, and have a distinct ring-like shape around the back of their neck."
+ icon_state = "ringneckdove"
+ icon_dead = "ringneckdove-dead"
+ tt_desc = "E Streptopelia risoria" // This is actually disputed IRL but since we can't tell the future it'll stay the same for 500+ years.
+ icon_scale = 0.5
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm
new file mode 100644
index 0000000000..6ded938dff
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm
@@ -0,0 +1,136 @@
+/mob/living/simple_mob/animal/passive/cat
+ name = "cat"
+ desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
+ tt_desc = "E Felis silvestris catus"
+ icon_state = "cat2"
+ item_state = "cat2"
+ icon_living = "cat2"
+ icon_dead = "cat2_dead"
+ icon_rest = "cat2_rest"
+
+ movement_cooldown = 0.5 SECONDS
+
+ see_in_dark = 6 // Not sure if this actually works.
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+
+ holder_type = /obj/item/weapon/holder/cat
+ mob_size = MOB_SMALL
+
+ has_langs = list("Cat")
+
+ var/mob/living/friend = null // Our best pal, who we'll follow. Meow.
+
+/mob/living/simple_mob/animal/passive/cat/handle_special()
+ if(!stat && prob(2)) // spooky
+ var/mob/observer/dead/spook = locate() in range(src, 5)
+ if(spook)
+ var/turf/T = get_turf(spook)
+ var/list/visible = list()
+ for(var/obj/O in T.contents)
+ if(!O.invisibility && O.name)
+ visible += O
+ if(visible.len)
+ var/atom/A = pick(visible)
+ visible_emote("suddenly stops and stares at something unseen[istype(A) ? " near [A]":""].")
+
+// Instakills mice.
+/mob/living/simple_mob/animal/passive/cat/apply_melee_effects(var/atom/A)
+ if(ismouse(A))
+ var/mob/living/simple_mob/animal/passive/mouse/mouse = A
+ if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something.
+ mouse.splat()
+ visible_emote(pick("bites \the [mouse]!", "toys with \the [mouse].", "chomps on \the [mouse]!"))
+ else
+ ..()
+
+/mob/living/simple_mob/animal/passive/cat/IIsAlly(mob/living/L)
+ if(L == friend) // Always be pals with our special friend.
+ return TRUE
+
+ . = ..()
+
+ if(.) // We're pals, but they might be a dirty mouse...
+ if(ismouse(L))
+ return FALSE // Cats and mice can never get along.
+
+/mob/living/simple_mob/animal/passive/cat/verb/become_friends()
+ set name = "Become Friends"
+ set category = "IC"
+ set src in view(1)
+
+ var/mob/living/L = usr
+ if(!istype(L))
+ return // Fuck off ghosts.
+
+ if(friend)
+ if(friend == usr)
+ to_chat(L, span("notice", "\The [src] is already your friend! Meow!"))
+ return
+ else
+ to_chat(L, span("warning", "\The [src] ignores you."))
+ return
+
+ friend = L
+ face_atom(L)
+ to_chat(L, span("notice", "\The [src] is now your friend! Meow."))
+ visible_emote(pick("nuzzles [friend].", "brushes against [friend].", "rubs against [friend].", "purrs."))
+
+ if(has_AI())
+ var/datum/ai_holder/AI = ai_holder
+ AI.set_follow(friend)
+
+
+//RUNTIME IS ALIVE! SQUEEEEEEEE~
+/mob/living/simple_mob/animal/passive/cat/runtime
+ name = "Runtime"
+ desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally."
+ tt_desc = "E Felis silvestris medicalis" // a hypoallergenic breed produced by NT for... medical purposes? Sure.
+ gender = FEMALE
+ icon_state = "cat"
+ item_state = "cat"
+ icon_living = "cat"
+ icon_dead = "cat_dead"
+ icon_rest = "cat_rest"
+
+/mob/living/simple_mob/animal/passive/cat/kitten
+ name = "kitten"
+ desc = "D'aaawwww"
+ icon_state = "kitten"
+ item_state = "kitten"
+ icon_living = "kitten"
+ icon_dead = "kitten_dead"
+ gender = NEUTER
+
+/mob/living/simple_mob/animal/passive/cat/kitten/initialize()
+ if(gender == NEUTER)
+ gender = pick(MALE, FEMALE)
+ return ..()
+
+// Leaving this here for now.
+/obj/item/weapon/holder/cat/fluff/bones
+ name = "Bones"
+ desc = "It's Bones! Meow."
+ gender = MALE
+ icon_state = "cat3"
+
+/mob/living/simple_mob/animal/passive/cat/bones
+ name = "Bones"
+ desc = "That's Bones the cat. He's a laid back, black cat. Meow."
+ gender = MALE
+ icon_state = "cat3"
+ item_state = "cat3"
+ icon_living = "cat3"
+ icon_dead = "cat3_dead"
+ icon_rest = "cat3_rest"
+ holder_type = /obj/item/weapon/holder/cat/fluff/bones
+
+
+/datum/say_list/cat
+ speak = list("Meow!","Esp!","Purr!","HSSSSS")
+ emote_hear = list("meows","mews")
+ emote_see = list("shakes their head", "shivers")
+ say_maybe_target = list("Meow?","Mew?","Mao?")
+ say_got_target = list("MEOW!","HSSSS!","REEER!")
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm
new file mode 100644
index 0000000000..fbfafc426a
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm
@@ -0,0 +1,234 @@
+/mob/living/simple_mob/animal/passive/dog
+ name = "dog"
+ real_name = "dog"
+ desc = "It's a dog."
+ tt_desc = "E Canis lupus familiaris"
+ icon_state = "corgi"
+ icon_living = "corgi"
+ icon_dead = "corgi_dead"
+
+ health = 20
+ maxHealth = 20
+
+ response_help = "pets"
+ response_disarm = "bops"
+ response_harm = "kicks"
+
+ mob_size = MOB_SMALL
+
+ has_langs = list("Dog")
+
+ say_list_type = /datum/say_list/dog
+
+ meat_amount = 3
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi
+
+ var/obj/item/inventory_head
+ var/obj/item/inventory_back
+
+
+/mob/living/simple_mob/animal/passive/dog/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(istype(O, /obj/item/weapon/newspaper))
+ if(!stat)
+ for(var/mob/M in viewers(user, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("[user] baps [name] on the nose with the rolled up [O]")
+ spawn(0)
+ for(var/i in list(1,2,4,8,4,2,1,2))
+ set_dir(i)
+ sleep(1)
+ else
+ ..()
+
+/mob/living/simple_mob/animal/passive/dog/regenerate_icons()
+ overlays = list()
+
+ if(inventory_head)
+ var/head_icon_state = inventory_head.icon_state
+ if(health <= 0)
+ head_icon_state += "2"
+
+ var/icon/head_icon = image('icons/mob/corgi_head.dmi',head_icon_state)
+ if(head_icon)
+ overlays += head_icon
+
+ if(inventory_back)
+ var/back_icon_state = inventory_back.icon_state
+ if(health <= 0)
+ back_icon_state += "2"
+
+ var/icon/back_icon = image('icons/mob/corgi_back.dmi',back_icon_state)
+ if(back_icon)
+ overlays += back_icon
+
+ return
+
+
+
+
+/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
+ name = "corgi meat"
+ desc = "Tastes like... well, you know..."
+
+
+
+
+/datum/say_list/dog
+ speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
+ emote_hear = list("barks", "woofs", "yaps","pants")
+ emote_see = list("shakes its head", "shivers")
+
+// This exists so not every type of dog has to be a subtype of corgi, and in case we get more dog sprites
+/mob/living/simple_mob/animal/passive/dog/corgi
+ name = "corgi"
+ real_name = "corgi"
+ desc = "It's a corgi."
+ tt_desc = "E Canis lupus familiaris"
+ icon_state = "corgi"
+ icon_living = "corgi"
+ icon_dead = "corgi_dead"
+
+/mob/living/simple_mob/animal/passive/dog/corgi/puppy
+ name = "corgi puppy"
+ real_name = "corgi"
+ desc = "It's a corgi puppy."
+ icon_state = "puppy"
+ icon_living = "puppy"
+ icon_dead = "puppy_dead"
+
+//pupplies cannot wear anything.
+/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Topic(href, href_list)
+ if(href_list["remove_inv"] || href_list["add_inv"])
+ usr << "You can't fit this on [src]"
+ return
+ ..()
+
+/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar
+ name = "Bockscar"
+ real_name = "Bockscar"
+
+//IAN! SQUEEEEEEEEE~
+/mob/living/simple_mob/animal/passive/dog/corgi/Ian
+ name = "Ian"
+ real_name = "Ian" //Intended to hold the name without altering it.
+ gender = MALE
+ desc = "It's a corgi."
+ var/turns_since_scan = 0
+ var/obj/movement_target
+
+/mob/living/simple_mob/animal/passive/dog/corgi/Ian/Life()
+ ..()
+
+ //Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically.
+
+ //Feeding, chasing food, FOOOOODDDD
+ if(!stat && !resting && !buckled)
+ turns_since_scan++
+ if(turns_since_scan > 5)
+ turns_since_scan = 0
+ if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
+ movement_target = null
+ if( !movement_target || !(movement_target.loc in oview(src, 3)) )
+ movement_target = null
+ for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3))
+ if(isturf(S.loc) || ishuman(S.loc))
+ movement_target = S
+ break
+ if(movement_target)
+ step_to(src,movement_target,1)
+ sleep(3)
+ step_to(src,movement_target,1)
+ sleep(3)
+ step_to(src,movement_target,1)
+
+ if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds
+ if (movement_target.loc.x < src.x)
+ set_dir(WEST)
+ else if (movement_target.loc.x > src.x)
+ set_dir(EAST)
+ else if (movement_target.loc.y < src.y)
+ set_dir(SOUTH)
+ else if (movement_target.loc.y > src.y)
+ set_dir(NORTH)
+ else
+ set_dir(SOUTH)
+
+ if(isturf(movement_target.loc) )
+ UnarmedAttack(movement_target)
+ else if(ishuman(movement_target.loc) && prob(20))
+ visible_emote("stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.")
+
+ if(prob(1))
+ visible_emote(pick("dances around","chases their tail"))
+ spawn(0)
+ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
+ set_dir(i)
+ sleep(1)
+
+//LISA! SQUEEEEEEEEE~
+/mob/living/simple_mob/animal/passive/dog/corgi/Lisa
+ name = "Lisa"
+ real_name = "Lisa"
+ gender = FEMALE
+ desc = "It's a corgi with a cute pink bow."
+ icon_state = "lisa"
+ icon_living = "lisa"
+ icon_dead = "lisa_dead"
+ response_help = "pets"
+ response_disarm = "bops"
+ response_harm = "kicks"
+ var/turns_since_scan = 0
+ var/puppies = 0
+
+//Lisa already has a cute bow!
+/mob/living/simple_mob/animal/passive/dog/corgi/Lisa/Topic(href, href_list)
+ if(href_list["remove_inv"] || href_list["add_inv"])
+ to_chat(usr, "[src] already has a cute bow!")
+ return
+ ..()
+
+/mob/living/simple_mob/animal/passive/dog/corgi/Lisa/Life()
+ ..()
+
+ if(!stat && !resting && !buckled)
+ turns_since_scan++
+ if(turns_since_scan > 15)
+ turns_since_scan = 0
+ var/alone = TRUE
+ var/ian = FALSE
+ for(var/mob/M in oviewers(7, src))
+ if(istype(M, /mob/living/simple_mob/animal/passive/dog/corgi/Ian))
+ if(M.client)
+ alone = FALSE
+ break
+ else
+ ian = M
+ else
+ alone = FALSE
+ break
+ if(alone && ian && puppies < 4)
+ if(near_camera(src) || near_camera(ian))
+ return
+ new /mob/living/simple_mob/animal/passive/dog/corgi/puppy(loc)
+
+ if(prob(1))
+ visible_emote(pick("dances around","chases her tail"))
+ spawn(0)
+ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
+ set_dir(i)
+ sleep(1)
+
+// Tamaskans
+/mob/living/simple_mob/animal/passive/dog/tamaskan
+ name = "tamaskan"
+ real_name = "tamaskan"
+ desc = "It's a tamaskan."
+ icon_state = "tamaskan"
+ icon_living = "tamaskan"
+ icon_dead = "tamaskan_dead"
+
+/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice
+ name = "Spice"
+ real_name = "Spice" //Intended to hold the name without altering it.
+ gender = FEMALE
+ desc = "It's a tamaskan, the name Spice can be found on its collar."
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm
new file mode 100644
index 0000000000..bedd95e3ce
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm
@@ -0,0 +1,252 @@
+// Parrots can talk, and may repeat things it hears.
+/mob/living/simple_mob/animal/passive/bird/parrot
+ name = "parrot"
+ description_info = "You can give it a headset by clicking on it with a headset. \
+ To remove it, click the bird while on grab intent."
+ has_langs = list("Galactic Common", "Bird")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/passive/parrot
+
+ // A headset, so that talking parrots can yell at the crew over comms.
+ // If set to a type, on initialize it will be instantiated into that type.
+ var/obj/item/device/radio/headset/my_headset = null
+
+// Say list
+/datum/say_list/bird/poly
+ speak = list(
+ "Poly wanna cracker!",
+ "Check the singulo, you chucklefucks!",
+ "Wire the solars, you lazy bums!",
+ "WHO TOOK THE DAMN HARDSUITS?",
+ "OH GOD ITS FREE CALL THE SHUTTLE",
+ "Danger! Crystal hyperstructure instability!",
+ "CRYSTAL DELAMINATION IMMINENT.",
+ "Tweet tweet, I'm a Teshari.",
+ "Chitters.",
+ "Meteors have been detected on a collision course with the station!"
+ )
+
+// Lets the AI use headsets.
+// Player-controlled parrots will need to do it manually.
+/mob/living/simple_mob/animal/passive/bird/parrot/ISay(message)
+ if(my_headset && prob(50))
+ var/list/keys = list()
+ for(var/channel in my_headset.channels)
+ var/key = get_radio_key_from_channel(channel)
+ if(key)
+ keys += key
+ if(keys.len)
+ var/key_used = pick(keys)
+ return say("[key_used] [message]")
+ return say(message)
+
+// Ugly saycode so parrots can use their headsets.
+/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
+ ..()
+ if(message_mode)
+ if(my_headset && istype(my_headset, /obj/item/device/radio))
+ my_headset.talk_into(src, message, message_mode, verb, speaking)
+ used_radios += my_headset
+
+// Clicked on while holding an object.
+/mob/living/simple_mob/animal/passive/bird/parrot/attackby(obj/item/I, mob/user)
+ if(istype(I, /obj/item/device/radio/headset))
+ give_headset(I, user)
+ return
+ return ..()
+
+// Clicked on by empty hand.
+/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/living/L)
+ if(L.a_intent == I_GRAB && my_headset)
+ remove_headset(L)
+ else
+ ..()
+
+
+/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/device/radio/headset/new_headset, mob/living/user)
+ if(!istype(new_headset))
+ to_chat(user, span("warning", "\The [new_headset] isn't a headset."))
+ return
+ if(my_headset)
+ to_chat(user, span("warning", "\The [src] is already wearing \a [my_headset]."))
+ return
+ else
+ user.drop_item(new_headset)
+ my_headset = new_headset
+ new_headset.forceMove(src)
+ to_chat(user, span("warning", "You place \a [new_headset] on \the [src]. You monster."))
+ to_chat(src, span("notice", "\The [user] gives you \a [new_headset]. You should put it to good use immediately."))
+ return
+
+/mob/living/simple_mob/animal/passive/bird/parrot/proc/remove_headset(mob/living/user)
+ if(!my_headset)
+ to_chat(user, "\The [src] doesn't have a headset to remove, thankfully.")
+ else
+ ISay("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
+ my_headset.forceMove(get_turf(src))
+ user.put_in_hands(my_headset)
+ to_chat(user, span("notice", "You take away \the [src]'s [my_headset.name]. Finally."))
+ to_chat(src, span("warning", "\The [user] takes your [my_headset.name] away! How cruel!"))
+ my_headset = null
+
+/mob/living/simple_mob/animal/passive/bird/parrot/examine(mob/user)
+ ..()
+ if(my_headset)
+ to_chat(user, "It is wearing \a [my_headset].")
+
+/mob/living/simple_mob/animal/passive/bird/parrot/initialize()
+ if(my_headset)
+ my_headset = new my_headset(src)
+ return ..()
+
+// Subtypes.
+
+// Best Bird
+/mob/living/simple_mob/animal/passive/bird/parrot/poly
+ name = "Poly"
+ desc = "It's a parrot. An expert on quantum cracker theory."
+ icon_state = "poly"
+ icon_rest = "poly-held"
+ icon_dead = "poly-dead"
+ tt_desc = "E Ara macao"
+ my_headset = /obj/item/device/radio/headset/headset_eng
+ say_list_type = /datum/say_list/bird/poly
+
+// Best Bird with best headset.
+/mob/living/simple_mob/animal/passive/bird/parrot/poly/ultimate
+ my_headset = /obj/item/device/radio/headset/omni
+
+/mob/living/simple_mob/animal/passive/bird/parrot/kea
+ name = "kea"
+ desc = "A species of parrot. On Earth, they are unique among other parrots for residing in alpine climates. \
+ They are known to be intelligent and curious, which has made some consider them a pest."
+ icon_state = "kea"
+ icon_rest = "kea-held"
+ icon_dead = "kea-dead"
+ tt_desc = "E Nestor notabilis"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/eclectus
+ name = "eclectus"
+ desc = "A species of parrot, this species features extreme sexual dimorphism in their plumage's colors. \
+ A male eclectus has emerald green plumage, where as a female eclectus has red and purple plumage."
+ icon_state = "eclectus"
+ icon_rest = "eclectus-held"
+ icon_dead = "eclectus-dead"
+ tt_desc = "E Eclectus roratus"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/eclectus/initialize()
+ gender = pick(MALE, FEMALE)
+ if(gender == FEMALE)
+ icon_state = "eclectusf"
+ icon_rest = "eclectusf-held"
+ icon_dead = "eclectusf-dead"
+ return ..()
+
+/mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot
+ name = "grey parrot"
+ desc = "A species of parrot. This one is predominantly grey, but has red tail feathers."
+ icon_state = "agrey"
+ icon_rest = "agrey-held"
+ icon_dead = "agrey-dead"
+ tt_desc = "E Psittacus erithacus"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique
+ name = "black-headed caique"
+ desc = "A species of parrot, these birds have a distinct black color on their heads, distinguishing them from their relative Caiques."
+ icon_state = "bcaique"
+ icon_rest = "bcaique-held"
+ icon_dead = "bcaique-dead"
+ tt_desc = "E Pionites melanocephalus"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/white_caique
+ name = "white-bellied caique"
+ desc = "A species of parrot, they are also known as the Green-Thighed Parrot."
+ icon_state = "wcaique"
+ icon_rest = "wcaique-held"
+ icon_dead = "wcaique-dead"
+ tt_desc = "E Pionites leucogaster"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar
+ name = "budgerigar"
+ desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
+ This one is has its natural colors of green and yellow."
+ icon_state = "gbudge"
+ icon_rest = "gbudge-held"
+ icon_dead = "gbudge-dead"
+ tt_desc = "E Melopsittacus undulatus"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue
+ icon_state = "bbudge"
+ icon_rest = "bbudge-held"
+ icon_dead = "bbudge-dead"
+ desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
+ This one has a mutation which altered its color to be blue instead of green and yellow."
+
+/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen
+ icon_state = "bgbudge"
+ icon_rest = "bgbudge-held"
+ icon_dead = "bgbudge-dead"
+ desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
+ This one has a mutation which altered its color to be a mix of blue and green."
+
+/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel
+ name = "cockatiel"
+ desc = "A species of parrot. This one has a highly visible crest."
+ icon_state = "tiel"
+ icon_rest = "tiel-held"
+ icon_dead = "tiel-dead"
+ tt_desc = "E Nymphicus hollandicus"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white
+ icon_state = "wtiel"
+ icon_rest = "wtiel-held"
+ icon_dead = "wtiel-dead"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish
+ icon_state = "luttiel"
+ icon_rest = "luttiel-held"
+ icon_dead = "luttiel-dead"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey
+ icon_state = "blutiel" // idk why this is blu.
+ icon_rest = "blutiel-held"
+ icon_dead = "blutiel-dead"
+
+// This actually might be the yellow-crested cockatoo but idk.
+/mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo
+ name = "sulphur-crested cockatoo"
+ desc = "A species of parrot. This one has an expressive yellow crest. Their underwing and tail feathers are also yellow."
+ icon_state = "too"
+ icon_rest = "too-held"
+ icon_dead = "too-dead"
+ tt_desc = "E Cacatua galerita"
+
+// This was originally called 'hooded_too', which might not mean the unbrella cockatoo but idk.
+/mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo
+ name = "white cockatoo"
+ desc = "A species of parrot. This one is also known as the Umbrella Cockatoo, due to the semicircular shape of its crest."
+ icon_state = "utoo"
+ icon_rest = "utoo-held"
+ icon_dead = "utoo-dead"
+ tt_desc = "E Cacatua alba"
+
+/mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo
+ name = "pink cockatoo"
+ desc = "A species of parrot. This one is also known as Major Mitchell's cockatoo, \
+ in honor of a human surveyor and explorer who existed before humans fully explored their home planet."
+ icon_state = "mtoo"
+ icon_rest = "mtoo-held"
+ icon_dead = "mtoo-dead"
+ tt_desc = "E Lophochroa leadbeateri"
+
+
+// AI
+/datum/ai_holder/simple_mob/passive/parrot
+ speak_chance = 2
+ base_wander_delay = 8
+
+/datum/ai_holder/simple_mob/passive/parrot/on_hear_say(mob/living/speaker, message)
+ if(holder.stat || !holder.say_list || !message || speaker == holder)
+ return
+ var/datum/say_list/S = holder.say_list
+ S.speak |= message
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm
new file mode 100644
index 0000000000..fdd9f66ae5
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm
@@ -0,0 +1,35 @@
+// Diyaabs are rather weak, but tend to exist in large numbers.
+// They cooperate with other diyaabs, in order to swarm whoever decides to pick on the little fluffy critter.
+// A cleaving weapon like an axe will make short work of the pack.
+
+/mob/living/simple_mob/animal/sif/diyaab
+ name = "diyaab"
+ desc = "A small pack animal. Although omnivorous, it will hunt meat on occasion."
+ tt_desc = "S Choeros hirtus" //diyaab and shantak are technically reletives!
+
+ faction = "diyaab"
+
+ icon_state = "diyaab"
+ icon_living = "diyaab"
+ icon_dead = "diyaab_dead"
+ icon = 'icons/jungle.dmi'
+
+ maxHealth = 25
+ health = 25
+
+ movement_cooldown = 0
+
+ melee_damage_lower = 2
+ melee_damage_upper = 6
+ base_attack_cooldown = 1 SECOND
+ attack_sharp = 1 //Bleeds, but it shouldn't rip off a limb?
+ attacktext = list("gouged")
+
+ say_list_type = /datum/say_list/diyaab
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+/datum/say_list/diyaab
+ speak = list("Awrr?", "Aowrl!", "Worrl.")
+ emote_see = list("sniffs the air cautiously","looks around")
+ emote_hear = list("snuffles")
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm
new file mode 100644
index 0000000000..3b7f279653
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm
@@ -0,0 +1,102 @@
+/*
+ Hooligan Crabs are called so because they are rather curious and tend to follow people,
+ whether the people want them to or not, and sometimes causing vandalism by accident.
+ They're pretty strong and have strong melee armor, but won't attack first.
+ They unknowingly play a role in keeping the shoreline fairly safe, by killing whatever would attack other people.
+
+ They also have a slow, but very strong attack that is telegraphed. If it hits, it will briefly stun whatever got hit
+ and inflict a very large chunk of damage. If the thing was already stunned, the crab will 'throw' them away, to
+ hopefully prevent chainstuns forever.
+*/
+
+/mob/living/simple_mob/animal/sif/hooligan_crab
+ name = "hooligan crab"
+ desc = "A large, hard-shelled crustacean. This one is mostly grey. \
+ You probably shouldn't mess with it."
+ icon_state = "sif_crab"
+ icon_living = "sif_crab"
+ icon_dead = "sif_crab_dead"
+ icon_scale = 1.5
+
+ faction = "crabs"
+
+ maxHealth = 200
+ health = 200
+ movement_cooldown = 10
+ movement_sound = 'sound/weapons/heavysmash.ogg'
+ movement_shake_radius = 5
+
+ taser_kill = FALSE
+ armor = list(
+ "melee" = 40,
+ "bullet" = 20,
+ "laser" = 10,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+ armor_soak = list(
+ "melee" = 10,
+ "bullet" = 5,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+
+ mob_size = MOB_LARGE
+
+ melee_damage_lower = 22
+ melee_damage_upper = 35
+ attack_armor_pen = 35
+ attack_sharp = TRUE
+ attack_edge = TRUE
+ melee_attack_delay = 1 SECOND
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "kicks"
+ friendly = "pinches"
+ attacktext = list("clawed", "pinched", "crushed")
+ speak_emote = list("clicks")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/hooligan
+ say_list_type = /datum/say_list/crab
+
+ var/weaken_amount = 2 // Be careful with this number. High values will equal a permastun.
+
+// Stuns the thing that got hit briefly.
+/mob/living/simple_mob/animal/sif/hooligan_crab/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ var/was_stunned = L.incapacitated(INCAPACITATION_DISABLED)
+ L.Weaken(weaken_amount)
+
+ playsound(L, 'sound/effects/break_stone.ogg', 75, 1)
+ if(was_stunned) // Try to prevent chain-stuns by having them thrown.
+ var/throwdir = get_dir(src, L)
+ L.throw_at(get_edge_target_turf(L, throwdir), 5, 1, src)
+ visible_message(span("danger", "\The [src] hurls \the [L] away!"))
+ else
+ visible_message(span("danger", "\The [src] crushes \the [L]!"))
+
+// The AI for hooligan crabs. Follows people for awhile.
+/datum/ai_holder/simple_mob/melee/hooligan
+ hostile = FALSE
+ retaliate = TRUE
+ returns_home = TRUE
+ max_home_distance = 12
+ var/random_follow = TRUE // Turn off if you want to bus with crabs.
+
+/datum/ai_holder/simple_mob/melee/hooligan/handle_stance_strategical()
+ ..()
+ if(random_follow && stance == STANCE_IDLE && !leader)
+ if(prob(10))
+ for(var/mob/living/L in hearers(holder))
+ if(!istype(L, holder)) // Don't follow other hooligan crabs.
+ holder.visible_message("\The [holder] starts to follow \the [L].")
+ set_follow(L, rand(20 SECONDS, 40 SECONDS))
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm
new file mode 100644
index 0000000000..e8d56d6bb4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm
@@ -0,0 +1,48 @@
+// Saviks are dangerous, angry creatures that hit hard, and will berserk if losing a fight.
+
+/mob/living/simple_mob/animal/sif/savik
+ name = "savik"
+ tt_desc = "S Pistris tellus" //landshark
+ player_msg = "You have the ability to berserk at will, which will grant strong physical bonuses for \
+ a short period of time, however it will tire you and you will be much weaker for awhile after it expires."
+
+ faction = "savik"
+
+ icon_state = "savik"
+ icon_living = "savik"
+ icon_dead = "savik_dead"
+ icon = 'icons/jungle.dmi'
+
+ maxHealth = 125
+ health = 125
+
+ movement_cooldown = 0.5 SECONDS
+
+ melee_damage_lower = 15
+ melee_damage_upper = 35
+ attack_armor_pen = 15
+ attack_sharp = TRUE
+ attack_edge = TRUE
+ melee_attack_delay = 1 SECOND
+ attacktext = list("mauled")
+
+ say_list_type = /datum/say_list/savik
+
+/datum/say_list/savik
+ speak = list("Hruuugh!","Hrunnph")
+ emote_see = list("paws the ground","shakes its mane","stomps")
+ emote_hear = list("snuffles")
+
+/mob/living/simple_mob/animal/sif/savik/handle_special()
+ if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc))
+ if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently.
+ berserk()
+
+
+// So players can use it too.
+/mob/living/simple_mob/animal/sif/savik/verb/berserk()
+ set name = "Berserk"
+ set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards."
+ set category = "Abilities"
+
+ add_modifier(/datum/modifier/berserk, 30 SECONDS)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm
new file mode 100644
index 0000000000..0148a39954
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm
@@ -0,0 +1,70 @@
+// Shantaks are essentially sif wolves.
+
+/mob/living/simple_mob/animal/sif/shantak
+ name = "shantak"
+ desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. \
+ Don't be fooled by its beauty though."
+ tt_desc = "S Choeros shantak"
+
+ faction = "shantak"
+
+ icon_state = "shantak"
+ icon_living = "shantak"
+ icon_dead = "shantak_dead"
+ icon = 'icons/jungle.dmi'
+
+ maxHealth = 75
+
+ movement_cooldown = 5
+
+ melee_damage_lower = 6
+ melee_damage_upper = 14
+ base_attack_cooldown = 1 SECOND
+ melee_attack_delay = 0.5 SECONDS
+ attack_armor_pen = 5
+ attack_sharp = TRUE
+ attack_edge = TRUE
+ attacktext = list("gouged")
+
+ say_list_type = /datum/say_list/shantak
+
+/datum/say_list/shantak
+ speak = list("Shuhn.","Shrunnph?","Shunpf.")
+ emote_see = list("scratches the ground", "shakes out its mane", "clinks gently as it moves")
+
+
+// The pack leader.
+// Will command other shantaks to follow it.
+/mob/living/simple_mob/animal/sif/shantak/leader
+ name = "big shantak"
+ desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. \
+ This one seems bigger than the others, and has a commanding presence."
+ icon_scale = 1.5
+ maxHealth = 125
+ player_msg = "You have the ability to command other shantaks to follow you."
+
+/mob/living/simple_mob/animal/sif/shantak/leader/verb/rally_pack()
+ set name = "Rally Pack"
+ set desc = "Commands your fellow packmembers to follow you, the leader."
+ set category = "Abilities"
+
+ for(var/mob/living/simple_mob/animal/sif/shantak/S in hearers(7, src))
+ if(istype(S, /mob/living/simple_mob/animal/sif/shantak/leader)) // Leaders won't follow other leaders. Also avoids trying to follow ourselves.
+ continue
+ if(!S.ai_holder)
+ continue
+ if(S.faction != src.faction)
+ continue
+ var/datum/ai_holder/AI = S.ai_holder
+ AI.set_follow(src)
+
+// Variant that automatically commands nearby allies to follow it when created.
+// Suggested to spawn last so it can rally up all the shantaks easily before hunting for tasty explorers.
+/mob/living/simple_mob/animal/sif/shantak/leader/autofollow/initialize()
+ rally_pack()
+ return ..()
+
+
+// These ones only retaliate. Used for a PoI.
+/mob/living/simple_mob/animal/sif/shantak/retaliate
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm
new file mode 100644
index 0000000000..8d19324cf2
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm
@@ -0,0 +1,5 @@
+// Mobs intended to be on Sif. As such, they won't die to the cold.
+/mob/living/simple_mob/animal/sif
+ minbodytemp = 175
+ cold_resist = 0.75
+ heat_resist = -0.5
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm
new file mode 100644
index 0000000000..7de14dc6e7
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm
@@ -0,0 +1,118 @@
+/mob/living/simple_mob/animal/space/alien
+ name = "alien hunter"
+ desc = "Hiss!"
+ icon = 'icons/mob/alien.dmi'
+ icon_state = "alienh_running"
+ icon_living = "alienh_running"
+ icon_dead = "alien_l"
+ icon_gib = "syndicate_gib"
+ icon_rest = "alienh_sleep"
+
+ faction = "xeno"
+
+ mob_class = MOB_CLASS_ABERRATION
+
+ response_help = "pokes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ maxHealth = 100
+ health = 100
+
+ harm_intent_damage = 5
+ melee_damage_lower = 25
+ melee_damage_upper = 25
+ attack_sharp = TRUE
+ attack_edge = TRUE
+
+ attacktext = list("slashed")
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
+
+/mob/living/simple_mob/animal/space/alien/drone
+ name = "alien drone"
+ icon_state = "aliend_running"
+ icon_living = "aliend_running"
+ icon_dead = "aliend_l"
+ icon_rest = "aliend_sleep"
+ health = 60
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+
+/mob/living/simple_mob/animal/space/alien/sentinel
+ name = "alien sentinel"
+ icon_state = "aliens_running"
+ icon_living = "aliens_running"
+ icon_dead = "aliens_l"
+ icon_rest = "aliens_sleep"
+ health = 120
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+ projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
+ projectilesound = 'sound/weapons/pierce.ogg'
+
+/mob/living/simple_mob/animal/space/alien/sentinel/praetorian
+ name = "alien praetorian"
+ icon = 'icons/mob/64x64.dmi'
+ icon_state = "prat_s"
+ icon_living = "prat_s"
+ icon_dead = "prat_dead"
+ icon_rest = "prat_sleep"
+ maxHealth = 200
+ health = 200
+
+ pixel_x = -16
+ old_x = -16
+ meat_amount = 5
+
+/mob/living/simple_mob/animal/space/alien/queen
+ name = "alien queen"
+ icon_state = "alienq_running"
+ icon_living = "alienq_running"
+ icon_dead = "alienq_l"
+ icon_rest = "alienq_sleep"
+ health = 250
+ maxHealth = 250
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+ projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
+ projectilesound = 'sound/weapons/pierce.ogg'
+
+
+ movement_cooldown = 8
+
+/mob/living/simple_mob/animal/space/alien/queen/empress
+ name = "alien empress"
+ icon = 'icons/mob/64x64.dmi'
+ icon_state = "queen_s"
+ icon_living = "queen_s"
+ icon_dead = "queen_dead"
+ icon_rest = "queen_sleep"
+ maxHealth = 400
+ health = 400
+ meat_amount = 5
+
+ pixel_x = -16
+ old_x = -16
+
+/mob/living/simple_mob/animal/space/alien/queen/empress/mother
+ name = "alien mother"
+ icon = 'icons/mob/96x96.dmi'
+ icon_state = "empress_s"
+ icon_living = "empress_s"
+ icon_dead = "empress_dead"
+ icon_rest = "empress_rest"
+ maxHealth = 600
+ health = 600
+ meat_amount = 10
+ melee_damage_lower = 15
+ melee_damage_upper = 25
+
+ pixel_x = -32
+ old_x = -32
+
+/mob/living/simple_mob/animal/space/alien/death()
+ ..()
+ visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
+ playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm
new file mode 100644
index 0000000000..5244fd9b98
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm
@@ -0,0 +1,52 @@
+/mob/living/simple_mob/animal/space/bats
+ name = "space bat swarm"
+ desc = "A swarm of cute little blood sucking bats that looks pretty upset."
+ tt_desc = "N Bestia gregaria" //Nispean swarm bats, because of course Nisp has swarm bats
+ icon = 'icons/mob/bats.dmi'
+ icon_state = "bat"
+ icon_living = "bat"
+ icon_dead = "bat_dead"
+ icon_gib = "bat_dead"
+
+ faction = "scarybat"
+
+ maxHealth = 20
+ health = 20
+
+ attacktext = list("bites")
+ attack_sound = 'sound/weapons/bite.ogg'
+
+ response_help = "pets the"
+ response_disarm = "gently pushes aside the"
+ response_harm = "hits the"
+
+ harm_intent_damage = 10
+
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ attack_sharp = TRUE
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
+
+ has_langs = list("Mouse")
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+ say_list_type = /datum/say_list/mouse // Close enough
+
+ var/scare_chance = 15
+
+/mob/living/simple_mob/animal/space/bats/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(prob(scare_chance))
+ L.Stun(1)
+ L.visible_message("\the [src] scares \the [L]!")
+
+// Spookiest of bats
+/mob/living/simple_mob/animal/space/bats/cult
+ faction = "cult"
+ supernatural = TRUE
+
+/mob/living/simple_mob/animal/space/bats/cult/cultify()
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm
new file mode 100644
index 0000000000..e4199373bd
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm
@@ -0,0 +1,46 @@
+/mob/living/simple_mob/animal/space/bear
+ name = "space bear"
+ desc = "A product of Space Russia?"
+ tt_desc = "U Ursinae aetherius" //...bearspace? Maybe.
+ icon_state = "bear"
+ icon_living = "bear"
+ icon_dead = "bear_dead"
+ icon_gib = "bear_gib"
+
+ faction = "russian"
+
+ maxHealth = 125
+ health = 125
+
+ movement_cooldown = 0.5 SECONDS
+
+ melee_damage_lower = 15
+ melee_damage_upper = 35
+ attack_armor_pen = 15
+ attack_sharp = TRUE
+ attack_edge = TRUE
+ melee_attack_delay = 1 SECOND
+ attacktext = list("mauled")
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
+
+ say_list_type = /datum/say_list/bear
+
+/datum/say_list/bear
+ speak = list("RAWR!","Rawr!","GRR!","Growl!")
+ emote_see = list("stares ferociously", "stomps")
+ emote_hear = list("rawrs","grumbles","grawls", "growls", "roars")
+
+// Is it time to be mad?
+/mob/living/simple_mob/animal/space/bear/handle_special()
+ if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc))
+ if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently.
+ berserk()
+
+// So players can use it too.
+/mob/living/simple_mob/animal/space/bear/verb/berserk()
+ set name = "Berserk"
+ set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards."
+ set category = "Abilities"
+
+ add_modifier(/datum/modifier/berserk, 30 SECONDS)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm
new file mode 100644
index 0000000000..e1327f033b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm
@@ -0,0 +1,128 @@
+// Space carp show up as a random event to wreck hapless people in space or near windows.
+// They generally fit the archetype of 'fast but fragile'.
+// This is compensated by being in groups (usually).
+/mob/living/simple_mob/animal/space/carp
+ name = "space carp"
+ desc = "A ferocious, fang-bearing creature that resembles a fish."
+ icon_state = "carp"
+ icon_living = "carp"
+ icon_dead = "carp_dead"
+ icon_gib = "carp_gib"
+
+ faction = "carp"
+ maxHealth = 25
+ health = 25
+ movement_cooldown = 0 // Carp go fast
+ hovering = TRUE
+
+ response_help = "pets the"
+ response_disarm = "gently pushes aside the"
+ response_harm = "hits the"
+
+ melee_damage_lower = 7 // About 14 DPS.
+ melee_damage_upper = 7
+ base_attack_cooldown = 10 // One attack a second.
+ attack_sharp = TRUE
+ attack_sound = 'sound/weapons/bite.ogg'
+ attacktext = list("bitten")
+
+ meat_amount = 1
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+ var/knockdown_chance = 15
+
+/mob/living/simple_mob/animal/space/carp/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(prob(knockdown_chance))
+ L.Weaken(3)
+ L.visible_message(span("danger", "\The [src] knocks down \the [L]!"))
+
+// Subtypes.
+
+// Won't wander away.
+/mob/living/simple_mob/animal/space/carp/event
+ ai_holder_type = /datum/ai_holder/simple_mob/event
+
+
+/mob/living/simple_mob/animal/space/carp/large
+ name = "elder carp"
+ desc = "An older, more matured carp. Few survive to this age due to their aggressiveness."
+ icon = 'icons/mob/64x32.dmi'
+ icon_state = "shark"
+ icon_living = "shark"
+ icon_dead = "shark_dead"
+
+ maxHealth = 50
+ health = 50
+ movement_cooldown = 5 // Slower than the younger carp.
+ mob_size = MOB_LARGE
+
+ pixel_x = -16
+ default_pixel_x = -16
+
+ meat_amount = 3
+
+
+/mob/living/simple_mob/animal/space/carp/large/huge
+ name = "great white carp"
+ desc = "A very rare breed of carp- and a very aggressive one."
+ icon = 'icons/mob/64x64.dmi'
+ icon_dead = "megacarp_dead"
+ icon_living = "megacarp"
+ icon_state = "megacarp"
+
+ maxHealth = 230
+ health = 230
+ movement_cooldown = 10
+
+ melee_damage_lower = 15 // About 20 DPS.
+ melee_damage_upper = 25
+
+ pixel_y = -16
+ default_pixel_y = -16
+
+ meat_amount = 10
+
+
+/mob/living/simple_mob/animal/space/carp/holographic
+ name = "holographic carp"
+ desc = "An obviously holographic, but still ferocious looking carp."
+ // Might be worth using a filter similar to AI holograms in the future.
+ icon = 'icons/mob/AI.dmi'
+ icon_state = "holo4"
+ icon_living = "holo4"
+ icon_dead = "holo4"
+ alpha = 127
+ icon_gib = null
+ meat_amount = 0
+ meat_type = null
+
+ mob_class = MOB_CLASS_PHOTONIC // Xeno-taser won't work on this as its not a 'real' carp.
+
+/mob/living/simple_mob/animal/space/carp/holographic/initialize()
+ set_light(2) // Hologram lighting.
+ return ..()
+
+// Presumably the holodeck emag code requires this.
+// Pass TRUE to make safe. Pass FALSE to make unsafe.
+/mob/living/simple_mob/animal/space/carp/holographic/proc/set_safety(safe)
+ if(!isnull(get_AI_stance())) // Will return null if lacking an AI holder or a player is controlling it w/o autopilot var.
+ ai_holder.hostile = !safe // Inverted so safe = TRUE means hostility = FALSE.
+ ai_holder.forget_everything() // Reset state so it'll stop chewing on its target.
+
+// Called on death.
+/mob/living/simple_mob/animal/space/carp/holographic/proc/derez()
+ visible_message(span("notice", "\The [src] fades away!"))
+ qdel(src)
+
+/mob/living/simple_mob/animal/space/carp/holographic/gib()
+ derez() // Holograms can't gib.
+
+/mob/living/simple_mob/animal/space/carp/holographic/death()
+ ..()
+ derez()
+
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm
new file mode 100644
index 0000000000..43d159a9f0
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm
@@ -0,0 +1,44 @@
+/mob/living/simple_mob/animal/space/goose
+ name = "goose"
+ desc = "It looks pretty angry!"
+ tt_desc = "E Branta canadensis" //that iconstate is just a regular goose
+ icon_state = "goose"
+ icon_living = "goose"
+ icon_dead = "goose_dead"
+
+ faction = "geese"
+
+ maxHealth = 30
+ health = 30
+
+ response_help = "pets the"
+ response_disarm = "gently pushes aside the"
+ response_harm = "hits the"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 5 //they're meant to be annoying, not threatening.
+ melee_damage_upper = 5 //unless there's like a dozen of them, then you're screwed.
+ attacktext = list("pecked")
+ attack_sound = 'sound/weapons/bite.ogg'
+
+ has_langs = list("Bird")
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
+
+/datum/say_list/goose
+ speak = list("HONK!")
+ emote_hear = list("honks loudly!")
+ say_maybe_target = list("Honk?")
+ say_got_target = list("HONK!!!")
+
+/mob/living/simple_mob/animal/space/goose/handle_special()
+ if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc))
+ if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently.
+ berserk()
+
+/mob/living/simple_mob/animal/space/goose/verb/berserk()
+ set name = "Berserk"
+ set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards."
+ set category = "Abilities"
+
+ add_modifier(/datum/modifier/berserk, 30 SECONDS)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm
new file mode 100644
index 0000000000..b7f77e6410
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm
@@ -0,0 +1,15 @@
+// 'Space' mobs don't care about atmos (like carp)
+/mob/living/simple_mob/animal/space
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+// They can also, you know, move around, in space
+/mob/living/simple_mob/animal/space/Process_Spacemove(var/check_drift = 0)
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm
new file mode 100644
index 0000000000..2d700646ae
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm
@@ -0,0 +1,62 @@
+// Blob simple_mobs generally get made from the blob random event.
+// They're considered slimes for the purposes of attack bonuses from certain weapons.
+
+// Do not spawn, this is a base type.
+/mob/living/simple_mob/blob
+ icon = 'icons/mob/blob.dmi'
+ pass_flags = PASSBLOB | PASSTABLE
+ faction = "blob"
+
+ heat_damage_per_tick = 0
+ cold_damage_per_tick = 0
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ taser_kill = FALSE
+
+ var/mob/observer/blob/overmind = null
+ var/obj/structure/blob/factory/factory = null
+
+ mob_class = MOB_CLASS_SLIME
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+/mob/living/simple_mob/blob/speech_bubble_appearance()
+ return "slime"
+
+/mob/living/simple_mob/blob/update_icons()
+ if(overmind)
+ color = overmind.blob_type.complementary_color
+ else
+ color = null
+ ..()
+
+/mob/living/simple_mob/blob/Destroy()
+ if(overmind)
+ overmind.blob_mobs -= src
+ return ..()
+
+/mob/living/simple_mob/blob/blob_act(obj/structure/blob/B)
+ if(!overmind && B.overmind)
+ overmind = B.overmind
+ update_icon()
+
+ if(stat != DEAD && health < maxHealth)
+ adjustBruteLoss(-maxHealth*0.0125)
+ adjustFireLoss(-maxHealth*0.0125)
+
+/mob/living/simple_mob/blob/CanPass(atom/movable/mover, turf/target)
+ if(istype(mover, /obj/structure/blob)) // Don't block blobs from expanding onto a tile occupied by a blob mob.
+ return TRUE
+ return ..()
+
+/mob/living/simple_mob/blob/Process_Spacemove()
+ for(var/obj/structure/blob/B in range(1, src))
+ return TRUE
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
new file mode 100644
index 0000000000..fd91b00b33
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
@@ -0,0 +1,148 @@
+// Spores are made from blob factories.
+// They are very weak and expendable, but can overwhelm when a lot of them are together.
+// When attacking, spores will hit harder if near other friendly spores.
+// Some blobs can infest dead non-robotic mobs, making them into Not Zombies.
+
+/mob/living/simple_mob/blob/spore
+ name = "blob spore"
+ desc = "A floating, fragile spore."
+
+ icon_state = "blobpod"
+ icon_living = "blobpod"
+ glow_range = 3
+ glow_intensity = 5
+ layer = ABOVE_MOB_LAYER // Over the blob.
+
+ health = 30
+ maxHealth = 30
+ melee_damage_lower = 2
+ melee_damage_upper = 4
+ movement_cooldown = 0
+ hovering = TRUE
+
+ attacktext = list("slams into")
+ attack_sound = 'sound/effects/slime_squish.ogg'
+ say_list_type = /datum/say_list/spore
+
+ var/mob/living/carbon/human/infested = null // The human this thing is totally not making into a zombie.
+ var/can_infest = FALSE
+ var/is_infesting = FALSE
+
+/datum/say_list/spore
+ emote_see = list("sways", "inflates briefly")
+
+/datum/say_list/infested
+ emote_see = list("shambles around", "twitches", "stares")
+
+
+/mob/living/simple_mob/blob/spore/infesting
+ name = "infesting blob spore"
+ can_infest = TRUE
+
+/mob/living/simple_mob/blob/spore/weak
+ name = "fragile blob spore"
+ health = 15
+ maxHealth = 15
+ melee_damage_lower = 1
+ melee_damage_upper = 2
+
+/mob/living/simple_mob/blob/spore/initialize(mapload, var/obj/structure/blob/factory/my_factory)
+ if(istype(my_factory))
+ factory = my_factory
+ factory.spores += src
+ return ..()
+
+/mob/living/simple_mob/blob/spore/Destroy()
+ if(factory)
+ factory.spores -= src
+ factory = null
+ if(infested)
+ infested.forceMove(get_turf(src))
+ visible_message(span("warning", "\The [infested] falls to the ground as the blob spore bursts."))
+ infested = null
+ return ..()
+
+/mob/living/simple_mob/blob/spore/death(gibbed, deathmessage = "bursts!")
+ if(overmind)
+ overmind.blob_type.on_spore_death(src)
+ ..(gibbed, deathmessage)
+ qdel(src)
+
+/mob/living/simple_mob/blob/spore/update_icons()
+ ..() // This will cut our overlays.
+
+ if(overmind)
+ color = overmind.blob_type.complementary_color
+ glow_color = color
+ glow_toggle = TRUE
+ else
+ color = null
+ glow_color = null
+ glow_toggle = FALSE
+
+ if(is_infesting)
+ icon = infested.icon
+ copy_overlays(infested)
+ // overlays = infested.overlays
+ var/mutable_appearance/blob_head_overlay = mutable_appearance('icons/mob/blob.dmi', "blob_head")
+ if(overmind)
+ blob_head_overlay.color = overmind.blob_type.complementary_color
+ color = initial(color)//looks better.
+ // overlays += blob_head_overlay
+ add_overlay(blob_head_overlay, TRUE)
+
+/mob/living/simple_mob/blob/spore/handle_special()
+ ..()
+ if(can_infest && !is_infesting && isturf(loc))
+ for(var/mob/living/carbon/human/H in view(src,1))
+ if(H.stat != DEAD) // We want zombies.
+ continue
+ if(H.isSynthetic()) // Not philosophical zombies.
+ continue
+ infest(H)
+ break
+
+ if(factory && z != factory.z) // This is to prevent spores getting lost in space and making the factory useless.
+ qdel(src)
+
+/mob/living/simple_mob/blob/spore/proc/infest(mob/living/carbon/human/H)
+ is_infesting = TRUE
+ if(H.wear_suit)
+ var/obj/item/clothing/suit/A = H.wear_suit
+ if(A.armor && A.armor["melee"])
+ maxHealth += A.armor["melee"] //That zombie's got armor, I want armor!
+
+ maxHealth += 40
+ health = maxHealth
+ name = "Infested [H.real_name]" // Not using the Z word.
+ desc = "A parasitic organism attached to a deceased body, controlling it directly as if it were a puppet."
+ melee_damage_lower += 8 // 10 total.
+ melee_damage_upper += 11 // 15 total.
+ attacktext = list("claws")
+
+ H.forceMove(src)
+ infested = H
+
+ say_list = new /datum/say_list/infested()
+
+ update_icons()
+ visible_message(span("warning", "The corpse of [H.name] suddenly rises!"))
+
+/mob/living/simple_mob/blob/spore/GetIdCard()
+ if(infested) // If we've infested someone, use their ID.
+ return infested.GetIdCard()
+
+/mob/living/simple_mob/blob/spore/apply_bonus_melee_damage(A, damage_to_do)
+ var/helpers = 0
+ for(var/mob/living/simple_mob/blob/spore/S in view(1, src))
+ if(S == src) // Don't count ourselves.
+ continue
+ if(!IIsAlly(S)) // Only friendly spores make us stronger.
+ continue
+ // Friendly spores contribute 1/4th of their averaged attack power to our attack.
+ damage_to_do += ((S.melee_damage_lower + S.melee_damage_upper) / 2) / 4
+ helpers++
+
+ if(helpers)
+ to_chat(src, span("notice", "Your attack is assisted by [helpers] other spore\s."))
+ return damage_to_do
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm
new file mode 100644
index 0000000000..b6f9520698
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm
@@ -0,0 +1,29 @@
+/mob/living/simple_mob/humanoid/clown
+ clown
+ name = "clown"
+ desc = "A denizen of clown planet"
+ tt_desc = "E Homo sapiens corydon" //this is an actual clown, as opposed to someone dressed up as one
+ icon_state = "clown"
+ icon_living = "clown"
+ icon_dead = "clown_dead"
+ icon_gib = "clown_gib"
+
+ faction = "clown"
+
+ loot_list = list(/obj/item/weapon/bikehorn = 100)
+
+ response_help = "pokes"
+ response_disarm = "gently pushes aside"
+ response_harm = "hits"
+
+ harm_intent_damage = 8
+ melee_damage_lower = 10
+ melee_damage_upper = 10
+ attacktext = list("attacked")
+ attack_sound = 'sound/items/bikehorn.ogg'
+
+ say_list_type = /datum/say_list/clown
+
+/datum/say_list/clown
+ speak = list("HONK", "Honk!", "Welcome to clown planet!")
+ emote_see = list("honks")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm
new file mode 100644
index 0000000000..6e17e2e1a0
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm
@@ -0,0 +1,26 @@
+/mob/living/simple_mob/humanoid
+ mob_class = MOB_CLASS_HUMANOID
+
+ // Generic humanoid mob tolerances
+ min_oxy = 5
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 1
+ min_co2 = 0
+ max_co2 = 5
+ min_n2 = 0
+ max_n2 = 0
+ unsuitable_atoms_damage = 15
+
+ health = 150 // Point of human crit, as of commenting
+ maxHealth = 150
+
+ // Most humans leave a corpse
+ var/corpse = null
+
+/mob/living/simple_mob/humanoid/death()
+ ..()
+ if(corpse)
+ new corpse (src.loc)
+ qdel(src)
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
new file mode 100644
index 0000000000..57d5986e80
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
@@ -0,0 +1,278 @@
+///////////////////////////////
+// Merc Mobs Go Here
+///////////////////////////////
+
+// Probably shouldn't use this directly, there are a bunch of sub-classes that are more complete.
+/mob/living/simple_mob/humanoid/merc
+ name = "mercenary"
+ desc = "A tough looking heavily-armed individual."
+ tt_desc = "E Homo sapiens"
+ icon_state = "syndicate"
+ icon_living = "syndicate"
+ icon_dead = "syndicate_dead"
+ icon_gib = "syndicate_gib"
+
+ faction = "syndicate"
+ movement_cooldown = 4
+
+ status_flags = 0
+
+ response_help = "pokes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 15 //Tac Knife damage
+ melee_damage_upper = 15
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("slashed", "stabbed")
+ armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
+
+ corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
+ loot_list = list(/obj/item/weapon/material/knife/tacknife = 100) // Might as well give it the knife
+
+ ai_holder_type = /datum/ai_holder/simple_mob/merc
+ say_list_type = /datum/say_list/merc
+
+ // Grenade special attack vars
+ var/grenade_type = /obj/item/weapon/grenade/concussion
+ special_attack_cooldown = 45 SECONDS
+ special_attack_min_range = 2
+ special_attack_max_range = 7
+
+////////////////////////////////
+// Grenade Attack
+////////////////////////////////
+
+// Any merc can use this, just set special_attack_charges to a positive value
+
+// Check if we should bother with the grenade
+/mob/living/simple_mob/humanoid/merc/should_special_attack(atom/A)
+ var/mob_count = 0 // Are there enough mobs to consider grenading?
+ var/turf/T = get_turf(A)
+ for(var/mob/M in range(T, 2))
+ if(M.faction == faction) // Don't grenade our friends
+ return FALSE
+ if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade
+ if(!M.stat) // Dead things don't warrant a grenade
+ mob_count ++
+ if(mob_count < 2)
+ return FALSE
+ else
+ return TRUE
+
+// Yes? Throw the grenade
+/mob/living/simple_mob/humanoid/merc/do_special_attack(atom/A)
+ set waitfor = FALSE
+ set_AI_busy(TRUE)
+
+ var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
+ if(istype(G))
+ G.throw_at(A, G.throw_range, G.throw_speed, src)
+ G.attack_self(src)
+ special_attack_charges = max(special_attack_charges-1, 0)
+
+ set_AI_busy(FALSE)
+
+
+////////////////////////////////
+// Merc AI Types
+////////////////////////////////
+/datum/ai_holder/simple_mob/merc
+ threaten = TRUE
+ returns_home = TRUE // Stay close to the base...
+ wander = TRUE // ... but "patrol" a little.
+
+/datum/ai_holder/simple_mob/merc/ranged
+ pointblank = TRUE // They get close? Just shoot 'em!
+ firing_lanes = TRUE // But not your buddies!
+ conserve_ammo = TRUE // And don't go wasting bullets!
+
+
+////////////////////////////////
+// Melee
+////////////////////////////////
+/mob/living/simple_mob/humanoid/merc/melee // Defined in case we add non-sword-and-board mercs
+ loot_list = list(/obj/item/weapon/material/knife/tacknife = 100)
+
+// Sword and Shield Merc
+/mob/living/simple_mob/humanoid/merc/melee/sword
+ icon_state = "syndicatemelee"
+ icon_living = "syndicatemelee"
+
+ melee_damage_lower = 30
+ melee_damage_upper = 30
+ attack_armor_pen = 50
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("slashed")
+
+ loot_list = list(/obj/item/weapon/melee/energy/sword/red = 100, /obj/item/weapon/shield/energy = 100)
+
+// They have a shield, so they try to block
+/mob/living/simple_mob/humanoid/merc/melee/sword/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(O.force)
+ if(prob(20))
+ visible_message("\The [src] blocks \the [O] with its shield!")
+ if(user)
+ ai_holder.react_to_attack(user)
+ return
+ else
+ ..()
+ else
+ to_chat(user, "This weapon is ineffective, it does no damage.")
+ visible_message("\The [user] gently taps [src] with \the [O].")
+
+/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/item/projectile/Proj)
+ if(!Proj) return
+ if(prob(35))
+ visible_message("[src] blocks [Proj] with its shield!")
+ if(Proj.firer)
+ ai_holder.react_to_attack(Proj.firer)
+ return
+ else
+ ..()
+
+
+////////////////////////////////
+// Ranged
+////////////////////////////////
+
+// Base Ranged Merc, so we don't have to redefine a million vars for every subtype. Uses a pistol.
+/mob/living/simple_mob/humanoid/merc/ranged
+ icon_state = "syndicateranged"
+ icon_living = "syndicateranged"
+ projectiletype = /obj/item/projectile/bullet/pistol/medium
+// casingtype = /obj/item/ammo_casing/spent //Makes infinite stacks of bullets when put in PoIs.
+ projectilesound = 'sound/weapons/Gunshot_light.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/colt = 100)
+
+ needs_reload = TRUE
+ reload_max = 7 // Not the best default, but it fits the pistol
+ ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged
+
+// C20r SMG
+/mob/living/simple_mob/humanoid/merc/ranged/smg
+ icon_state = "syndicateranged_smg"
+ icon_living = "syndicateranged_smg"
+
+ loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100)
+
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ reload_max = 20
+
+// Laser Rifle
+/mob/living/simple_mob/humanoid/merc/ranged/laser
+ icon_state = "syndicateranged_laser"
+ icon_living = "syndicateranged_laser"
+ projectiletype = /obj/item/projectile/beam/midlaser
+ projectilesound = 'sound/weapons/Laser.ogg'
+
+ loot_list = list(/obj/item/weapon/gun/energy/laser = 100)
+
+ reload_max = 10
+
+// Ion Rifle
+/mob/living/simple_mob/humanoid/merc/ranged/ionrifle
+ icon_state = "syndicateranged_ionrifle"
+ icon_living = "syndicateranged_ionrifle"
+ projectiletype = /obj/item/projectile/ion
+ projectilesound = 'sound/weapons/Laser.ogg'
+
+ loot_list = list(/obj/item/weapon/gun/energy/ionrifle = 100)
+
+ reload_max = 10
+
+// Grenadier, Basically a miniboss
+/mob/living/simple_mob/humanoid/merc/ranged/grenadier
+ icon_state = "syndicateranged_shotgun"
+ icon_living = "syndicateranged_shotgun"
+ projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectilesound = 'sound/weapons/gunshot/shotgun.ogg'
+
+ loot_list = list(/obj/item/weapon/gun/projectile/shotgun/pump = 100)
+
+ reload_max = 4
+ reload_time = 1.5 SECONDS // It's a shotgun, it takes a moment
+
+ special_attack_charges = 5
+
+
+////////////////////////////////
+// Space Mercs
+////////////////////////////////
+
+// Sword Space Merc
+/mob/living/simple_mob/humanoid/merc/melee/sword/space
+ name = "syndicate commando"
+ icon_state = "syndicatemeleespace"
+ icon_living = "syndicatemeleespace"
+
+ movement_cooldown = 0
+
+ armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
+
+/mob/living/simple_mob/humanoid/merc/melee/sword/space/Process_Spacemove(var/check_drift = 0)
+ return
+
+// Ranged Space Merc
+/mob/living/simple_mob/humanoid/merc/ranged/space
+ name = "syndicate sommando"
+ icon_state = "syndicaterangedpsace"
+ icon_living = "syndicaterangedpsace"
+
+ movement_cooldown = 0
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
+
+/mob/living/simple_mob/humanoid/merc/ranged/space/Process_Spacemove(var/check_drift = 0)
+ return
+
+////////////////////////////////
+// PoI Mercs
+////////////////////////////////
+
+// None of these drop weapons, until we have a better way to balance them
+/mob/living/simple_mob/humanoid/merc/melee/poi
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/melee/sword/poi
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/ranged/poi
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/ranged/smg/poi
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/ranged/laser/poi
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/ranged/ionrifle
+ loot_list = list()
+
+/mob/living/simple_mob/humanoid/merc/ranged/grenadier/poi
+ loot_list = list()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
new file mode 100644
index 0000000000..cc16cebedc
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
@@ -0,0 +1,40 @@
+/mob/living/simple_mob/humanoid/pirate
+ name = "Pirate"
+ desc = "Does what he wants cause a pirate is free."
+ tt_desc = "E Homo sapiens"
+ icon_state = "piratemelee"
+ icon_living = "piratemelee"
+ icon_dead = "piratemelee_dead"
+
+ faction = "pirate"
+
+ response_help = "pushes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 30
+ melee_damage_upper = 30
+ attack_armor_pen = 50
+ attack_sharp = 1
+ attack_edge = 1
+
+ attacktext = list("slashed")
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+
+ loot_list = list(/obj/item/weapon/melee/energy/sword/pirate = 100)
+
+ corpse = /obj/effect/landmark/mobcorpse/pirate
+
+/mob/living/simple_mob/humanoid/pirate/ranged
+ name = "Pirate Gunner"
+ icon_state = "pirateranged"
+ icon_living = "pirateranged"
+ icon_dead = "piratemelee_dead"
+
+ projectiletype = /obj/item/projectile/beam
+ projectilesound = 'sound/weapons/laser.ogg'
+
+ loot_list = list(/obj/item/weapon/gun/energy/laser = 100)
+
+ corpse = /obj/effect/landmark/mobcorpse/pirate/ranged
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm
new file mode 100644
index 0000000000..4a0bd00261
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm
@@ -0,0 +1,35 @@
+/mob/living/simple_mob/humanoid/russian
+ name = "russian"
+ desc = "For the Motherland!"
+ tt_desc = "E Homo sapiens"
+ icon_state = "russianmelee"
+ icon_living = "russianmelee"
+ icon_dead = "russianmelee_dead"
+ icon_gib = "syndicate_gib"
+
+ faction = "russian"
+
+ response_help = "pokes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+ attacktext = list("punched")
+
+ loot_list = list(/obj/item/weapon/material/knife = 100)
+
+ corpse = /obj/effect/landmark/mobcorpse/russian
+
+/mob/living/simple_mob/humanoid/russian/ranged
+ icon_state = "russianranged"
+ icon_living = "russianranged"
+
+ projectiletype = /obj/item/projectile/bullet
+ casingtype = /obj/item/ammo_casing/spent
+ projectilesound = 'sound/weapons/Gunshot.ogg'
+
+ loot_list = list(/obj/item/weapon/gun/projectile/revolver/mateba = 100)
+
+ corpse = /obj/effect/landmark/mobcorpse/russian/ranged
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
new file mode 100644
index 0000000000..60cc13fb2b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
@@ -0,0 +1,101 @@
+// Illusion type mobs pretend to be other things visually, and generally cannot be harmed as they're not 'real'.
+
+/mob/living/simple_mob/illusion
+ name = "illusion"
+ desc = "If you can read me, the game broke. Please report this to a coder."
+
+ resistance = 1000 // Holograms are tough.
+ heat_resist = 1
+ cold_resist = 1
+ shock_resist = 1
+ poison_resist = 1
+
+ movement_cooldown = 0
+ mob_bump_flag = 0 // If the illusion can't be swapped it will be obvious.
+
+ response_help = "pushes a hand through"
+ response_disarm = "tried to disarm"
+ response_harm = "tried to punch"
+
+ mob_class = MOB_CLASS_ILLUSION
+
+ ai_holder_type = /datum/ai_holder/simple_mob/inert/astar // Gets controlled manually by technomancers/admins, with AI pathfinding assistance.
+
+ var/atom/movable/copying = null // The thing we're trying to look like.
+ var/realistic = FALSE // If true, things like bullets and weapons will hit it, to be a bit more convincing from a distance.
+
+/mob/living/simple_mob/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance().
+ return
+
+/mob/living/simple_mob/illusion/proc/copy_appearance(atom/movable/thing_to_copy)
+ if(!thing_to_copy)
+ return FALSE
+ appearance = thing_to_copy.appearance
+ copying = thing_to_copy
+ density = thing_to_copy.density // So you can't bump into objects that aren't supposed to be dense.
+ return TRUE
+
+// Because we can't perfectly duplicate some examine() output, we directly examine the AM it is copying. It's messy but
+// this is to prevent easy checks from the opposing force.
+/mob/living/simple_mob/illusion/examine(mob/user)
+ if(copying)
+ copying.examine(user)
+ return
+ ..()
+
+/mob/living/simple_mob/illusion/bullet_act(obj/item/projectile/P)
+ if(!P)
+ return
+
+ if(realistic)
+ return ..()
+
+ return PROJECTILE_FORCE_MISS
+
+/mob/living/simple_mob/illusion/attack_hand(mob/living/carbon/human/M)
+ if(!realistic)
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message(span("warning", "\The [M]'s hand goes through \the [src]!"))
+ return
+ else
+ switch(M.a_intent)
+ if(I_HELP)
+ var/datum/gender/T = gender_datums[src.get_visible_gender()]
+ M.visible_message(
+ span("notice", "\The [M] hugs [src] to make [T.him] feel better!"), \
+ span("notice", "You hug [src] to make [T.him] feel better!")
+ ) // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it
+ playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+
+ if(I_DISARM)
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message(span("danger", "\The [M] attempted to disarm [src]!"))
+ M.do_attack_animation(src)
+
+ if(I_GRAB)
+ ..()
+
+ if(I_HURT)
+ adjustBruteLoss(harm_intent_damage)
+ M.visible_message(span("danger", "\The [M] [response_harm] \the [src]"))
+ M.do_attack_animation(src)
+
+/mob/living/simple_mob/illusion/hit_with_weapon(obj/item/I, mob/living/user, effective_force, hit_zone)
+ if(realistic)
+ return ..()
+
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ visible_message(span("warning", "\The [user]'s [I] goes through \the [src]!"))
+ return FALSE
+
+/mob/living/simple_mob/illusion/ex_act()
+ return
+
+// Try to have the same tooltip, or else it becomes really obvious which one is fake.
+/mob/living/simple_mob/illusion/get_nametag_name(mob/user)
+ if(copying)
+ return copying.get_nametag_name(user)
+
+/mob/living/simple_mob/illusion/get_nametag_desc(mob/user)
+ if(copying)
+ return copying.get_nametag_desc(user)
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm
new file mode 100644
index 0000000000..8731a06764
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm
@@ -0,0 +1,77 @@
+/*
+ Combat drones have a rapid ranged attack, and have a projectile shield.
+ They are rather slow, but attempt to 'kite' its target.
+ A solid hit with an EMP grenade will kill the shield instantly.
+*/
+
+/mob/living/simple_mob/mechanical/combat_drone
+ name = "combat drone"
+ desc = "An automated combat drone armed with state of the art weaponry and shielding."
+ icon_state = "drone"
+ icon_living = "drone"
+ icon_dead = "drone_dead"
+ has_eye_glow = TRUE
+
+ faction = "malf_drone"
+
+ maxHealth = 50 // Shield has 150 for total of 200.
+ health = 50
+ movement_cooldown = 5
+ hovering = TRUE
+
+ base_attack_cooldown = 5
+ projectiletype = /obj/item/projectile/beam/drone
+ projectilesound = 'sound/weapons/laser3.ogg'
+
+ response_help = "pokes"
+ response_disarm = "gently pushes aside"
+ response_harm = "hits"
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening
+ say_list_type = /datum/say_list/malf_drone
+
+ var/datum/effect/effect/system/ion_trail_follow/ion_trail = null
+ var/obj/item/shield_projector/shields = null
+
+/mob/living/simple_mob/mechanical/combat_drone/initialize()
+ ion_trail = new
+ ion_trail.set_up(src)
+ ion_trail.start()
+
+ shields = new /obj/item/shield_projector/rectangle/automatic/drone(src)
+ return ..()
+
+/mob/living/simple_mob/mechanical/combat_drone/Destroy()
+ QDEL_NULL(ion_trail)
+ QDEL_NULL(shields)
+ return ..()
+
+/mob/living/simple_mob/mechanical/combat_drone/death()
+ ..(null,"suddenly breaks apart.")
+ qdel(src)
+
+/mob/living/simple_mob/mechanical/combat_drone/Process_Spacemove(var/check_drift = 0)
+ return TRUE
+
+/obj/item/projectile/beam/drone
+ damage = 10
+
+/obj/item/shield_projector/rectangle/automatic/drone
+ shield_health = 150
+ max_shield_health = 150
+ shield_regen_delay = 10 SECONDS
+ shield_regen_amount = 10
+ size_x = 1
+ size_y = 1
+
+// A slightly easier drone, for POIs.
+// Difference is that it should not be faster than you.
+/mob/living/simple_mob/mechanical/combat_drone/lesser
+ desc = "An automated combat drone with an aged apperance."
+ movement_cooldown = 10
+
+
+// This one is the type spawned by the random event.
+// It won't wander away from its spawn point
+/mob/living/simple_mob/mechanical/combat_drone/event
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/event
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm
new file mode 100644
index 0000000000..cffa9cb134
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm
@@ -0,0 +1,152 @@
+// The GOLEM is a spell-flinging synthetic.
+
+/mob/living/simple_mob/mechanical/technomancer_golem
+ name = "unknown synthetic"
+ desc = "A rather unusual looking synthetic."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "golem"
+ health = 300
+ maxHealth = 300
+
+ faction = "golem"
+
+ response_help = "pets"
+ response_disarm = "pushes away"
+ response_harm = "punches"
+ harm_intent_damage = 3
+ friendly = "hugs"
+
+ melee_damage_lower = 30 // It has a built in esword.
+ melee_damage_upper = 30
+ attack_sound = 'sound/weapons/blade1.ogg'
+ attacktext = list("slashed")
+ melee_attack_delay = 0.5 SECONDS // Even has custom attack animations.
+ ranged_attack_delay = 0.5 SECONDS
+ special_attack_delay = 1 SECOND
+
+ special_attack_min_range = 0
+ special_attack_max_range = 7
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+ var/obj/item/weapon/technomancer_core/golem/core = null
+ var/obj/item/weapon/spell/active_spell = null // Shield and ranged spells
+ var/mob/living/master = null
+ var/casting = FALSE // Used to ensure the correct animation is played. Testing if a spell exists won't always work as some spells delete themselves upon use.
+
+ var/list/known_spells = list(
+ "beam" = /obj/item/weapon/spell/projectile/beam,
+ "chain lightning" = /obj/item/weapon/spell/projectile/chain_lightning,
+ "force missile" = /obj/item/weapon/spell/projectile/force_missile,
+ "ionic bolt" = /obj/item/weapon/spell/projectile/ionic_bolt,
+ "lightning" = /obj/item/weapon/spell/projectile/lightning,
+ "blink" = /obj/item/weapon/spell/blink,
+ "dispel" = /obj/item/weapon/spell/dispel,
+ "oxygenate" = /obj/item/weapon/spell/oxygenate,
+ "mend life" = /obj/item/weapon/spell/modifier/mend_life,
+ "mend synthetic" = /obj/item/weapon/spell/modifier/mend_synthetic,
+ "mend organs" = /obj/item/weapon/spell/mend_organs,
+ "purify" = /obj/item/weapon/spell/modifier/purify,
+ "resurrect" = /obj/item/weapon/spell/resurrect,
+ "passwall" = /obj/item/weapon/spell/passwall,
+ "repel missiles" = /obj/item/weapon/spell/modifier/repel_missiles,
+ "corona" = /obj/item/weapon/spell/modifier/corona,
+ "haste" = /obj/item/weapon/spell/modifier/haste
+ )
+
+/mob/living/simple_mob/mechanical/technomancer_golem/initialize()
+ core = new(src)
+ return ..()
+
+/mob/living/simple_mob/mechanical/technomancer_golem/Destroy()
+ qdel(core)
+ return ..()
+
+/mob/living/simple_mob/mechanical/technomancer_golem/unref_spell()
+ active_spell = null
+ return ..()
+
+/mob/living/simple_mob/mechanical/technomancer_golem/death()
+ ..()
+ visible_message("\The [src] disintegrates!")
+ new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ qdel(src)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/place_spell_in_hand(var/path)
+ if(!path || !ispath(path))
+ return FALSE
+ if(active_spell)
+ qdel(active_spell)
+
+ active_spell = new path(src)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/verb/test_giving_spells()
+ var/choice = input(usr, "What spell?", "Give spell") as null|anything in known_spells
+ if(choice)
+ place_spell_in_hand(known_spells[choice])
+ else
+ qdel(active_spell)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/get_technomancer_core()
+ return core
+
+/mob/living/simple_mob/mechanical/technomancer_golem/can_special_attack(atom/A)
+ if(active_spell) // Don't bother checking everything else if no spell is ready.
+ return ..()
+ return FALSE
+
+/mob/living/simple_mob/mechanical/technomancer_golem/should_special_attack(atom/A)
+ return instability < 50 // Don't kill ourselves by casting everything.
+
+
+/mob/living/simple_mob/mechanical/technomancer_golem/do_special_attack(atom/A)
+ var/proximity = Adjacent(A)
+ if(active_spell)
+ if(proximity && active_spell.cast_methods & CAST_MELEE) // Use melee method if available and close enough.
+ return active_spell.on_melee_cast(A, src)
+ else if(active_spell.cast_methods & CAST_RANGED) // Otherwise use ranged if possible. Will also work for point-blank range.
+ return active_spell.on_ranged_cast(A, src)
+ return ..()
+
+/mob/living/simple_mob/mechanical/technomancer_golem/melee_pre_animation(atom/A)
+ if(active_spell && active_spell.cast_methods & CAST_MELEE|CAST_RANGED) // If they're trying to melee-cast a spell, use the special animation instead.
+ special_pre_animation(A)
+ return
+
+ flick("golem_pre_melee", src) // To force the animation to restart.
+ icon_living = "golem_pre_melee" // The animation will hold after this point until melee_post_animation() gets called.
+ icon_state = "golem_pre_melee"
+ setClickCooldown(2)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/melee_post_animation(atom/A)
+ if(casting) // Some spells delete themselves when used, so we use a different variable set earlier instead.
+ special_post_animation(A)
+ return
+
+ flick("golem_post_melee", src)
+ icon_living = "golem"
+ icon_state = "golem"
+ setClickCooldown(6)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/ranged_pre_animation(atom/A)
+ flick("golem_pre_ranged", src)
+ icon_living = "golem_pre_ranged"
+ icon_state = "golem_pre_ranged"
+ setClickCooldown(5)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/ranged_post_animation(atom/A)
+ flick("golem_post_ranged", src)
+ icon_living = "golem"
+ icon_state = "golem"
+ setClickCooldown(5)
+
+/mob/living/simple_mob/mechanical/technomancer_golem/special_pre_animation(atom/A)
+ casting = TRUE
+ ranged_pre_animation(A) // Both have the same animation.
+
+/mob/living/simple_mob/mechanical/technomancer_golem/special_post_animation(atom/A)
+ casting = FALSE
+ ranged_post_animation(A)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
new file mode 100644
index 0000000000..fe43c856f9
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
@@ -0,0 +1,54 @@
+// Hivebots are tuned towards how many default lasers are needed to kill them.
+// As such, if laser damage is ever changed, you should change this define.
+#define LASERS_TO_KILL * 40
+
+/mob/living/simple_mob/mechanical/hivebot
+ name = "hivebot"
+ desc = "A robot. It appears to be somewhat resilient, but lacks a true weapon."
+ icon = 'icons/mob/hivebot.dmi'
+ icon_state = "basic"
+ icon_living = "basic"
+
+ faction = "hivebot"
+
+ maxHealth = 3 LASERS_TO_KILL
+ health = 3 LASERS_TO_KILL
+ water_resist = 0.5
+ movement_sound = 'sound/effects/servostep.ogg'
+
+ attacktext = list("clawed")
+ projectilesound = 'sound/weapons/Gunshot.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/hivebot
+ say_list_type = /datum/say_list/hivebot
+
+
+/mob/living/simple_mob/mechanical/hivebot/death()
+ ..()
+ visible_message(span("warning","\The [src] blows apart!"))
+ new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ qdel(src)
+
+// The hivebot's default projectile.
+/obj/item/projectile/bullet/hivebot
+ damage = 10
+ damage_type = BRUTE
+ sharp = FALSE
+ edge = FALSE
+
+/mob/living/simple_mob/mechanical/hivebot/swarm
+ name = "swarm hivebot"
+ desc = "A robot. It looks fragile and weak."
+ maxHealth = 1 LASERS_TO_KILL
+ health = 1 LASERS_TO_KILL
+ melee_damage_lower = 8
+ melee_damage_upper = 8
+
+/datum/ai_holder/simple_mob/hivebot
+ pointblank = TRUE
+ conserve_ammo = TRUE
+ firing_lanes = TRUE
+ can_flee = FALSE // Fearless dumb machines.
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm
new file mode 100644
index 0000000000..5e4d877751
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm
@@ -0,0 +1,147 @@
+// These hivebots are intended for general damage causing, at range.
+
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage
+ maxHealth = 2 LASERS_TO_KILL // 60 health
+ health = 2 LASERS_TO_KILL
+ projectiletype = /obj/item/projectile/bullet/hivebot
+
+// The regular ranged hivebot, that fires somewhat weak projectiles.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic
+ name = "ranged hivebot"
+ desc = "A robot with a makeshift integrated ballistic weapon."
+
+
+// This one shoots quickly, and is considerably more dangerous.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid
+ name = "rapid hivebot"
+ desc = "A robot with a crude but deadly integrated rifle."
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ player_msg = "You have a rapid fire attack."
+
+
+// Shoots deadly lasers.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser
+ name = "laser hivebot"
+ desc = "A robot with a photonic weapon integrated into itself."
+ projectiletype = /obj/item/projectile/beam/blue
+ projectilesound = 'sound/weapons/Laser.ogg'
+ player_msg = "You have a laser attack."
+
+
+// Shoots EMPs, to screw over other robots.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion
+ name = "ionic hivebot"
+ desc = "A robot with an electromagnetic pulse projector."
+ icon_state = "yellow"
+ icon_living = "yellow"
+
+ projectiletype = /obj/item/projectile/ion
+ projectilesound = 'sound/weapons/Laser.ogg'
+ player_msg = "You have a ranged ion attack, which is very strong against other synthetics.
\
+ Be careful to not hit yourself or your team, as it will affect you as well."
+
+// Beefy and ranged.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong
+ name = "strong hivebot"
+ desc = "A robot with a crude ballistic weapon and strong armor."
+ maxHealth = 4 LASERS_TO_KILL // 120 health.
+ health = 4 LASERS_TO_KILL
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+
+// Also beefy, but tries to stay at their 'home', ideal for base defense.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard
+ name = "guard hivebot"
+ desc = "A robot that seems to be guarding something."
+// ai_holder_type = todo
+
+
+// Inflicts a damage-over-time modifier on things it hits.
+// It is able to stack with repeated attacks.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/dot
+ name = "ember hivebot"
+ desc = "A robot that appears to utilize fire to cook their enemies."
+ icon_state = "red"
+ icon_living = "red"
+
+ projectiletype = /obj/item/projectile/fire
+ heat_resist = 1
+ player_msg = "Your attacks inflict a damage over time effect, that will \
+ harm your target slowly. The effect stacks with further attacks.
\
+ You are also immune to fire."
+
+/obj/item/projectile/fire
+ name = "ember"
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "explosion_particle"
+ modifier_type_to_apply = /datum/modifier/fire
+ modifier_duration = 6 SECONDS // About 15 damage per stack, as Life() ticks every two seconds.
+ damage = 0
+ nodamage = TRUE
+
+
+// Close to mid-ranged shooter that arcs over other things, ideal if allies are in front of it.
+// Difference from siege hivebots is that siege hivebots have limited charges for their attacks, are very long range, and \
+// the projectiles have an AoE component, where as backline hivebots do not.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/backline
+ name = "backline hivebot"
+ desc = "A robot that can fire short-ranged projectiles over their allies."
+ projectiletype = /obj/item/projectile/arc/blue_energy
+ projectilesound = 'sound/weapons/Laser.ogg'
+ player_msg = "Your attacks are short-ranged, but can arc over obstructions such as allies \
+ or barriers."
+
+/obj/item/projectile/arc/blue_energy
+ name = "energy missile"
+ icon_state = "force_missile"
+ damage = 15 // A bit stronger since arcing projectiles are much easier to avoid than traditional ones.
+ damage_type = BURN
+
+// Very long ranged hivebot that rains down hell.
+// Their projectiles arc, meaning they go over everything until it hits the ground.
+// This means they're somewhat easier to avoid, but go over most defenses (like allies, or barriers),
+// and tend to do more harm than a regular projectile, due to being AoE.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege
+ name = "siege engine hivebot"
+ desc = "A large robot capable of delivering long range bombardment."
+ projectiletype = /obj/item/projectile/arc/test
+ icon_scale = 2
+ icon_state = "red"
+ icon_living = "red"
+
+ player_msg = "You are capable of firing very long range bombardment attacks.
\
+ To use, click on a tile or enemy at a long range. Note that the projectile arcs in the air, \
+ so it will fly over everything inbetween you and the target.
\
+ The bombardment is most effective when attacking a static structure, as it cannot avoid your fire."
+
+// Fires EMP blasts.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/emp
+ name = "ionic artillery hivebot"
+ desc = "A large robot capable of annihilating electronics from a long distance."
+ projectiletype = /obj/item/projectile/arc/emp_blast
+
+/obj/item/projectile/arc/emp_blast
+ name = "emp blast"
+ icon_state = "bluespace"
+
+/obj/item/projectile/arc/emp_blast/on_impact(turf/T)
+ empulse(T, 2, 4, 7, 10) // Normal EMP grenade.
+ return ..()
+
+/obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T)
+ empulse(T, 1, 2, 3, 4) // Sec EMP grenade.
+ return ..()
+
+
+// Fires shots that irradiate the tile hit.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/radiation
+ name = "desolator hivebot"
+ desc = "A large robot capable of irradiating a large area from afar."
+ projectiletype = /obj/item/projectile/arc/radioactive
+
+
+// Essentially a long ranged frag grenade.
+/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation
+ name = "anti-personnel artillery hivebot"
+ desc = "A large robot capable of delivering fragmentation shells to rip apart their fleshy enemies."
+ projectiletype = /obj/item/projectile/arc/fragmentation
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm
new file mode 100644
index 0000000000..360686d591
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm
@@ -0,0 +1,87 @@
+// These hivebots help their team in various ways, and can be very powerful with allies, but are otherwise very weak when alone.
+
+/mob/living/simple_mob/mechanical/hivebot/support
+ icon_state = "white"
+ icon_living = "white"
+ attacktext = list("prodded")
+ movement_cooldown = 5
+ melee_damage_lower = 2
+ melee_damage_upper = 2
+
+
+// This hivebot supplies a general buff to nearby hivebots that improve their performance.
+// Note that the commander itself does not receive the buff.
+/mob/living/simple_mob/mechanical/hivebot/support/commander
+ name = "commander hivebot"
+ desc = "A robot that appears to be directing the others."
+ maxHealth = 5 LASERS_TO_KILL // 150 health
+ health = 5 LASERS_TO_KILL
+ player_msg = "You increase the performance of other hivebots near you passively.
\
+ You are otherwise very weak offensively."
+
+/mob/living/simple_mob/mechanical/hivebot/support/commander/handle_special()
+ for(var/mob/living/L in range(4, src))
+ if(L == src)
+ continue // Don't buff ourselves.
+ if(IIsAlly(L) && L.isSynthetic()) // Don't buff enemies.
+ L.add_modifier(/datum/modifier/aura/hivebot_commander_buff, null, src)
+
+// Modifier added to friendly hivebots nearby.
+// Boosts most stats by 30%.
+// The boost is lost if the commander is too far away or dies.
+/datum/modifier/aura/hivebot_commander_buff
+ name = "Strategicals"
+ on_created_text = "Signal established with commander. Optimizating combat performance..."
+ on_expired_text = "Lost signal to commander. Optimization halting."
+ stacks = MODIFIER_STACK_FORBID
+ aura_max_distance = 4
+ mob_overlay_state = "signal_blue"
+
+ disable_duration_percent = 0.7
+ outgoing_melee_damage_percent = 1.3
+ attack_speed_percent = 1.3
+ accuracy = 30
+ slowdown = -1
+ evasion = 30
+
+// Variant that automatically commands nearby allies to follow it when created.
+// Useful to avoid having to manually set follow to a lot of hivebots that are gonna die in the next minute anyways.
+/mob/living/simple_mob/mechanical/hivebot/support/commander/autofollow/initialize()
+ for(var/mob/living/L in hearers(7, src))
+ if(!L.ai_holder)
+ continue
+ if(L.faction != src.faction)
+ continue
+ var/datum/ai_holder/AI = L.ai_holder
+ AI.set_follow(src)
+ return ..()
+
+
+// This hivebot adds charges to nearby allied hivebots that use the charge system for their special attacks.
+// A charge is given to a nearby ally every so often.
+// Charges cannot exceed the initial starting amount.
+/mob/living/simple_mob/mechanical/hivebot/support/logistics
+ name = "logistics hivebot"
+ desc = "A robot that resupplies their allies."
+ maxHealth = 3 LASERS_TO_KILL // 90 health
+ health = 3 LASERS_TO_KILL
+ player_msg = "You passively restore 'charges' to allies with special abilities who are \
+ limited to using them a specific number of times."
+ var/resupply_range = 5
+ var/resupply_cooldown = 4 SECONDS
+ var/last_resupply = null
+
+/mob/living/simple_mob/mechanical/hivebot/support/logistics/handle_special()
+ if(last_resupply + resupply_cooldown > world.time)
+ return // On cooldown.
+
+ for(var/mob/living/simple_mob/SM in hearers(resupply_range, src))
+ if(SM == src)
+ continue // We don't use charges buuuuut in case that changes in the future...
+ if(IIsAlly(SM)) // Don't resupply enemies.
+ if(!isnull(SM.special_attack_charges) && SM.special_attack_charges < initial(SM.special_attack_charges))
+ SM.special_attack_charges += 1
+ to_chat(SM, span("notice", "\The [src] has resupplied you, and you can use your special ability one additional time."))
+ to_chat(src, span("notice", "You have resupplied \the [SM]."))
+ last_resupply = world.time
+ break // Only one resupply per pulse.
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm
new file mode 100644
index 0000000000..007f190c04
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm
@@ -0,0 +1,166 @@
+// These hivebots are harder to kill than normal, and are meant to protect their squad by
+// distracting their enemies. This is done by being seen as very threatening.
+// Their melee attacks weaken whatever they hit.
+
+/mob/living/simple_mob/mechanical/hivebot/tank
+ attacktext = list("prodded")
+ projectiletype = null // To force the AI to melee.
+ movement_cooldown = 10
+ melee_damage_lower = 3
+ melee_damage_upper = 3
+ attack_sound = 'sound/weapons/Egloves.ogg'
+
+// All tank hivebots apply a modifier to their target, and force them to attack them if they're AI controlled.
+/mob/living/simple_mob/mechanical/hivebot/tank/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ L.taunt(src, TRUE)
+ L.add_modifier(/datum/modifier/hivebot_weaken, 3 SECONDS)
+
+// Modifier applied to whatever a tank hivebot hits, intended to make the target do even less damage.
+/datum/modifier/hivebot_weaken
+ name = "Shocked"
+ desc = "You feel less able to exert yourself after being prodded."
+ on_created_text = "You feel weak..."
+ on_expired_text = "You feel better."
+ stacks = MODIFIER_STACK_EXTEND
+ mob_overlay_state = "electricity"
+
+ attack_speed_percent = 0.6
+ outgoing_melee_damage_percent = 0.7
+ accuracy = -40
+ accuracy_dispersion = 1
+ slowdown = 1
+ evasion = -20
+
+// This one is tanky by having a massive amount of health.
+/mob/living/simple_mob/mechanical/hivebot/tank/meatshield
+ name = "bulky hivebot"
+ desc = "A large robot."
+ maxHealth = 10 LASERS_TO_KILL // 300 health
+ health = 10 LASERS_TO_KILL
+ icon_scale = 2
+ player_msg = "You have a very large amount of health."
+
+
+// This one is tanky by having armor.
+/mob/living/simple_mob/mechanical/hivebot/tank/armored
+ name = "armored hivebot"
+ desc = "A robot clad in heavy armor."
+ maxHealth = 5 LASERS_TO_KILL // 150 health.
+ health = 5 LASERS_TO_KILL
+ icon_scale = 1.5
+ player_msg = "You are heavily armored."
+ // Note that armor effectively makes lasers do about 9 damage instead of 30,
+ // so it has an effective health of ~16.6 LASERS_TO_KILL if regular lasers are used.
+ // Xrays will do much better against this.
+ armor = list(
+ "melee" = 40,
+ "bullet" = 40,
+ "laser" = 40,
+ "energy" = 30,
+ "bomb" = 30,
+ "bio" = 100,
+ "rad" = 100
+ )
+ armor_soak = list(
+ "melee" = 15,
+ "bullet" = 10,
+ "laser" = 15,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+
+/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_melee
+ name = "riot hivebot"
+ desc = "A robot specialized in close quarters combat."
+ player_msg = "You are heavily armored against close quarters combat."
+ armor = list(
+ "melee" = 70,
+ "bullet" = 0,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+ armor_soak = list(
+ "melee" = 20,
+ "bullet" = 0,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+
+/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_bullet
+ name = "bulletproof hivebot"
+ desc = "A robot specialized in ballistic defense."
+ player_msg = "You are heavily armored against ballistic weapons."
+ armor = list(
+ "melee" = 0,
+ "bullet" = 70,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+ armor_soak = list(
+ "melee" = 0,
+ "bullet" = 20,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+
+/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser
+ name = "ablative hivebot"
+ desc = "A robot specialized in photonic defense."
+ player_msg = "You are heavily armored against laser weapons."
+ armor = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 70,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+ armor_soak = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 20,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+ var/reflect_chance = 40 // Same as regular ablative.
+
+// Ablative Hivebots can reflect lasers just like humans.
+/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser/bullet_act(obj/item/projectile/P)
+ if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
+ var/reflect_prob = reflect_chance - round(P.damage/3)
+ if(prob(reflect_prob))
+ visible_message(span("danger", "The [P.name] gets reflected by [src]'s armor!"), \
+ span("userdanger", "The [P.name] gets reflected by [src]'s armor!"))
+
+ // Find a turf near or on the original location to bounce to
+ if(P.starting)
+ var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/turf/curloc = get_turf(src)
+
+ // redirect the projectile
+ P.redirect(new_x, new_y, curloc, src)
+ P.reflected = 1
+
+ return -1 // complete projectile permutation
+
+ return (..(P))
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm
new file mode 100644
index 0000000000..246b0fa1c6
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm
@@ -0,0 +1,261 @@
+// Stronger than a regular Dark Gygax, this one has three special attacks, based on intents.
+// First special attack launches three arcing rockets at the current target.
+// Second special attack fires a projectile that creates a short-lived microsingularity that pulls in everything nearby. Magboots can protect from this.
+// Third special attack creates a dangerous electric field that causes escalating electric damage, before emitting a tesla shock and blinding anyone looking at the mecha.
+// The AI will choose one every ten seconds.
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced
+ name = "advanced dark gygax"
+ desc = "An experimental exosuit that utilizes advanced materials to allow for greater protection while still being lightweight and fast. \
+ It also is armed with an array of next-generation weaponry."
+ icon_state = "darkgygax_adv"
+ wreckage = /obj/structure/loot_pile/mecha/gygax/dark/adv
+ icon_scale = 1.5
+ movement_shake_radius = 14
+
+ maxHealth = 450
+ deflect_chance = 25
+ has_repair_droid = TRUE
+ armor = list(
+ "melee" = 50,
+ "bullet" = 50,
+ "laser" = 50,
+ "energy" = 30,
+ "bomb" = 30,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ special_attack_min_range = 1
+ special_attack_max_range = 7
+ special_attack_cooldown = 10 SECONDS
+ projectiletype = /obj/item/projectile/force_missile
+ projectilesound = 'sound/weapons/wave.ogg'
+ var/obj/effect/overlay/energy_ball/energy_ball = null
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/Destroy()
+ if(energy_ball)
+ energy_ball.stop_orbit()
+ qdel(energy_ball)
+ return ..()
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/do_special_attack(atom/A)
+ . = TRUE // So we don't fire a laser as well.
+ switch(a_intent)
+ if(I_DISARM) // Side gun
+ electric_defense(A)
+ if(I_HURT) // Rockets
+ launch_rockets(A)
+ if(I_GRAB) // Micro-singulo
+ launch_microsingularity(A)
+
+#define ELECTRIC_ZAP_POWER 20000
+
+// Charges a tesla shot, while emitting a dangerous electric field. The exosuit is immune to electric damage while this is ongoing.
+// It also briefly blinds anyone looking directly at the mech without flash protection.
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/electric_defense(atom/target)
+ set waitfor = FALSE
+
+ // Temporary immunity to shock to avoid killing themselves with their own attack.
+ var/old_shock_resist = shock_resist
+ shock_resist = 1
+
+ // Make the energy ball. This is purely visual since the tesla ball is hyper-deadly.
+ energy_ball = new(loc)
+ energy_ball.adjust_scale(0.5)
+ energy_ball.orbit(src, 32, TRUE, 1 SECOND)
+
+ visible_message(span("warning", "\The [src] creates \an [energy_ball] around itself!"))
+
+ playsound(src.loc, 'sound/effects/lightning_chargeup.ogg', 100, 1, extrarange = 30)
+
+ // Shock nearby things that aren't ourselves.
+ for(var/i = 1 to 10)
+ energy_ball.adjust_scale(0.5 + (i/10))
+ energy_ball.set_light(i/2, i/2, "#0000FF")
+ for(var/thing in range(3, src))
+ // This is stupid because mechs are stupid and not mobs.
+ if(isliving(thing))
+ var/mob/living/L = thing
+
+ if(L == src)
+ continue
+ if(L.stat)
+ continue // Otherwise it can get pretty laggy if there's loads of corpses around.
+ L.inflict_shock_damage(i * 2)
+ if(L && L.has_AI()) // Some mobs delete themselves when dying.
+ L.ai_holder.react_to_attack(src)
+
+ else if(istype(thing, /obj/mecha))
+ var/obj/mecha/M = thing
+ M.take_damage(i * 2, "energy") // Mechs don't have a concept for siemens so energy armor check is the best alternative.
+
+ sleep(1 SECOND)
+
+ // Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficent eye protection.
+ visible_message(span("warning", "\The [energy_ball] explodes in a flash of light, sending a shock everywhere!"))
+ playsound(src.loc, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30)
+ tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE)
+ for(var/mob/living/L in viewers(src))
+ if(L == src)
+ continue
+ var/dir_towards_us = get_dir(L, src)
+ if(L.dir && L.dir & dir_towards_us)
+ to_chat(L, span("danger", "The flash of light blinds you briefly."))
+ L.flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = TRUE)
+
+ // Get rid of our energy ball.
+ energy_ball.stop_orbit()
+ qdel(energy_ball)
+
+ sleep(1 SECOND)
+ // Resist resistance to old value.
+ shock_resist = old_shock_resist // Not using initial() in case the value gets modified by an admin or something.
+
+#undef ELECTRIC_ZAP_POWER
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/launch_rockets(atom/target)
+ set waitfor = FALSE
+
+ // Telegraph our next move.
+ Beam(target, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
+ visible_message(span("warning", "\The [src] deploys a missile rack!"))
+ playsound(src, 'sound/effects/turret/move1.wav', 50, 1)
+ sleep(0.5 SECONDS)
+
+ for(var/i = 1 to 3)
+ if(target) // Might get deleted in the meantime.
+ var/turf/T = get_turf(target)
+ if(T)
+ visible_message(span("warning", "\The [src] fires a rocket into the air!"))
+ playsound(src, 'sound/weapons/rpg.ogg', 70, 1)
+ face_atom(T)
+ var/obj/item/projectile/arc/explosive_rocket/rocket = new(loc)
+ rocket.launch(T)
+ sleep(1 SECOND)
+
+ visible_message(span("warning", "\The [src] retracts the missile rack."))
+ playsound(src, 'sound/effects/turret/move2.wav', 50, 1)
+
+// Arcing rocket projectile that produces a weak explosion when it lands.
+// Shouldn't punch holes in the floor, but will still hurt.
+/obj/item/projectile/arc/explosive_rocket
+ name = "rocket"
+ icon_state = "mortar"
+
+/obj/item/projectile/arc/explosive_rocket/on_impact(turf/T)
+ new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently.
+ explosion(T, 0, 0, 2, adminlog = FALSE)
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/launch_microsingularity(atom/target)
+ var/turf/T = get_turf(target)
+ visible_message(span("warning", "\The [src] fires an energetic sphere into the air!"))
+ playsound(src, 'sound/weapons/Laser.ogg', 50, 1)
+ face_atom(T)
+ var/obj/item/projectile/arc/microsingulo/sphere = new(loc)
+ sphere.launch(T)
+
+/obj/item/projectile/arc/microsingulo
+ name = "micro singularity"
+ icon_state = "bluespace"
+
+/obj/item/projectile/arc/microsingulo/on_impact(turf/T)
+ new /obj/effect/temporary_effect/pulse/microsingulo(T)
+
+
+/obj/effect/temporary_effect/pulse/microsingulo
+ name = "micro singularity"
+ desc = "It's sucking everything in!"
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "bhole3"
+ light_range = 4
+ light_power = 5
+ light_color = "#2ECCFA"
+ pulses_remaining = 10
+ pulse_delay = 0.5 SECONDS
+ var/pull_radius = 3
+ var/pull_strength = STAGE_THREE
+
+/obj/effect/temporary_effect/pulse/microsingulo/on_pulse()
+ for(var/atom/A in range(pull_radius, src))
+ A.singularity_pull(src, pull_strength)
+
+
+// The Advanced Dark Gygax's AI.
+// The mob has three special attacks, based on the current intent.
+// This AI choose the appropiate intent for the situation, and tries to ensure it doesn't kill itself by firing missiles at its feet.
+/datum/ai_holder/simple_mob/intentional/adv_dark_gygax
+ conserve_ammo = TRUE // Might help avoid 'I shoot the wall forever' cheese.
+ var/closest_desired_distance = 1 // Otherwise run up to them to be able to potentially shock or punch them.
+
+ var/electric_defense_radius = 3 // How big to assume electric defense's area is.
+ var/microsingulo_radius = 3 // Same but for microsingulo pull.
+ var/rocket_explosive_radius = 2 // Explosion radius for the rockets.
+
+ var/electric_defense_threshold = 2 // How many non-targeted people are needed in close proximity before electric defense is viable.
+ var/microsingulo_threshold = 2 // Similar to above, but uses an area around the target.
+
+// Used to control the mob's positioning based on which special attack it has done.
+// Note that the intent will not change again until the next special attack is about to happen.
+/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/on_engagement(atom/A)
+ // Make the AI backpeddle if using an AoE special attack.
+ var/list/risky_intents = list(I_GRAB, I_HURT) // Mini-singulo and missiles.
+ if(holder.a_intent in risky_intents)
+ var/closest_distance = 1
+ switch(holder.a_intent) // Plus one just in case.
+ if(I_HURT)
+ closest_distance = rocket_explosive_radius + 1
+ if(I_GRAB)
+ closest_distance = microsingulo_radius + 1
+
+ if(get_dist(holder, A) <= closest_distance)
+ holder.IMove(get_step_away(holder, A, closest_distance))
+
+ // Otherwise get up close and personal.
+ else if(get_dist(holder, A) > closest_desired_distance)
+ holder.IMove(get_step_towards(holder, A))
+
+// Changes the mob's intent, which controls which special attack is used.
+// I_DISARM causes Electric Defense, I_GRAB causes Micro-Singularity, and I_HURT causes Missile Barrage.
+/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/pre_special_attack(atom/A)
+ if(isliving(A))
+ var/mob/living/target = A
+
+ // If we're surrounded, Electric Defense will quickly fix that.
+ var/tally = 0
+ var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets.
+ for(var/atom/movable/AM in potential_targets)
+ if(get_dist(holder, AM) > electric_defense_radius)
+ continue
+ if(!can_attack(AM))
+ continue
+ tally++
+
+ // Should we shock them?
+ if(tally >= electric_defense_threshold || get_dist(target, holder) <= electric_defense_radius)
+ holder.a_intent = I_DISARM
+ return
+
+ // Otherwise they're a fair distance away and we're not getting mobbed up close.
+ // See if we should use missiles or microsingulo.
+ tally = 0 // Let's recycle the var.
+ for(var/atom/movable/AM in potential_targets)
+ if(get_dist(target, AM) > microsingulo_radius) // Deliberately tests distance between target and nearby targets and not the holder.
+ continue
+ if(!can_attack(AM))
+ continue
+ if(AM.anchored) // Microsingulo doesn't do anything to anchored things.
+ tally--
+ else
+ tally++
+
+ // Lots of people means minisingulo would be more useful.
+ if(tally >= microsingulo_threshold)
+ holder.a_intent = I_GRAB
+ else // Otherwise use rockets.
+ holder.a_intent = I_HURT
+
+ else
+ if(get_dist(holder, A) >= rocket_explosive_radius + 1)
+ holder.a_intent = I_HURT // Fire rockets if it's an obj/turf.
+ else
+ holder.a_intent = I_DISARM // Electricity might not work but it's safe up close.
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm
new file mode 100644
index 0000000000..7a2d8abb19
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm
@@ -0,0 +1,38 @@
+// Base type for the 'combat' mechas like gygax/durand/maulers/etc.
+// They generally are walking tanks, and their melee attack knocks back and stuns, like the real deal.
+
+/mob/living/simple_mob/mechanical/mecha/combat
+ name = "combat mecha"
+ desc = "An even bigger stompy mech!!"
+
+ movement_cooldown = 10
+ melee_damage_lower = 30
+ melee_damage_upper = 30
+ melee_attack_delay = 1 SECOND
+ attacktext = list("punched", "slammed", "uppercutted", "pummeled")
+
+ armor = list(
+ "melee" = 30,
+ "bullet" = 30,
+ "laser" = 15,
+ "energy" = 0,
+ "bomb" = 20,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ var/weaken_amount = 2 // Be careful with this number. High values can equal a permastun.
+
+// Melee hits knock back by one tile (or more if already stunned to help prevent permastuns).
+/mob/living/simple_mob/mechanical/mecha/combat/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(L.mob_size <= MOB_MEDIUM)
+ visible_message(span("danger", "\The [src] sends \the [L] flying with their mechanized fist!"))
+ playsound(src, "punch", 50, 1)
+ L.Weaken(weaken_amount)
+ var/throw_dir = get_dir(src, L)
+ var/throw_dist = L.incapacitated(INCAPACITATION_DISABLED) ? 4 : 1
+ L.throw_at(get_edge_target_turf(L, throw_dir), throw_dist, 1, src)
+ else
+ to_chat(L, span("warning", "\The [src] punches you with incredible force, but you remain in place."))
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm
new file mode 100644
index 0000000000..c20d623c53
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm
@@ -0,0 +1,53 @@
+// Durands are slow, tanky, beefy, and hit really hard.
+// They can also root themselves to become even tankier.
+// The AI doesn't do this currently.
+
+/mob/living/simple_mob/mechanical/mecha/combat/durand
+ name = "durand"
+ desc = "An aging combat exosuit utilized by many corporations. It was originally developed to fight in the First Contact War."
+ icon_state = "durand"
+ movement_cooldown = 10
+ wreckage = /obj/structure/loot_pile/mecha/durand
+
+ maxHealth = 400
+ deflect_chance = 20
+ armor = list(
+ "melee" = 50,
+ "bullet" = 35,
+ "laser" = 15,
+ "energy" = 10,
+ "bomb" = 20,
+ "bio" = 100,
+ "rad" = 100
+ )
+ melee_damage_lower = 40
+ melee_damage_upper = 40
+ base_attack_cooldown = 2 SECONDS
+ projectiletype = /obj/item/projectile/beam/heavylaser
+
+ var/defense_mode = FALSE
+ var/defense_deflect = 35
+
+/mob/living/simple_mob/mechanical/mecha/combat/durand/proc/set_defense_mode(new_mode)
+ defense_mode = new_mode
+ deflect_chance = defense_mode ? defense_deflect : initial(deflect_chance)
+ to_chat(src, span("notice", "You [defense_mode ? "en" : "dis"]able defense mode."))
+
+/mob/living/simple_mob/mechanical/mecha/combat/durand/SelfMove(turf/n, direct)
+ if(defense_mode)
+ to_chat(src, span("warning", "You are in defense mode, you cannot move."))
+ return FALSE
+ return ..()
+
+// So players can toggle it too.
+/mob/living/simple_mob/mechanical/mecha/combat/durand/verb/toggle_defense_mode()
+ set name = "Toggle Defense Mode"
+ set desc = "Toggles a special mode which makes you immobile and much more resilient."
+ set category = "Abilities"
+
+ set_defense_mode(!defense_mode)
+
+// Variant that starts in defense mode, perhaps for PoIs.
+/mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/initialize()
+ set_defense_mode(TRUE)
+ return ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm
new file mode 100644
index 0000000000..4e0cc0cb3d
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm
@@ -0,0 +1,57 @@
+// Gygaxes are tough but also fast.
+// Their AI, unlike most, will advance towards their target instead of remaining in place.
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax
+ name = "gygax"
+ desc = "A lightweight, security exosuit. Popular among private and corporate security."
+ icon_state = "gygax"
+ movement_cooldown = 0
+ wreckage = /obj/structure/loot_pile/mecha/gygax
+
+ maxHealth = 300
+ armor = list(
+ "melee" = 25,
+ "bullet" = 20,
+ "laser" = 30,
+ "energy" = 15,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ projectiletype = /obj/item/projectile/beam/midlaser
+
+ ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol.
+
+
+// A stronger variant.
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark
+ name = "dark gygax"
+ desc = "A significantly upgraded Gygax security mech, often utilized by corporate asset protection teams and \
+ PMCs."
+ icon_state = "darkgygax"
+ wreckage = /obj/structure/loot_pile/mecha/gygax/dark
+
+ maxHealth = 400
+ deflect_chance = 25
+ has_repair_droid = TRUE
+ armor = list(
+ "melee" = 40,
+ "bullet" = 40,
+ "laser" = 50,
+ "energy" = 35,
+ "bomb" = 20,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+/mob/living/simple_mob/mechanical/mecha/combat/gygax/medgax
+ name = "medgax"
+ desc = "An unorthodox fusion of the Gygax and Odysseus exosuits, this one is fast, sturdy, and carries a wide array of \
+ potent chemicals and delivery mechanisms. The doctor is in!"
+ icon_state = "medgax"
+ wreckage = /obj/structure/loot_pile/mecha/gygax/medgax
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm
new file mode 100644
index 0000000000..29f102b9b9
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm
@@ -0,0 +1,27 @@
+// Ranged, and capable of flight.
+/mob/living/simple_mob/mechanical/mecha/hoverpod
+ name = "hover pod"
+ desc = "Stubby and round, this space-capable craft is an ancient favorite. It has a jury-rigged welder-laser."
+ icon_state = "engineering_pod"
+ movement_sound = 'sound/machines/hiss.ogg'
+ wreckage = /obj/structure/loot_pile/mecha/hoverpod
+
+ maxHealth = 150
+ hovering = TRUE // Can fly.
+
+ projectiletype = /obj/item/projectile/beam
+ base_attack_cooldown = 2 SECONDS
+
+ var/datum/effect/effect/system/ion_trail_follow/ion_trail
+
+/mob/living/simple_mob/mechanical/mecha/hoverpod/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged
+
+/mob/living/simple_mob/mechanical/mecha/hoverpod/initialize()
+ ion_trail = new /datum/effect/effect/system/ion_trail_follow()
+ ion_trail.set_up(src)
+ ion_trail.start()
+ return ..()
+
+/mob/living/simple_mob/mechanical/mecha/hoverpod/Process_Spacemove(var/check_drift = 0)
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm
new file mode 100644
index 0000000000..b4fa89c005
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm
@@ -0,0 +1,44 @@
+// Marauders are even tougher than Durands.
+
+/mob/living/simple_mob/mechanical/mecha/combat/marauder
+ name = "marauder"
+ desc = "A heavy-duty, combat exosuit, developed after the Durand model. This is rarely found among civilian populations."
+ icon_state = "marauder"
+ movement_cooldown = 5
+ wreckage = /obj/structure/loot_pile/mecha/marauder
+
+ maxHealth = 500
+ deflect_chance = 25
+ sight = SEE_SELF | SEE_MOBS
+ armor = list(
+ "melee" = 50,
+ "bullet" = 55,
+ "laser" = 40,
+ "energy" = 30,
+ "bomb" = 30,
+ "bio" = 100,
+ "rad" = 100
+ )
+ melee_damage_lower = 45
+ melee_damage_upper = 45
+ base_attack_cooldown = 2 SECONDS
+ projectiletype = /obj/item/projectile/beam/heavylaser
+
+
+// Slightly stronger, used to allow comdoms to frontline without dying instantly, I guess.
+/mob/living/simple_mob/mechanical/mecha/combat/marauder/seraph
+ name = "seraph"
+ desc = "A heavy-duty, combat/command exosuit. This one is specialized towards housing important commanders such as high-ranking \
+ military personnel. It's stronger than the regular Marauder model, but not by much."
+ icon_state = "seraph"
+ wreckage = /obj/structure/loot_pile/mecha/marauder/seraph
+ health = 550
+ melee_damage_lower = 55 // The real version hits this hard apparently. Ouch.
+ melee_damage_upper = 55
+
+
+/mob/living/simple_mob/mechanical/mecha/combat/marauder/mauler
+ name = "mauler"
+ desc = "A heavy duty, combat exosuit that is based off of the Marauder model."
+ icon_state = "mauler"
+ wreckage = /obj/structure/loot_pile/mecha/marauder/mauler
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm
new file mode 100644
index 0000000000..7aa24bdf74
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm
@@ -0,0 +1,141 @@
+// Mecha simple_mobs are essentially fake mechs. Generally tough and scary to fight.
+// By default, they're automatically piloted by some kind of drone AI. They can be set to be "piloted" instead with a var.
+// Tries to be as similar to the real deal as possible.
+
+/mob/living/simple_mob/mechanical/mecha
+ name = "mecha"
+ desc = "A big stompy mech!"
+ icon = 'icons/mecha/mecha.dmi'
+
+ faction = "syndicate"
+ movement_cooldown = 5
+ movement_sound = "mechstep" // This gets fed into playsound(), which can also take strings as a 'group' of sound files.
+ turn_sound = 'sound/mecha/mechturn.ogg'
+ maxHealth = 300
+ mob_size = MOB_LARGE
+
+ // Very close to the base 'damage_absorption' var on the base mecha class.
+ armor = list(
+ "melee" = 20,
+ "bullet" = 10,
+ "laser" = 0,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ response_help = "taps on"
+ response_disarm = "knocks on"
+ response_harm = "uselessly hits"
+ harm_intent_damage = 0
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+ say_list_type = /datum/say_list/malf_drone
+
+ var/datum/effect/effect/system/spark_spread/sparks
+ var/wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
+ var/pilot_type = null // Set to spawn a pilot when destroyed. Setting this also makes the mecha vulnerable to things that affect sentient minds.
+ var/deflect_chance = 10 // Chance to outright stop an attack, just like a normal exosuit.
+ var/has_repair_droid = FALSE // If true, heals 2 damage every tick and gets a repair droid overlay.
+
+
+/mob/living/simple_mob/mechanical/mecha/initialize()
+ sparks = new (src)
+ sparks.set_up(3, 1, src)
+ sparks.attach(src)
+
+ if(!pilot_type)
+ name = "autonomous [initial(name)]"
+ desc = "[initial(desc)] It appears to be piloted by a drone intelligence."
+ else
+ say_list_type = /datum/say_list/merc
+
+ if(has_repair_droid)
+ update_icon()
+
+ return ..()
+
+/mob/living/simple_mob/mechanical/mecha/Destroy()
+ qdel(sparks)
+ return ..()
+
+/mob/living/simple_mob/mechanical/mecha/death()
+ ..(0,"explodes!") // Do everything else first.
+
+ // Make the exploding more convincing with an actual explosion and some sparks.
+ sparks.start()
+ explosion(get_turf(src), 0, 0, 1, 3)
+
+ // 'Eject' our pilot, if one exists.
+ if(pilot_type)
+ var/mob/living/L = new pilot_type(loc)
+ L.faction = src.faction
+
+ new wreckage(loc) // Leave some wreckage.
+
+ qdel(src) // Then delete us since we don't actually have a body.
+
+/mob/living/simple_mob/mechanical/mecha/handle_special()
+ if(has_repair_droid)
+ adjustBruteLoss(-2)
+ adjustFireLoss(-2)
+ adjustToxLoss(-2)
+ adjustOxyLoss(-2)
+ adjustCloneLoss(-2)
+ ..()
+
+/mob/living/simple_mob/mechanical/mecha/update_icon()
+ ..() // Cuts everything else, so do that first.
+ if(has_repair_droid)
+ add_overlay(image(icon = 'icons/mecha/mecha_equipment.dmi', icon_state = "repair_droid"))
+
+/mob/living/simple_mob/mechanical/mecha/bullet_act()
+ . = ..()
+ sparks.start()
+
+/mob/living/simple_mob/mechanical/mecha/speech_bubble_appearance()
+ return pilot_type ? "" : ..()
+
+// Piloted mechs are controlled by (presumably) something humanoid so they are vulnerable to certain things.
+/mob/living/simple_mob/mechanical/mecha/is_sentient()
+ return pilot_type ? TRUE : FALSE
+
+/*
+// Real mechs can't turn and run at the same time. This tries to simulate that.
+// Commented out because the AI can't handle it sadly.
+/mob/living/simple_mob/mechanical/mecha/SelfMove(turf/n, direct)
+ if(direct != dir)
+ set_dir(direct)
+ return FALSE // We didn't actually move, and returning FALSE means the mob can try to actually move almost immediately and not have to wait the full movement cooldown.
+ return ..()
+*/
+
+/mob/living/simple_mob/mechanical/mecha/bullet_act(obj/item/projectile/P)
+ if(prob(deflect_chance))
+ visible_message(span("warning", "\The [P] is deflected by \the [src]'s armor!"))
+ deflect_sprite()
+ return 0
+ return ..()
+
+/mob/living/simple_mob/mechanical/mecha/proc/deflect_sprite()
+ var/image/deflect_image = image('icons/effects/effects.dmi', "deflect_static")
+ add_overlay(deflect_image)
+ sleep(1 SECOND)
+ cut_overlay(deflect_image)
+ qdel(deflect_image)
+// flick_overlay_view(deflect_image, src, duration = 1 SECOND, gc_after = TRUE)
+
+/mob/living/simple_mob/mechanical/mecha/attackby(obj/item/I, mob/user)
+ if(prob(deflect_chance))
+ visible_message(span("warning", "\The [user]'s [I] bounces off \the [src]'s armor!"))
+ deflect_sprite()
+ user.setClickCooldown(user.get_attack_speed(I))
+ return
+ ..()
+
+/mob/living/simple_mob/mechanical/mecha/ex_act(severity)
+ if(prob(deflect_chance))
+ severity++ // This somewhat misleadingly makes it less severe.
+ deflect_sprite()
+ ..(severity)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm
new file mode 100644
index 0000000000..245bd54193
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm
@@ -0,0 +1,71 @@
+// Shoots syringe-darts at enemies, which applies a stacking poison modifier that hurts over time.
+// They also do this in melee.
+// Fortunately they're quite fragile and don't fire that fast.
+
+/mob/living/simple_mob/mechanical/mecha/odysseus
+ name = "odysseus"
+ desc = "These exosuits are developed and produced by Vey-Med. This one has a syringe gun."
+ icon_state = "odysseus"
+ wreckage = /obj/structure/loot_pile/mecha/odysseus
+
+ maxHealth = 120
+ movement_cooldown = 0
+ turn_sound = 'sound/mecha/mechmove01.ogg'
+
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ base_attack_cooldown = 2 SECONDS
+ attacktext = list("injected")
+ projectiletype = /obj/item/projectile/fake_syringe/poison
+ projectilesound = 'sound/weapons/empty.ogg' // Just like the syringe gun.
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/no_moonwalk
+
+/mob/living/simple_mob/mechanical/mecha/odysseus/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol.
+
+
+// Resprite of the regular one, perhaps for merc PoIs.
+/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus
+ icon_state = "murdysseus"
+ wreckage = /obj/structure/loot_pile/mecha/odysseus/murdysseus
+
+/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged
+
+
+/mob/living/simple_mob/mechanical/mecha/odysseus/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+
+ var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD)
+ if(L.can_inject(src, null, target_zone))
+ to_chat(L, span("warning", "You feel a tiny prick."))
+ if(L.get_poison_protection() < 1)
+ L.add_modifier(/datum/modifier/poisoned, 30 SECONDS)
+ L.inflict_poison_damage(5)
+
+
+// Fake syringe that tests if target can be injected before applying damage/modifiers/etc.
+/obj/item/projectile/fake_syringe
+ name = "syringe"
+ icon_state = "syringe"
+ damage = 5 // Getting hit with a launched syringe probably hurts, and makes it at least slightly relevant against synthetics.
+ var/piercing = FALSE // If true, ignores thick material.
+
+/obj/item/projectile/fake_syringe/on_hit(atom/target, blocked = 0, def_zone = null)
+ if(isliving(target))
+ var/mob/living/L = target
+ if(!L.can_inject(null, null, def_zone, piercing))
+ return FALSE
+ to_chat(L, span("warning", "You feel a tiny prick."))
+ return ..() // This will add the modifier and return the correct value.
+
+
+// Fake syringe, which inflicts a long lasting modifier that slowly kills them.
+/obj/item/projectile/fake_syringe/poison
+ modifier_type_to_apply = /datum/modifier/poisoned
+ modifier_duration = 1 MINUTE // About 30 damage per stack over a minute.
+
+
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm
new file mode 100644
index 0000000000..ebbe80ecf4
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm
@@ -0,0 +1,22 @@
+// Phazons are weird.
+
+/mob/living/simple_mob/mechanical/mecha/combat/phazon
+ name = "phazon"
+ desc = "An extremly enigmatic exosuit."
+ icon_state = "phazon"
+ movement_cooldown = 5
+ wreckage = /obj/structure/loot_pile/mecha/phazon
+
+ maxHealth = 200
+ deflect_chance = 30
+ armor = list(
+ "melee" = 30,
+ "bullet" = 30,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 30,
+ "bio" = 100,
+ "rad" = 100
+ )
+ projectiletype = /obj/item/projectile/energy/declone
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm
new file mode 100644
index 0000000000..8372363ea0
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm
@@ -0,0 +1,64 @@
+// Beefy, but somewhat slow.
+// Melee attack is to bore you with its big drill, which has a lot of armor penetration and strikes rapidly.
+
+/mob/living/simple_mob/mechanical/mecha/ripley
+ name = "\improper APLU ripley"
+ desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world. This one has big drill."
+ icon_state = "ripley"
+ wreckage = /obj/structure/loot_pile/mecha/ripley
+
+ maxHealth = 200
+
+ melee_damage_lower = 10
+ melee_damage_upper = 10
+ base_attack_cooldown = 5 // About 20 DPS.
+ attack_armor_pen = 50
+ attack_sharp = TRUE
+ attack_sound = 'sound/mecha/mechdrill.ogg'
+ attacktext = list("drilled", "bored", "pierced")
+
+/mob/living/simple_mob/mechanical/mecha/ripley/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol.
+
+/mob/living/simple_mob/mechanical/mecha/ripley/red_flames
+ icon_state = "ripley_flames_red"
+
+/mob/living/simple_mob/mechanical/mecha/ripley/blue_flames
+ icon_state = "ripley_flames_blue"
+
+
+// Immune to heat damage, resistant to lasers, and somewhat beefier. Still tries to melee you.
+/mob/living/simple_mob/mechanical/mecha/ripley/firefighter
+ name = "\improper APLU firefighter"
+ desc = "A standard APLU chassis, refitted with additional thermal protection and cistern. This one has a big drill."
+ icon_state = "firefighter"
+ wreckage = /obj/structure/loot_pile/mecha/ripley/firefighter
+
+ maxHealth = 250
+ heat_resist = 1
+ armor = list(
+ "melee" = 0,
+ "bullet" = 20,
+ "laser" = 50,
+ "energy" = 0,
+ "bomb" = 50,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+/mob/living/simple_mob/mechanical/mecha/ripley/firefighter/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged
+
+// Mostly a joke mob, like the real DEATH-RIPLEY.
+/mob/living/simple_mob/mechanical/mecha/ripley/deathripley
+ name = "\improper DEATH-RIPLEY"
+ desc = "OH SHIT RUN!!! IT HAS A KILL CLAMP!"
+ icon_state = "deathripley"
+ wreckage = /obj/structure/loot_pile/mecha/deathripley
+
+ melee_damage_lower = 0
+ melee_damage_upper = 0
+ friendly = list("utterly obliterates", "furiously destroys", "permanently removes", "unflichingly decimates", "brutally murders", "absolutely demolishes", "completely annihilates")
+
+/mob/living/simple_mob/mechanical/mecha/ripley/deathripley/manned
+ pilot_type = /mob/living/simple_mob/humanoid/merc/ranged
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm
new file mode 100644
index 0000000000..f61212ba75
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm
@@ -0,0 +1,25 @@
+// Mechanical mobs don't care about the atmosphere and cannot be hurt by tasers.
+// They're also immune to poisons as they're entirely metal, however this also makes most of them vulnerable to shocks.
+// They can also be hurt by EMP.
+
+/mob/living/simple_mob/mechanical
+ mob_class = MOB_CLASS_SYNTHETIC
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ taser_kill = FALSE
+ poison_resist = 1.0
+ shock_resist = -0.5
+
+/mob/living/simple_mob/mechanical/isSynthetic()
+ return TRUE
+
+/mob/living/simple_mob/mechanical/speech_bubble_appearance()
+ return faction != "neutral" ? "synthetic_evil" : "machine"
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm
new file mode 100644
index 0000000000..09d778547b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm
@@ -0,0 +1,51 @@
+/*
+ Viscerators are fragile and don't hit very hard, but fast, evasive, and rarely come alone.
+ They also tend to dodge while in melee range.
+ A weapon that can cleave is very effective against them.
+*/
+
+/mob/living/simple_mob/mechanical/viscerator
+ name = "viscerator"
+ desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
+ icon = 'icons/mob/critter.dmi'
+ icon_state = "viscerator_attack"
+ icon_living = "viscerator_attack"
+ hovering = TRUE // Won't trigger landmines.
+
+ faction = "syndicate"
+ maxHealth = 15
+ health = 15
+ movement_cooldown = 0
+
+ pass_flags = PASSTABLE
+ mob_swap_flags = 0
+ mob_push_flags = 0
+
+ melee_damage_lower = 4 // Approx 8 DPS.
+ melee_damage_upper = 4
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ attack_sharp = 1
+ attack_edge = 1
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+ attacktext = list("cut", "sliced")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
+
+/mob/living/simple_mob/mechanical/viscerator/death()
+ ..(null,"is smashed into pieces!")
+ qdel(src)
+
+// Variant that is always loyal to mercenary antagonists.
+// Used for a special grenade, to ensure they don't attack the wrong thing.
+/mob/living/simple_mob/mechanical/viscerator/mercenary/IIsAlly(mob/living/L)
+ . = ..()
+ if(!.) // Not friendly, see if they're a baddie first.
+ if(L.mind && mercs.is_antagonist(L.mind))
+ return TRUE
+
+// Similar to above but for raiders.
+/mob/living/simple_mob/mechanical/viscerator/raider/IIsAlly(mob/living/L)
+ . = ..()
+ if(!.) // Not friendly, see if they're a baddie first.
+ if(L.mind && raiders.is_antagonist(L.mind))
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm
new file mode 100644
index 0000000000..153bc9c478
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm
@@ -0,0 +1,106 @@
+/*
+ 'Monitor' wards are drones that yell at their creator if they see someone besides them that they are hostile to.
+ They can also force an invisible entity to uncloak if the invisible mob is hostile to the ward.
+ If AI controlled, they will also warn their faction if they see a hostile entity, acting as floating cameras.
+*/
+
+/mob/living/simple_mob/mechanical/ward/monitor
+ desc = "It's a little flying drone. This one seems to be watching you..."
+ icon_state = "ward"
+ glow_color = "#00FF00"
+ see_invisible = SEE_INVISIBLE_LEVEL_TWO
+
+ has_eye_glow = TRUE
+ glow_range = 3
+ glow_intensity = 3
+ glow_toggle = TRUE
+
+ player_msg = "You will automatically alert your owner (if one exists) of enemies you see nearby.
\
+ You can also see invisible entities, and will automatically uncloak nearby invisible or hidden enemies."
+
+ ai_holder_type = /datum/ai_holder/simple_mob/monitor
+
+ var/list/seen_mobs = list()
+ var/view_range = 5
+
+// For PoIs.
+/mob/living/simple_mob/mechanical/ward/monitor/syndicate
+ faction = "syndicate"
+
+/mob/living/simple_mob/mechanical/ward/monitor/crew
+ faction = "neutral"
+
+/mob/living/simple_mob/mechanical/ward/monitor/death()
+ if(owner)
+ to_chat(owner, span("warning", "Your [src.name] inside [get_area(src)] was destroyed!"))
+ ..()
+
+/mob/living/simple_mob/mechanical/ward/monitor/handle_special()
+ detect_mobs()
+
+/mob/living/simple_mob/mechanical/ward/monitor/update_icon()
+ if(seen_mobs.len)
+ icon_living = "ward_spotted"
+ glow_color = "#FF0000"
+ else
+ icon_living = "ward"
+ glow_color = "#00FF00"
+ handle_light() // Update the light immediately.
+ ..()
+
+/mob/living/simple_mob/mechanical/ward/monitor/proc/detect_mobs()
+ var/last_seen_mobs_len = seen_mobs.len
+ var/list/mobs_nearby = hearers(view_range, src)
+ var/list/newly_seen_mobs = list()
+ for(var/mob/living/L in mobs_nearby)
+ if(L == src) // Don't detect ourselves.
+ continue
+
+ if(L.stat) // Dead mobs aren't concerning.
+ continue
+
+ if(src.IIsAlly(L))
+ continue
+
+ // Decloak them .
+ if(L.is_cloaked())
+ Beam(L, icon_state = "solar_beam", time = 5)
+ playsound(L, 'sound/effects/EMPulse.ogg', 75, 1)
+ L.break_cloak()
+
+ to_chat(L, span("danger", "\The [src] disrupts your cloak!"))
+ if(owner)
+ to_chat(owner, span("notice", "Your [src.name] at [get_area(src)] uncloaked \the [L]."))
+
+ // Warn the owner when it sees a new mob.
+ if(!(L in seen_mobs))
+ seen_mobs += L
+ newly_seen_mobs += L
+
+ if(newly_seen_mobs.len && owner) // Yell at our owner if someone new shows up.
+ to_chat(owner, span("notice", "Your [src.name] at [get_area(src)] detected [english_list(newly_seen_mobs)]."))
+
+ // Now get rid of old mobs that left vision.
+ for(var/thing in seen_mobs)
+ if(!(thing in mobs_nearby))
+ seen_mobs -= thing
+
+ // Check if we need to update icon.
+ if(seen_mobs.len != last_seen_mobs_len)
+ update_icon()
+
+
+// Can't attack but calls for help. Used by the monitor and spotter wards.
+// Special attacks are not blocked since they might be used for things besides attacking, and can be conditional.
+/datum/ai_holder/simple_mob/monitor
+ hostile = TRUE // Required to call for help.
+ cooperative = TRUE
+ stand_ground = TRUE // So it doesn't run up to the thing it sees.
+ wander = FALSE
+ can_flee = FALSE
+
+/datum/ai_holder/simple_mob/monitor/melee_attack(atom/A)
+ return FALSE
+
+/datum/ai_holder/simple_mob/monitor/ranged_attack(atom/A)
+ return FALSE
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm
new file mode 100644
index 0000000000..0e897599ac
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm
@@ -0,0 +1,42 @@
+/*
+ Wards are a specific type of mechanical simplemob that generally fill a support role for their faction or for a specific mob.
+ Generally they are helpless by themselves and are fragile, but can do very useful things if protected. This makes them a high priority target.
+*/
+
+/mob/living/simple_mob/mechanical/ward
+ name = "ward"
+ desc = "A small floating machine. This one seems rather useless..."
+ icon = 'icons/mob/critter.dmi'
+ icon_state = "ward"
+ icon_living = "ward"
+ hovering = TRUE // Won't trigger landmines.
+ response_help = "pets"
+ response_disarm = "swats away"
+ response_harm = "punches"
+ faction = "wards" // Needed as most human mobs are in neutral faction. The owner is generally except from any ward hostility regardless.
+
+ maxHealth = 15
+ health = 15
+ movement_cooldown = 0
+ hovering = TRUE
+
+ mob_bump_flag = 0
+
+ melee_damage_lower = 0
+ melee_damage_upper = 0
+
+ ai_holder_type = null
+ var/mob/living/owner = null // The mob that made the ward, if any. Used to ensure the ward does not interfere with its creator.
+
+/mob/living/simple_mob/mechanical/ward/death()
+ ..(null,"is smashed into pieces!")
+ qdel(src)
+
+/mob/living/simple_mob/mechanical/ward/Destroy()
+ owner = null
+ return ..()
+
+/mob/living/simple_mob/mechanical/ward/IIsAlly(mob/living/L)
+ if(owner == L)
+ return TRUE
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
new file mode 100644
index 0000000000..cd3b074a40
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
@@ -0,0 +1,163 @@
+////////////////////////////
+// Base Construct
+////////////////////////////
+
+/mob/living/simple_mob/construct
+ name = "Construct"
+ real_name = "Construct"
+ desc = ""
+ tt_desc = "Error"
+
+ icon_living = "shade"
+ icon_dead = "shade_dead"
+
+ mob_class = MOB_CLASS_DEMONIC
+
+ ui_icons = 'icons/mob/screen1_construct.dmi'
+ has_hands = 1
+ hand_form = "stone manipulators"
+
+ response_help = "thinks better of touching"
+ response_disarm = "flailed at"
+ response_harm = "punched"
+
+ hovering = TRUE
+ softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'.
+ parachuting = TRUE
+
+ has_langs = list(LANGUAGE_GALCOM, LANGUAGE_CULT, LANGUAGE_OCCULT)
+
+ has_eye_glow = TRUE
+
+ taser_kill = FALSE
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ shock_resist = 0.1 //Electricity isn't very effective on stone, especially that from hell.
+ poison_resist = 1.0
+
+ armor = list(
+ "melee" = 10,
+ "bullet" = 10,
+ "laser" = 10,
+ "energy" = 10,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+
+ can_be_antagged = TRUE
+ faction = "cult"
+
+ supernatural = TRUE
+
+ var/construct_type = "shade"
+ var/list/construct_spells = list()
+// var/do_glow = TRUE
+
+/mob/living/simple_mob/construct/place_spell_in_hand(var/path)
+ if(!path || !ispath(path))
+ return 0
+
+ //var/obj/item/weapon/spell/S = new path(src)
+ var/obj/item/weapon/spell/construct/S = new path(src)
+
+ //No hands needed for innate casts.
+ if(S.cast_methods & CAST_INNATE)
+ if(S.run_checks())
+ S.on_innate_cast(src)
+
+ if(l_hand && r_hand) //Make sure our hands aren't full.
+ if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful.
+ var/obj/item/weapon/spell/r_spell = r_hand
+ if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands.
+ r_spell.on_combine_cast(S, src)
+ else if(istype(l_hand, /obj/item/weapon/spell))
+ var/obj/item/weapon/spell/l_spell = l_hand
+ if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too.
+ l_spell.on_combine_cast(S, src)
+ else //Welp
+ to_chat(src, "You require a free manipulator to use this power.")
+ return 0
+
+ if(S.run_checks())
+ put_in_hands(S)
+ return 1
+ else
+ qdel(S)
+ return 0
+
+/mob/living/simple_mob/construct/cultify()
+ return
+
+/mob/living/simple_mob/construct/New()
+ ..()
+ name = text("[initial(name)] ([rand(1, 1000)])")
+ real_name = name
+ for(var/spell in construct_spells)
+ src.add_spell(new spell, "const_spell_ready")
+ updateicon()
+
+/*
+/mob/living/simple_mob/construct/update_icon()
+ ..()
+ if(do_glow)
+ add_glow()
+*/
+
+/mob/living/simple_mob/construct/death()
+ new /obj/item/weapon/ectoplasm (src.loc)
+ ..(null,"collapses in a shattered heap.")
+ ghostize()
+ qdel(src)
+
+/mob/living/simple_mob/construct/attack_generic(var/mob/user)
+ if(istype(user, /mob/living/simple_mob/construct/artificer))
+ var/mob/living/simple_mob/construct/artificer/A = user
+ if(health < getMaxHealth())
+ var/repair_lower_bound = A.melee_damage_lower * -1
+ var/repair_upper_bound = A.melee_damage_upper * -1
+ adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound))
+ adjustFireLoss(rand(repair_lower_bound, repair_upper_bound))
+ user.visible_message("\The [user] mends some of \the [src]'s wounds.")
+ else
+ to_chat(user, "\The [src] is undamaged.")
+ return
+ return ..()
+
+/mob/living/simple_mob/construct/examine(mob/user)
+ ..(user)
+ var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
+ if (src.health < src.getMaxHealth())
+ msg += ""
+ if (src.health >= src.getMaxHealth()/2)
+ msg += "It looks slightly dented.\n"
+ else
+ msg += "It looks severely dented!\n"
+ msg += ""
+ msg += "*---------*"
+
+ user << msg
+
+//Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. Let 'em float in space.
+/mob/living/simple_mob/construct/Process_Spacemove()
+ return 1
+
+/*
+// Glowing Procs
+/mob/living/simple_mob/construct/proc/add_glow()
+ var/image/eye_glow = image(icon,"glow-[icon_state]")
+ eye_glow.plane = PLANE_LIGHTING_ABOVE
+ overlays += eye_glow
+ set_light(2, -2, l_color = "#FFFFFF")
+
+/mob/living/simple_mob/construct/proc/remove_glow()
+ overlays.Cut()
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm
new file mode 100644
index 0000000000..69d0da0251
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm
@@ -0,0 +1,30 @@
+////////////////////////////
+// Artificer
+////////////////////////////
+
+/mob/living/simple_mob/construct/artificer
+ name = "Artificer"
+ real_name = "Artificer"
+ construct_type = "artificer"
+ desc = "A bulbous construct dedicated to building and maintaining temples to their otherworldly lords."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "artificer"
+ icon_living = "artificer"
+ maxHealth = 150
+ health = 150
+ response_harm = "viciously beaten"
+ harm_intent_damage = 5
+ melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
+ melee_damage_upper = 20
+ attacktext = list("rammed")
+ attack_sound = 'sound/weapons/rapidslice.ogg'
+ construct_spells = list(/spell/aoe_turf/conjure/construct/lesser,
+ /spell/aoe_turf/conjure/wall,
+ /spell/aoe_turf/conjure/floor,
+ /spell/aoe_turf/conjure/soulstone,
+ /spell/aoe_turf/conjure/pylon,
+ /spell/aoe_turf/conjure/door,
+ /spell/aoe_turf/conjure/grille,
+ /spell/targeted/occult_repair_aura,
+ /spell/targeted/construct_advanced/mend_acolyte
+ )
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm
new file mode 100644
index 0000000000..9328d9cffd
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm
@@ -0,0 +1,40 @@
+////////////////////////////
+// Harvester
+////////////////////////////
+
+/mob/living/simple_mob/construct/harvester
+ name = "Harvester"
+ real_name = "Harvester"
+ construct_type = "harvester"
+ desc = "A tendril-laden construct piloted by a chained mind."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "harvester"
+ icon_living = "harvester"
+ maxHealth = 150
+ health = 150
+ melee_damage_lower = 20
+ melee_damage_upper = 25
+ attack_sharp = 1
+ attacktext = list("violently stabbed")
+ friendly = list("caresses")
+ movement_cooldown = 0
+
+ // environment_smash = 1 // Whatever this gets renamed to, Harvesters need to break things
+
+ attack_sound = 'sound/weapons/pierce.ogg'
+
+ armor = list(
+ "melee" = 10,
+ "bullet" = 20,
+ "laser" = 20,
+ "energy" = 20,
+ "bomb" = 20,
+ "bio" = 100,
+ "rad" = 100)
+
+ construct_spells = list(
+ /spell/aoe_turf/knock/harvester,
+ /spell/targeted/construct_advanced/inversion_beam,
+ /spell/targeted/construct_advanced/agonizing_sphere,
+ /spell/rune_write
+ )
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm
new file mode 100644
index 0000000000..31dfa4d34a
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm
@@ -0,0 +1,143 @@
+////////////////////////////
+// Juggernaut
+////////////////////////////
+
+/mob/living/simple_mob/construct/juggernaut
+ name = "Juggernaut"
+ real_name = "Juggernaut"
+ construct_type = "juggernaut"
+ desc = "A possessed suit of armour driven by the will of the restless dead"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "behemoth"
+ icon_living = "behemoth"
+ maxHealth = 300
+ health = 300
+ response_harm = "harmlessly punches"
+ harm_intent_damage = 0
+ melee_damage_lower = 30
+ melee_damage_upper = 40
+ attack_armor_pen = 60 //Being punched by a living, floating statue.
+ attacktext = list("smashed their armoured gauntlet into")
+ friendly = list("pats")
+ mob_size = MOB_HUGE
+
+
+ movement_cooldown = 6 //Not super fast, but it might catch up to someone in armor who got punched once or twice.
+
+// environment_smash = 2 // Whatever this gets renamed to, Juggernauts need to break things
+
+
+ attack_sound = 'sound/weapons/heavysmash.ogg'
+ status_flags = 0
+ resistance = 10
+ construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser,
+ /spell/targeted/fortify,
+ /spell/targeted/construct_advanced/slam
+ )
+
+ armor = list(
+ "melee" = 70,
+ "bullet" = 30,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+
+/mob/living/simple_mob/construct/juggernaut/Life()
+ weakened = 0
+ ..()
+
+/mob/living/simple_mob/construct/juggernaut/bullet_act(var/obj/item/projectile/P)
+ var/reflectchance = 80 - round(P.damage/3)
+ if(prob(reflectchance))
+ var/damage_mod = rand(2,4)
+ var/projectile_dam_type = P.damage_type
+ var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
+ var/armorcheck = run_armor_check(null, P.check_armour)
+ var/soakedcheck = get_armor_soak(null, P.check_armour)
+ if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
+ visible_message("The [P.name] bounces off of [src]'s shell!", \
+ "The [P.name] bounces off of [src]'s shell!")
+ new /obj/item/weapon/material/shard/shrapnel(src.loc)
+ if(!(P.damage_type == BRUTE || P.damage_type == BURN))
+ projectile_dam_type = BRUTE
+ incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased.
+ apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
+ return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect.
+ else
+ visible_message("The [P.name] gets reflected by [src]'s shell!", \
+ "The [P.name] gets reflected by [src]'s shell!")
+ damage_mod = rand(3,5)
+ incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
+ if(!(P.damage_type == BRUTE || P.damage_type == BURN))
+ projectile_dam_type = BURN
+ incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased.
+ apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
+
+ // Find a turf near or on the original location to bounce to
+ if(P.starting)
+ var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/turf/curloc = get_turf(src)
+
+ // redirect the projectile
+ P.redirect(new_x, new_y, curloc, src)
+ P.reflected = 1
+
+ return -1 // complete projectile permutation
+
+ return (..(P))
+
+/*
+ * The Behemoth. Admin-allowance only, still try to keep it in some guideline of 'Balanced', even if it means Security has to be fully geared to be so.
+ */
+
+/mob/living/simple_mob/construct/juggernaut/behemoth
+ name = "Behemoth"
+ real_name = "Behemoth"
+ desc = "The pinnacle of occult technology, Behemoths are nothing shy of both an Immovable Object, and Unstoppable Force."
+ maxHealth = 750
+ health = 750
+ speak_emote = list("rumbles")
+ melee_damage_lower = 50
+ melee_damage_upper = 50
+ attacktext = list("brutally crushed")
+ friendly = list("pokes") //Anything nice the Behemoth would do would still Kill the Human. Leave it at poke.
+ attack_sound = 'sound/weapons/heavysmash.ogg'
+ resistance = 10
+ icon_scale = 2
+ var/energy = 0
+ var/max_energy = 1000
+ armor = list(
+ "melee" = 60,
+ "bullet" = 60,
+ "laser" = 60,
+ "energy" = 30,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+ construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser,
+ /spell/targeted/fortify,
+ /spell/targeted/construct_advanced/slam
+ )
+
+/mob/living/simple_mob/construct/juggernaut/behemoth/bullet_act(var/obj/item/projectile/P)
+ var/reflectchance = 80 - round(P.damage/3)
+ if(prob(reflectchance))
+ visible_message("The [P.name] gets reflected by [src]'s shell!", \
+ "The [P.name] gets reflected by [src]'s shell!")
+
+ // Find a turf near or on the original location to bounce to
+ if(P.starting)
+ var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/turf/curloc = get_turf(src)
+
+ // redirect the projectile
+ P.redirect(new_x, new_y, curloc, src)
+ P.reflected = 1
+
+ return -1 // complete projectile permutation
+
+ return (..(P))
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm
new file mode 100644
index 0000000000..1a56abcdcd
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm
@@ -0,0 +1,48 @@
+////////////////////////////
+// Shade
+////////////////////////////
+
+/mob/living/simple_mob/construct/shade
+ name = "Shade"
+ real_name = "Shade"
+ desc = "A bound spirit"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "shade"
+ icon_living = "shade"
+ icon_dead = "shade_dead"
+
+ response_help = "puts their hand through"
+ response_disarm = "flails at"
+ response_harm = "punches"
+
+ melee_damage_lower = 5
+ melee_damage_upper = 15
+ attack_armor_pen = 100 //It's a ghost/horror from beyond, I ain't gotta explain 100 AP
+ attacktext = list("drained the life from")
+
+ minbodytemp = 0
+ maxbodytemp = 4000
+ min_oxy = 0
+ max_co2 = 0
+ max_tox = 0
+
+ universal_speak = 1
+
+ loot_list = list(/obj/item/weapon/ectoplasm = 100)
+
+/mob/living/simple_mob/construct/shade/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(istype(O, /obj/item/device/soulstone))
+ var/obj/item/device/soulstone/S = O;
+ S.transfer_soul("SHADE", src, user)
+ return
+ ..()
+
+/mob/living/simple_mob/construct/shade/death()
+ ..()
+ for(var/mob/M in viewers(src, null))
+ if((M.client && !( M.blinded )))
+ M.show_message("[src] lets out a contented sigh as their form unwinds.")
+
+ ghostize()
+ qdel(src)
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm
new file mode 100644
index 0000000000..13580bc845
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm
@@ -0,0 +1,33 @@
+////////////////////////////
+// Wraith
+////////////////////////////
+
+/mob/living/simple_mob/construct/wraith
+ name = "Wraith"
+ real_name = "Wraith"
+ construct_type = "wraith"
+ desc = "A wicked bladed shell contraption piloted by a bound spirit."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "floating"
+ icon_living = "floating"
+ maxHealth = 200
+ health = 200
+ melee_damage_lower = 25
+ melee_damage_upper = 30
+ attack_armor_pen = 15
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("slashed")
+ friendly = list("pinches")
+ movement_cooldown = 0
+ attack_sound = 'sound/weapons/rapidslice.ogg'
+ construct_spells = list(/spell/targeted/ethereal_jaunt/shift,
+ /spell/targeted/ambush_mode
+ )
+
+// environment_smash = 1 // Whatever this gets renamed to, Wraiths need to break things
+
+/mob/living/simple_mob/construct/wraith/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm
new file mode 100644
index 0000000000..3cc9df4fa3
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm
@@ -0,0 +1,68 @@
+/mob/living/simple_mob/creature
+ name = "creature"
+ desc = "A sanity-destroying otherthing."
+ icon = 'icons/mob/critter.dmi'
+ icon_state = "otherthing"
+ icon_living = "otherthing"
+ icon_dead = "otherthing-dead"
+
+ mob_class = MOB_CLASS_ABERRATION
+
+ faction = "creature"
+
+ maxHealth = 40
+ health = 40
+
+ harm_intent_damage = 8
+
+ melee_damage_lower = 8
+ melee_damage_upper = 15
+ attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP
+ attack_sharp = 1
+ attack_edge = 1
+
+ attacktext = list("chomped")
+ attack_sound = 'sound/weapons/bite.ogg'
+
+ speak_emote = list("gibbers")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+// Strong Variant
+/mob/living/simple_mob/creature/strong
+ maxHealth = 160
+ health = 160
+
+ harm_intent_damage = 5
+ melee_damage_lower = 13
+ melee_damage_upper = 25
+
+// Cult Variant
+/mob/living/simple_mob/creature/cult
+ mob_class = MOB_CLASS_DEMONIC
+
+ faction = "cult"
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ supernatural = TRUE
+
+/mob/living/simple_mob/creature/cult/cultify()
+ return
+
+// Strong Cult Variant
+/mob/living/simple_mob/creature/cult/strong
+ maxHealth = 160
+ health = 160
+
+ harm_intent_damage = 5
+ melee_damage_lower = 13
+ melee_damage_upper = 25
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm
new file mode 100644
index 0000000000..1c4ac8876c
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm
@@ -0,0 +1,77 @@
+/mob/living/simple_mob/faithless
+ name = "Faithless"
+ desc = "The Wish Granter's faith in humanity, incarnate"
+ icon_state = "faithless"
+ icon_living = "faithless"
+ icon_dead = "faithless_dead"
+
+ faction = "faithless"
+
+ mob_class = MOB_CLASS_DEMONIC
+
+ maxHealth = 50
+ health = 50
+
+ response_help = "passes through"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ harm_intent_damage = 10
+
+ melee_damage_lower = 10
+ melee_damage_upper = 18
+ attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP
+
+ attacktext = list("gripped")
+ attack_sound = 'sound/hallucinations/growl1.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+
+ taser_kill = FALSE
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+/mob/living/simple_mob/faithless/Process_Spacemove(var/check_drift = 0)
+ return 1
+
+/mob/living/simple_mob/faithless/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(prob(12))
+ L.Weaken(3)
+ L.visible_message("\the [src] knocks down \the [L]!")
+
+// Strong Variant
+/mob/living/simple_mob/faithless/strong
+ maxHealth = 100
+ health = 100
+
+ harm_intent_damage = 5
+ melee_damage_lower = 13
+ melee_damage_upper = 28
+
+// Cult Variant
+/mob/living/simple_mob/faithless/cult
+ faction = "cult"
+ supernatural = TRUE
+
+/mob/living/simple_mob/faithless/cult/cultify()
+ return
+
+// Strong Cult Variant
+/mob/living/simple_mob/faithless/cult/strong
+ maxHealth = 100
+ health = 100
+
+ harm_intent_damage = 5
+ melee_damage_lower = 13
+ melee_damage_upper = 28
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm
new file mode 100644
index 0000000000..79e5c4d349
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm
@@ -0,0 +1,27 @@
+/mob/living/simple_mob/tomato
+ name = "tomato"
+ desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!"
+ tt_desc = "X Solanum abominable"
+ icon_state = "tomato"
+ icon_living = "tomato"
+ icon_dead = "tomato_dead"
+
+ mob_class = MOB_CLASS_PLANT
+
+ faction = "plants"
+ maxHealth = 15
+ health = 15
+ poison_resist = 1.0
+
+ response_help = "prods"
+ response_disarm = "pushes aside"
+ response_harm = "smacks"
+
+ harm_intent_damage = 5
+ melee_damage_upper = 15
+ melee_damage_lower = 10
+ attacktext = list("mauled")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat
diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm
new file mode 100644
index 0000000000..30c891088c
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm
@@ -0,0 +1,43 @@
+/mob/living/simple_mob/animal/space/tree
+ name = "pine tree"
+ desc = "A pissed off tree-like alien. It seems annoyed with the festivities..."
+ tt_desc = "X Festivus tyrannus"
+ icon = 'icons/obj/flora/pinetrees.dmi'
+ icon_state = "pine_1"
+ icon_living = "pine_1"
+ icon_dead = "pine_1"
+ icon_gib = "pine_1"
+
+ mob_class = MOB_CLASS_PLANT
+
+ faction = "plants"
+ maxHealth = 250
+ health = 250
+ poison_resist = 1.0
+
+ response_help = "brushes"
+ response_disarm = "pushes"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 8
+ melee_damage_upper = 12
+ attacktext = list("bitten")
+ attack_sound = 'sound/weapons/bite.ogg'
+
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
+
+ pixel_x = -16
+
+/mob/living/simple_mob/animal/space/tree/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(prob(15))
+ L.Weaken(3)
+ L.visible_message(span("danger", "\The [src] knocks down \the [L]!"))
+
+/mob/living/simple_mob/animal/space/tree/death()
+ ..(null,"is hacked into pieces!")
+ playsound(loc, 'sound/effects/woodcutting.ogg', 100, 1)
+ new /obj/item/stack/material/wood(loc)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
new file mode 100644
index 0000000000..8986cbcbe3
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
@@ -0,0 +1,94 @@
+// These slimes lack certain xenobio features but get more combat-oriented goodies. Generally these are more oriented towards Explorers than Xenobiologists.
+
+/mob/living/simple_mob/slime/feral
+ name = "feral slime"
+ desc = "The result of slimes escaping containment from some xenobiology lab. \
+ Having the means to successfully escape their lab, as well as having to survive on a harsh, cold world has made these \
+ creatures rival the ferocity of other apex predators in this region of Sif. It is considered to be a very invasive species."
+ description_info = "Note that processing this large slime will give six cores."
+
+ cores = 6 // Xenobio will love getting their hands on these.
+
+ icon_state = "slime adult"
+ icon_living = "slime adult"
+ icon_dead = "slime adult dead"
+ glow_range = 5
+ glow_intensity = 4
+ icon_scale = 2 // Twice as big as the xenobio variant.
+ pixel_y = -10 // Since the base sprite isn't centered properly, the pixel auto-adjustment needs some help.
+ default_pixel_y = -10 // To prevent resetting above var.
+
+ maxHealth = 300
+ movement_cooldown = 10
+ melee_attack_delay = 0.5 SECONDS
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/pointblank
+
+
+// Slimebatoning/xenotasing it just makes it mad at you (which can be good if you're heavily armored and your friends aren't).
+/mob/living/simple_mob/slime/feral/slimebatoned(mob/living/user, amount)
+ taunt(user, TRUE)
+
+
+// ***********
+// *Dark Blue*
+// ***********
+
+// Dark Blue feral slimes can fire a strong icicle projectile every few seconds. The icicle hits hard and has some armor penetration.
+// They also have a similar aura as their xenobio counterparts, which inflicts cold damage. It also chills non-resistant mobs.
+
+/mob/living/simple_mob/slime/feral/dark_blue
+ name = "dark blue feral slime"
+ color = "#2398FF"
+ glow_toggle = TRUE
+ slime_color = "dark blue"
+ coretype = /obj/item/slime_extract/dark_blue
+ cold_resist = 1 // Complete immunity.
+ minbodytemp = 0
+ cold_damage_per_tick = 0
+
+ projectiletype = /obj/item/projectile/icicle
+ base_attack_cooldown = 2 SECONDS
+ ranged_attack_delay = 1 SECOND
+
+ player_msg = "You can fire an icicle projectile every two seconds. It hits hard, and armor has a hard time resisting it.
\
+ You are also immune to the cold, and you cause enemies around you to suffer periodic harm from the cold, if unprotected.
\
+ Unprotected enemies are also Chilled, making them slower and less evasive, and disabling effects last longer."
+
+/obj/item/projectile/icicle
+ name = "icicle"
+ icon_state = "ice_2"
+ damage = 40
+ damage_type = BRUTE
+ check_armour = "melee"
+ armor_penetration = 30
+ step_delay = 2 // Make it a bit easier to dodge since its not a bullet.
+ icon_scale = 2 // It hits like a truck.
+ sharp = TRUE
+
+/obj/item/projectile/icicle/on_impact(atom/A)
+ playsound(get_turf(A), "shatter", 70, 1)
+ return ..()
+
+/obj/item/projectile/icicle/get_structure_damage()
+ return damage / 2 // They're really deadly against mobs, but less effective against solid things.
+
+/mob/living/simple_mob/slime/feral/dark_blue/handle_special()
+ if(stat != DEAD)
+ cold_aura()
+ ..()
+
+/mob/living/simple_mob/slime/feral/dark_blue/proc/cold_aura()
+ for(var/mob/living/L in view(3, src))
+ if(L == src)
+ continue
+ chill(L)
+
+/mob/living/simple_mob/slime/feral/dark_blue/proc/chill(mob/living/L)
+ L.inflict_cold_damage(10)
+ if(L.get_cold_protection() < 1)
+ L.add_modifier(/datum/modifier/chilled, 5 SECONDS, src)
+
+ if(L.has_AI()) // Other AIs should react to hostile auras.
+ L.ai_holder.react_to_attack(src)
+
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
new file mode 100644
index 0000000000..dd756d267f
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
@@ -0,0 +1,216 @@
+// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this.
+
+/mob/living/simple_mob/slime
+ name = "slime"
+ desc = "It's a slime."
+ tt_desc = "A Macrolimbus vulgaris"
+ icon = 'icons/mob/slime2.dmi'
+ icon_state = "slime baby"
+ icon_living = "slime baby"
+ icon_dead = "slime baby dead"
+ var/shiny = FALSE // If true, will add a 'shiny' overlay.
+ var/icon_state_override = null // Used for special slime appearances like the rainbow slime.
+ color = "#CACACA"
+ glow_range = 3
+ glow_intensity = 2
+ gender = NEUTER
+
+ faction = "slime" // Note that slimes are hostile to other slimes of different color regardless of faction (unless Unified).
+ maxHealth = 150
+ movement_cooldown = 0
+ pass_flags = PASSTABLE
+ makes_dirt = FALSE // Goop
+ mob_class = MOB_CLASS_SLIME
+
+ response_help = "pets"
+
+ // Atmos stuff.
+ minbodytemp = T0C-30
+ heat_damage_per_tick = 0
+ cold_damage_per_tick = 40
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ unsuitable_atoms_damage = 0
+ shock_resist = 0.5 // Slimes are resistant to electricity, and it actually charges them.
+ taser_kill = FALSE
+ water_resist = 0 // Slimes are very weak to water.
+
+ melee_damage_lower = 10
+ melee_damage_upper = 15
+ base_attack_cooldown = 10 // One attack a second.
+ attack_sound = 'sound/weapons/bite.ogg'
+ attacktext = list("glomped")
+ speak_emote = list("chirps")
+ friendly = list("pokes")
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee
+ say_list_type = /datum/say_list/slime
+
+ var/cores = 1 // How many cores you get when placed in a Processor.
+ var/obj/item/clothing/head/hat = null // The hat the slime may be wearing.
+ var/slime_color = "grey" // Used for updating the name and for slime color-ism.
+ var/unity = FALSE // If true, slimes will consider other colors as their own. Other slimes will see this slime as the same color as well.
+ var/coretype = /obj/item/slime_extract/grey // What core is inside the slime, and what you get from the processor.
+ var/reagent_injected = null // Some slimes inject reagents on attack. This tells the game what reagent to use.
+ var/injection_amount = 5 // This determines how much.
+ var/mood = ":3" // Icon to use to display 'mood', as an overlay.
+
+ can_enter_vent_with = list(/obj/item/clothing/head)
+
+/datum/say_list/slime
+ speak = list("Blorp...", "Blop...")
+ emote_see = list("bounces", "jiggles", "sways")
+ emote_hear = list("squishes")
+
+/mob/living/simple_mob/slime/initialize()
+ verbs += /mob/living/proc/ventcrawl
+ update_mood()
+ glow_color = color
+ handle_light()
+ update_icon()
+ return ..()
+
+/mob/living/simple_mob/slime/Destroy()
+ if(hat)
+ drop_hat()
+ return ..()
+
+/mob/living/simple_mob/slime/death()
+ // Make dead slimes stop glowing.
+ glow_toggle = FALSE
+ handle_light()
+ ..()
+
+/mob/living/simple_mob/slime/revive()
+ // Make revived slimes resume glowing.
+ glow_toggle = initial(glow_toggle)
+ handle_light()
+ ..()
+
+/mob/living/simple_mob/slime/update_icon()
+ ..() // Do the regular stuff first.
+
+ if(stat != DEAD)
+ // General slime shine.
+ var/image/I = image(icon, src, "slime light")
+ I.appearance_flags = RESET_COLOR
+ add_overlay(I)
+
+ // 'Shiny' overlay, for gemstone-slimes.
+ if(shiny)
+ I = image(icon, src, "slime shiny")
+ I.appearance_flags = RESET_COLOR
+ add_overlay(I)
+
+ // Mood overlay.
+ I = image(icon, src, "aslime-[mood]")
+ I.appearance_flags = RESET_COLOR
+ add_overlay(I)
+
+ // Hat simulator.
+ if(hat)
+ var/hat_state = hat.item_state ? hat.item_state : hat.icon_state
+ var/image/I = image('icons/mob/head.dmi', src, hat_state)
+ I.pixel_y = -7 // Slimes are small.
+ I.appearance_flags = RESET_COLOR
+ add_overlay(I)
+
+// Controls the 'mood' overlay. Overrided in subtypes for specific behaviour.
+/mob/living/simple_mob/slime/proc/update_mood()
+ mood = "feral" // This is to avoid another override in the /feral subtype.
+
+/mob/living/simple_mob/slime/proc/unify()
+ unity = TRUE
+
+// Interface override, because slimes are supposed to attack other slimes of different color regardless of faction
+// (unless Unified, of course).
+/mob/living/simple_mob/slime/IIsAlly(mob/living/L)
+ . = ..()
+ if(.) // Need to do an additional check if its another slime.
+ if(istype(L, /mob/living/simple_mob/slime))
+ var/mob/living/simple_mob/slime/S = L
+ if(S.slime_color != src.slime_color)
+ if(S.unity || src.unity)
+ return TRUE
+ return FALSE
+ // The other stuff was already checked in parent proc, and the . variable will implicitly return the correct value.
+
+// Slimes regenerate passively.
+/mob/living/simple_mob/slime/handle_special()
+ adjustOxyLoss(-1)
+ adjustToxLoss(-1)
+ adjustFireLoss(-1)
+ adjustCloneLoss(-1)
+ adjustBruteLoss(-1)
+
+// Clicked on by empty hand.
+/mob/living/simple_mob/slime/attack_hand(mob/living/L)
+ if(L.a_intent == I_GRAB && hat)
+ remove_hat(L)
+ else
+ ..()
+
+// Clicked on while holding an object.
+/mob/living/simple_mob/slime/attackby(obj/item/I, mob/user)
+ if(istype(I, /obj/item/clothing/head)) // Handle hat simulator.
+ give_hat(I, user)
+ return
+
+ // Otherwise they're probably fighting the slime.
+ if(prob(25))
+ visible_message(span("warning", "\The [user]'s [I] passes right through \the [src]!"))
+ user.setClickCooldown(user.get_attack_speed(I))
+ return
+ ..()
+
+// Called when hit with an active slimebaton (or xeno taser).
+// Subtypes react differently.
+/mob/living/simple_mob/slime/proc/slimebatoned(mob/living/user, amount)
+ return
+
+// Hat simulator
+/mob/living/simple_mob/slime/proc/give_hat(var/obj/item/clothing/head/new_hat, var/mob/living/user)
+ if(!istype(new_hat))
+ to_chat(user, span("warning", "\The [new_hat] isn't a hat."))
+ return
+ if(hat)
+ to_chat(user, span("warning", "\The [src] is already wearing \a [hat]."))
+ return
+ else
+ user.drop_item(new_hat)
+ hat = new_hat
+ new_hat.forceMove(src)
+ to_chat(user, span("notice", "You place \a [new_hat] on \the [src]. How adorable!"))
+ update_icon()
+ return
+
+/mob/living/simple_mob/slime/proc/remove_hat(var/mob/living/user)
+ if(!hat)
+ to_chat(user, "\The [src] doesn't have a hat to remove.")
+ else
+ hat.forceMove(get_turf(src))
+ user.put_in_hands(hat)
+ to_chat(user, "You take away \the [src]'s [hat.name]. How mean.")
+ hat = null
+ update_icon()
+
+/mob/living/simple_mob/slime/proc/drop_hat()
+ if(!hat)
+ return
+ hat.forceMove(get_turf(src))
+ hat = null
+ update_icon()
+
+/mob/living/simple_mob/slime/speech_bubble_appearance()
+ return "slime"
+
+/mob/living/simple_mob/slime/proc/squish()
+ playsound(src.loc, 'sound/effects/slime_squish.ogg', 50, 0)
+ visible_message("\The [src] squishes!")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm
new file mode 100644
index 0000000000..2cda9bfc7e
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm
@@ -0,0 +1,76 @@
+// Code for slimes attacking other things.
+
+// Slime attacks change based on intent.
+/mob/living/simple_mob/slime/xenobio/apply_attack(mob/living/L, damage_to_do)
+ if(istype(L))
+ switch(a_intent)
+ if(I_HELP) // This shouldn't happen but just in case.
+ return FALSE
+
+ if(I_DISARM)
+ var/stun_power = between(0, power_charge + rand(0, 3), 10)
+
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ stun_power *= max(H.species.siemens_coefficient, 0)
+
+ if(prob(stun_power * 10)) // Try an electric shock.
+ power_charge = max(0, power_charge - 3)
+ L.visible_message(
+ span("danger", "\The [src] has shocked \the [L]!"),
+ span("danger", "\The [src] has shocked you!")
+ )
+ playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
+ L.Weaken(4)
+ L.Stun(4)
+ do_attack_animation(L)
+ if(L.buckled)
+ L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you.
+ L.stuttering = max(L.stuttering, stun_power)
+
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, L)
+ s.start()
+
+ if(prob(stun_power * 10) && stun_power >= 8)
+ L.adjustFireLoss(power_charge * rand(1, 2))
+ return FALSE
+
+ else if(prob(20)) // Try to do a regular disarm attack.
+ L.visible_message(
+ span("danger", "\The [src] has pounced at \the [L]!"),
+ span("danger", "\The [src] has pounced at you!")
+ )
+ playsound(src, 'sound/weapons/thudswoosh.ogg', 75, 1)
+ L.Weaken(2)
+ do_attack_animation(L)
+ if(L.buckled)
+ L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you.
+ return FALSE
+
+ else // Failed to do anything this time.
+ L.visible_message(
+ span("warning", "\The [src] has tried to pounce at \the [L]!"),
+ span("warning", "\The [src] has tried to pounce at you!")
+ )
+ playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1)
+ do_attack_animation(L)
+ return FALSE
+
+ if(I_GRAB)
+ start_consuming(L)
+ return FALSE
+
+ if(I_HURT)
+ return ..() // Regular stuff.
+ else
+ return ..() // Do the regular stuff if we're hitting a window/mech/etc.
+
+/mob/living/simple_mob/slime/xenobio/apply_melee_effects(mob/living/L)
+ if(istype(L) && a_intent == I_HURT)
+ // Pump them full of toxins, if able.
+ if(L.reagents && L.can_inject() && reagent_injected)
+ L.reagents.add_reagent(reagent_injected, injection_amount)
+
+ // Feed off of their flesh, if able.
+ consume(L, 5)
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
new file mode 100644
index 0000000000..b997dde35d
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
@@ -0,0 +1,169 @@
+// Handles hunger, starvation, growth, and eatting humans.
+
+// Might be best to make this a /mob/living proc and override.
+/mob/living/simple_mob/slime/xenobio/proc/adjust_nutrition(input)
+ nutrition = between(0, nutrition + input, get_max_nutrition())
+
+ if(input > 0)
+ // Gain around one level per 50 nutrition.
+ if(prob(input * 2))
+ power_charge = min(power_charge++, 10)
+ if(power_charge == 10)
+ adjustToxLoss(-10)
+
+ // Heal 1 point of damage per 5 nutrition coming in.
+ adjustBruteLoss(-input * 0.2)
+ adjustFireLoss(-input * 0.2)
+ adjustToxLoss(-input * 0.2)
+ adjustOxyLoss(-input * 0.2)
+ adjustCloneLoss(-input * 0.2)
+
+
+/mob/living/simple_mob/slime/xenobio/proc/get_max_nutrition() // Can't go above it
+ return is_adult ? 1200 : 1000
+
+/mob/living/simple_mob/slime/xenobio/proc/get_grow_nutrition() // Above it we grow, below it we can eat
+ return is_adult ? 1000 : 800
+
+/mob/living/simple_mob/slime/xenobio/proc/get_hunger_nutrition() // Below it we will always eat
+ return is_adult ? 600 : 500
+
+/mob/living/simple_mob/slime/xenobio/proc/get_starve_nutrition() // Below it we will eat before everything else
+ return is_adult ? 300 : 200
+
+// Called by Life().
+/mob/living/simple_mob/slime/xenobio/proc/handle_nutrition()
+ if(harmless)
+ return
+
+ if(prob(15))
+ adjust_nutrition(is_adult ? -2 : -1) // Adult slimes get hungry faster.
+
+ if(nutrition <= get_starve_nutrition())
+ handle_starvation()
+
+ else if(nutrition >= get_grow_nutrition() && amount_grown < 10)
+ adjust_nutrition(-20)
+ amount_grown = between(0, amount_grown + 1, 10)
+
+// Called if above proc happens while below a nutrition threshold.
+/mob/living/simple_mob/slime/xenobio/proc/handle_starvation()
+ if(nutrition < get_starve_nutrition() && !client) // if a slime is starving, it starts losing its friends
+ if(friends.len && prob(1))
+ var/mob/nofriend = pick(friends)
+ if(nofriend)
+ friends -= nofriend
+ say("[nofriend]... food now...")
+
+ if(nutrition <= 0)
+ adjustToxLoss(rand(1,3))
+ if(client && prob(5))
+ to_chat(src, span("danger", "You are starving!"))
+
+
+/mob/living/simple_mob/slime/xenobio/proc/handle_consumption()
+ if(victim && !stat)
+ if(istype(victim) && consume(victim, 20))
+ if(prob(25))
+ to_chat(src, span("notice", "You continue absorbing \the [victim]."))
+
+ else
+ var/list/feedback = list(
+ "This subject is incompatable",
+ "This subject does not have a life energy",
+ "This subject is empty",
+ "I am not satisfied",
+ "I can not feed from this subject",
+ "I do not feel nourished",
+ "This subject is not food"
+ )
+ to_chat(src, span("warning", "[pick(feedback)]..."))
+ stop_consumption()
+
+ if(victim)
+ victim.updatehealth()
+
+ else
+ stop_consumption()
+
+/mob/living/simple_mob/slime/xenobio/proc/start_consuming(mob/living/L)
+ if(!can_consume(L))
+ return
+ if(!Adjacent(L))
+ return
+
+ step_towards(src, L) // Get on top of them to feed.
+ if(loc != L.loc)
+ return
+
+ if(L.buckle_mob(src, forced = TRUE))
+ victim = L
+ update_icon()
+ set_AI_busy(TRUE) // Don't want the AI to interfere with eatting.
+ victim.visible_message(
+ span("danger", "\The [src] latches onto \the [victim]!"),
+ span("critical", "\The [src] latches onto you!")
+ )
+
+/mob/living/simple_mob/slime/xenobio/proc/stop_consumption(mob/living/L)
+ if(!victim)
+ return
+ victim.unbuckle_mob()
+ victim.visible_message(
+ span("notice", "\The [src] slides off of [victim]!"),
+ span("notice", "\The [src] slides off of you!")
+ )
+ victim = null
+ update_icon()
+ set_AI_busy(FALSE) // Resume normal operations.
+
+/mob/living/simple_mob/slime/xenobio/proc/can_consume(mob/living/L)
+ if(!L || !istype(L))
+ to_chat(src, "This subject is incomparable...")
+ return FALSE
+ if(harmless)
+ to_chat(src, "I am pacified... I cannot eat...")
+ return FALSE
+ if(L.mob_class & MOB_CLASS_SLIME)
+ to_chat(src, "I cannot feed on other slimes...")
+ return FALSE
+ if(L.isSynthetic())
+ to_chat(src, "This subject is not biological...")
+ return FALSE
+ if(L.getarmor(null, "bio") >= 75)
+ to_chat(src, "I cannot reach this subject's biological matter...")
+ return FALSE
+ if(!Adjacent(L))
+ to_chat(src, "This subject is too far away...")
+ return FALSE
+ if(L.getCloneLoss() >= L.getMaxHealth() * 1.5)
+ to_chat(src, "This subject does not have an edible life energy...")
+ return FALSE
+ if(L.has_buckled_mobs())
+ for(var/A in L.buckled_mobs)
+ if(istype(A, /mob/living/simple_mob/slime/xenobio))
+ if(A != src)
+ to_chat(src, "\The [A] is already feeding on this subject...")
+ return FALSE
+ return TRUE
+
+// This does the actual damage, as well as give nutrition and heals.
+// Assuming no bio armor, calling consume(10) will result in;
+// 6 clone damage to victim
+// 4 tox damage to victim.
+// 25 nutrition for the slime.
+// 2 points of damage healed on the slime (as a result of the nutrition).
+// 50% of giving +1 charge to the slime (same as above).
+/mob/living/simple_mob/slime/xenobio/proc/consume(mob/living/victim, amount)
+ if(can_consume(victim))
+ var/armor_modifier = abs((victim.getarmor(null, "bio") / 100) - 1)
+ var/damage_done = amount * armor_modifier
+ if(damage_done > 0)
+ victim.adjustCloneLoss(damage_done * 0.6)
+ victim.adjustToxLoss(damage_done * 0.4)
+ adjust_nutrition(damage_done * 5)
+ Beam(victim, icon_state = "slime_consume", time = 8)
+ to_chat(src, span("notice", "You absorb some biomaterial from \the [victim]."))
+ to_chat(victim, span("danger", "\The [src] consumes some of your flesh!"))
+ return TRUE
+ return FALSE
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm
new file mode 100644
index 0000000000..084f4633b2
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm
@@ -0,0 +1,54 @@
+// Contains code for slimes getting attacked, beat, touched, etc, and reacting to that.
+
+// Clicked on by empty hand.
+// Handles trying to wrestle a slime off of someone being eatten.
+/mob/living/simple_mob/slime/xenobio/attack_hand(mob/living/L)
+ if(victim) // Are we eating someone?
+ var/fail_odds = 30
+ if(victim == L) // Harder to get the slime off if it's you that is being eatten.
+ fail_odds = 60
+
+ if(prob(fail_odds))
+ visible_message(span("warning", "\The [L] attempts to wrestle \the [name] off!"))
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+
+ else
+ visible_message(span("warning", "\The [L] manages to wrestle \the [name] off!"))
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+
+ if(prob(40))
+ adjust_discipline(1) // Do this here so that it will be justified discipline.
+ stop_consumption()
+ step_away(src, L)
+
+ else
+ ..()
+
+// Handles the actual harming by a melee weapon.
+/mob/living/simple_mob/slime/xenobio/hit_with_weapon(obj/item/I, mob/living/user, effective_force, hit_zone)
+ ..() // Apply damage and etc.
+ if(!stat && effective_force > 0)
+ if(!is_justified_to_discipline()) // Wow, buddy, why am I getting attacked??
+ adjust_discipline(1) // This builds resentment due to being unjustified.
+
+ if(user in friends) // Friend attacking us for no reason.
+ if(prob(25))
+ friends -= user
+ say("[user]... not friend...")
+
+ else // We're actually being bad.
+ var/prob_to_back_down = round(effective_force)
+ if(is_adult)
+ prob_to_back_down /= 2
+ if(prob(prob_to_back_down))
+ adjust_discipline(2) // Justified.
+
+// Shocked grilles don't hurt slimes, and in fact give them charge.
+/mob/living/simple_mob/slime/xenobio/electrocute_act(shock_damage, obj/source, siemens_coeff = 1.0, def_zone = null)
+ power_charge = between(0, power_charge + round(shock_damage / 10), 10)
+ to_chat(src, span("notice", "\The [source] shocks you, and it charges you."))
+
+// Getting slimebatoned/xenotased.
+/mob/living/simple_mob/slime/xenobio/slimebatoned(mob/living/user, amount)
+ Weaken(amount)
+ adjust_discipline(round(amount/2))
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm
new file mode 100644
index 0000000000..5360dab7b3
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm
@@ -0,0 +1,23 @@
+// Handles the subjugation of slimes by force.
+// Mostly a way for things to talk to the AI indirectly.
+
+/mob/living/simple_mob/slime/xenobio/proc/adjust_discipline(amount, silent)
+ if(amount > 0)
+ to_chat(src, span("warning", "You've been disciplined!"))
+ if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ AI.adjust_discipline(amount, silent)
+
+
+/mob/living/simple_mob/slime/xenobio/proc/is_justified_to_discipline()
+ if(victim) // Punish if eating someone that isn't a monkey.
+ if(ishuman(victim))
+ var/mob/living/carbon/human/H = victim
+ if(istype(H.species, /datum/species/monkey))
+ return FALSE
+ return TRUE
+
+ else if(has_AI()) // Now for thoughtcrimes.
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ return AI.is_justified_to_discipline() // Will return true if targeting a non-monkey.
+ return FALSE
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm
new file mode 100644
index 0000000000..03cd14eb3a
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm
@@ -0,0 +1,784 @@
+// Here are where all the other colors of slime live.
+// They will generally fight each other if not Unified, meaning the xenobiologist has to seperate them.
+
+// Tier 1.
+
+/mob/living/simple_mob/slime/xenobio/purple
+ desc = "This slime is rather toxic to handle, as it is poisonous."
+ color = "#CC23FF"
+ slime_color = "purple"
+ coretype = /obj/item/slime_extract/purple
+ reagent_injected = "toxin"
+
+ description_info = "This slime spreads a toxin when it attacks. A biosuit or other thick armor can protect from the toxic attack."
+ player_msg = "You inject a harmful toxin when attacking."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/dark_purple,
+ /mob/living/simple_mob/slime/xenobio/dark_blue,
+ /mob/living/simple_mob/slime/xenobio/green,
+ /mob/living/simple_mob/slime/xenobio
+ )
+
+/mob/living/simple_mob/slime/xenobio/orange
+ desc = "This slime is known to be flammable and can ignite enemies."
+ color = "#FFA723"
+ slime_color = "orange"
+ coretype = /obj/item/slime_extract/orange
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ heat_resist = 1
+
+ description_info = "The slime is immune to burning attacks, and attacks from this slime will burn you, and can ignite you. \
+ A firesuit can protect from the burning attacks of this slime."
+ player_msg = "You inflict burning attacks, which causes additional damage, makes the target more flammable, and has a chance to ignite them.
\
+ You are also immune to burning attacks."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/dark_purple,
+ /mob/living/simple_mob/slime/xenobio/yellow,
+ /mob/living/simple_mob/slime/xenobio/red,
+ /mob/living/simple_mob/slime/xenobio
+ )
+
+/mob/living/simple_mob/slime/xenobio/orange/apply_melee_effects(atom/A)
+ ..()
+ if(isliving(A))
+ var/mob/living/L = A
+ L.inflict_heat_damage(is_adult ? 10 : 5)
+ to_chat(src, span("span", "You burn \the [L]."))
+ to_chat(L, span("danger", "You've been burned by \the [src]!"))
+ L.adjust_fire_stacks(1)
+ if(prob(12))
+ L.IgniteMob()
+
+/mob/living/simple_mob/slime/xenobio/blue
+ desc = "This slime produces 'cryotoxin' and uses it against their foes. Very deadly to other slimes."
+ color = "#19FFFF"
+ slime_color = "blue"
+ coretype = /obj/item/slime_extract/blue
+ reagent_injected = "cryotoxin"
+ cold_resist = 0.50 // Not as strong as dark blue, which has immunity.
+
+ description_info = "The slime is resistant to the cold, and attacks from this slime can inject cryotoxin into you. \
+ A biosuit or other thick armor can protect from the injection."
+ player_msg = "You inject cryotoxin on attack, which causes them to get very cold, slowing them down and harming them over time.
\
+ You are also resistant to cold attacks."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/dark_blue,
+ /mob/living/simple_mob/slime/xenobio/silver,
+ /mob/living/simple_mob/slime/xenobio/pink,
+ /mob/living/simple_mob/slime/xenobio
+ )
+
+
+/mob/living/simple_mob/slime/xenobio/metal
+ desc = "This slime is a lot more resilient than the others, due to having a metamorphic metallic and sloped surface."
+ color = "#5F5F5F"
+ slime_color = "metal"
+ shiny = TRUE
+ coretype = /obj/item/slime_extract/metal
+
+ description_info = "This slime is a lot more durable and tough to damage than the others. It also seems to provoke others to attack it over others."
+ player_msg = "You are more resilient and armored than more slimes. Your attacks will also encourage less intelligent enemies to focus on you."
+
+ maxHealth = 250
+ maxHealth_adult = 350
+
+ // The sloped armor.
+ // It's resistant to most weapons (but a spraybottle still kills it rather fast).
+ armor = list(
+ "melee" = 25,
+ "bullet" = 25,
+ "laser" = 25,
+ "energy" = 50,
+ "bomb" = 80,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ armor_soak = list(
+ "melee" = 5,
+ "bullet" = 5,
+ "laser" = 5,
+ "energy" = 0,
+ "bomb" = 0,
+ "bio" = 0,
+ "rad" = 0
+ )
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/silver,
+ /mob/living/simple_mob/slime/xenobio/yellow,
+ /mob/living/simple_mob/slime/xenobio/gold,
+ /mob/living/simple_mob/slime/xenobio
+ )
+
+/mob/living/simple_mob/slime/xenobio/metal/apply_melee_effects(atom/A)
+ ..()
+ if(isliving(A))
+ var/mob/living/L = A
+ L.taunt(src, TRUE) // We're the party tank now.
+
+// Tier 2
+
+/mob/living/simple_mob/slime/xenobio/yellow
+ desc = "This slime is very conductive, and is known to use electricity as a means of defense moreso than usual for slimes."
+ color = "#FFF423"
+ slime_color = "yellow"
+ coretype = /obj/item/slime_extract/yellow
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ shock_resist = 1
+
+ projectiletype = /obj/item/projectile/beam/lightning/slime
+ projectilesound = 'sound/effects/lightningbolt.ogg'
+ glow_toggle = TRUE
+
+ description_info = "In addition to being immune to electrical shocks, this slime will fire ranged lightning attacks at \
+ enemies if they are at range, inflict shocks upon entities they attack, and generate electricity for their stun \
+ attack faster than usual. Insulative or reflective armor can protect from these attacks."
+ player_msg = "You have a ranged electric attack. You also shock enemies you attack, and your electric stun attack charges passively.
\
+ You are also immune to shocking attacks."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/bluespace,
+ /mob/living/simple_mob/slime/xenobio/bluespace,
+ /mob/living/simple_mob/slime/xenobio/metal,
+ /mob/living/simple_mob/slime/xenobio/orange
+ )
+
+/mob/living/simple_mob/slime/xenobio/yellow/apply_melee_effects(atom/A)
+ ..()
+ if(isliving(A))
+ var/mob/living/L = A
+ L.inflict_shock_damage(is_adult ? 10 : 5)
+ to_chat(src, span("span", "You shock \the [L]."))
+ to_chat(L, span("danger", "You've been shocked by \the [src]!"))
+
+/mob/living/simple_mob/slime/xenobio/yellow/handle_special()
+ if(stat == CONSCIOUS)
+ if(prob(25))
+ power_charge = between(0, power_charge + 1, 10)
+ ..()
+
+/obj/item/projectile/beam/lightning/slime
+ power = 10
+ fire_sound = 'sound/effects/lightningbolt.ogg'
+
+
+/mob/living/simple_mob/slime/xenobio/dark_purple
+ desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it."
+ color = "#660088"
+ slime_color = "dark purple"
+ coretype = /obj/item/slime_extract/dark_purple
+ reagent_injected = "phoron"
+
+ description_info = "This slime applies phoron to enemies it attacks. A biosuit or other thick armor can protect from the toxic attack. \
+ If hit with a burning attack, it will erupt in flames."
+ player_msg = "You inject phoron into enemies you attack.
\
+ You will erupt into flames if harmed by fire!"
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/purple,
+ /mob/living/simple_mob/slime/xenobio/orange,
+ /mob/living/simple_mob/slime/xenobio/ruby,
+ /mob/living/simple_mob/slime/xenobio/ruby
+ )
+
+/mob/living/simple_mob/slime/xenobio/dark_purple/proc/ignite()
+ visible_message(span("critical", "\The [src] erupts in an inferno!"))
+ for(var/turf/simulated/target_turf in view(2, src))
+ target_turf.assume_gas("phoron", 30, 1500+T0C)
+ spawn(0)
+ target_turf.hotspot_expose(1500+T0C, 400)
+ qdel(src)
+
+/mob/living/simple_mob/slime/xenobio/dark_purple/ex_act(severity)
+ log_and_message_admins("[src] ignited due to a chain reaction with an explosion.")
+ ignite()
+
+/mob/living/simple_mob/slime/xenobio/dark_purple/fire_act(datum/gas_mixture/air, temperature, volume)
+ log_and_message_admins("[src] ignited due to exposure to fire.")
+ ignite()
+
+/mob/living/simple_mob/slime/xenobio/dark_purple/bullet_act(var/obj/item/projectile/P, var/def_zone)
+ if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
+ log_and_message_admins("[src] ignited due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].")
+ ignite()
+ else
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/dark_purple/attackby(var/obj/item/weapon/W, var/mob/user)
+ if(istype(W) && W.force && W.damtype == BURN)
+ log_and_message_admins("[src] ignited due to being hit with a burning weapon ([W]) by [key_name(user)].")
+ ignite()
+ else
+ ..()
+
+
+
+/mob/living/simple_mob/slime/xenobio/dark_blue
+ desc = "This slime makes other entities near it feel much colder, and is more resilient to the cold. It tends to kill other slimes rather quickly."
+ color = "#2398FF"
+ glow_toggle = TRUE
+ slime_color = "dark blue"
+ coretype = /obj/item/slime_extract/dark_blue
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ cold_resist = 1
+
+ description_info = "This slime is immune to the cold, however water will still kill it. Its presense, as well as its attacks, will \
+ also cause you additional harm from the cold. A winter coat or other cold-resistant clothing can protect from this."
+ player_msg = "You are immune to the cold, inflict additional cold damage on attack, and cause nearby entities to suffer from coldness."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/purple,
+ /mob/living/simple_mob/slime/xenobio/blue,
+ /mob/living/simple_mob/slime/xenobio/cerulean,
+ /mob/living/simple_mob/slime/xenobio/cerulean
+ )
+
+ minbodytemp = 0
+ cold_damage_per_tick = 0
+
+/mob/living/simple_mob/slime/xenobio/dark_blue/handle_special()
+ if(stat != DEAD)
+ cold_aura()
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/dark_blue/proc/cold_aura()
+ for(var/mob/living/L in view(2, src))
+ if(L == src)
+ continue
+ chill(L)
+
+ var/turf/T = get_turf(src)
+ var/datum/gas_mixture/env = T.return_air()
+ if(env)
+ env.add_thermal_energy(-10 * 1000)
+
+/mob/living/simple_mob/slime/xenobio/dark_blue/apply_melee_effects(atom/A)
+ ..()
+ if(isliving(A))
+ var/mob/living/L = A
+ chill(L)
+ to_chat(src, span("span", "You chill \the [L]."))
+ to_chat(L, span("danger", "You've been chilled by \the [src]!"))
+
+
+/mob/living/simple_mob/slime/xenobio/dark_blue/proc/chill(mob/living/L)
+ L.inflict_cold_damage(is_adult ? 10 : 5)
+ if(L.get_cold_protection() < 1 && L.has_AI()) // Harmful auras will make the AI react to its bearer.
+ L.ai_holder.react_to_attack(src)
+
+
+/mob/living/simple_mob/slime/xenobio/silver
+ desc = "This slime is shiny, and can deflect lasers or other energy weapons directed at it."
+ color = "#AAAAAA"
+ slime_color = "silver"
+ coretype = /obj/item/slime_extract/silver
+ shiny = TRUE
+
+ description_info = "Tasers, including the slime version, are ineffective against this slime. The slimebation still works."
+ player_msg = "You automatically reflect lasers, beams, and tasers that hit you."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/metal,
+ /mob/living/simple_mob/slime/xenobio/blue,
+ /mob/living/simple_mob/slime/xenobio/amber,
+ /mob/living/simple_mob/slime/xenobio/amber
+ )
+
+/mob/living/simple_mob/slime/xenobio/silver/bullet_act(var/obj/item/projectile/P, var/def_zone)
+ if(istype(P,/obj/item/projectile/beam) || istype(P, /obj/item/projectile/energy))
+ visible_message(span("danger", "\The [src] reflects \the [P]!"))
+
+ // Find a turf near or on the original location to bounce to
+ var/new_x = P.starting.x + pick(0, 0, 0, -1, 1, -2, 2)
+ var/new_y = P.starting.y + pick(0, 0, 0, -1, 1, -2, 2)
+ var/turf/curloc = get_turf(src)
+
+ // redirect the projectile
+ P.redirect(new_x, new_y, curloc, src)
+ P.reflected = TRUE
+ return PROJECTILE_CONTINUE // complete projectile permutation
+ else
+ ..()
+
+
+// Tier 3
+
+/mob/living/simple_mob/slime/xenobio/bluespace
+ desc = "Trapping this slime in a cell is generally futile, as it can teleport at will."
+ color = null
+ slime_color = "bluespace"
+ icon_state_override = "bluespace"
+ coretype = /obj/item/slime_extract/bluespace
+
+ description_info = "This slime will teleport to attack something if it is within a range of seven tiles. The teleport has a cooldown of five seconds."
+ player_msg = "You can teleport at will to a specific tile by clicking on it at range. This has a five second cooldown."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/bluespace,
+ /mob/living/simple_mob/slime/xenobio/bluespace,
+ /mob/living/simple_mob/slime/xenobio/yellow,
+ /mob/living/simple_mob/slime/xenobio/yellow
+ )
+
+ special_attack_min_range = 3
+ special_attack_max_range = 7
+ special_attack_cooldown = 5 SECONDS
+
+/mob/living/simple_mob/slime/xenobio/bluespace/do_special_attack(atom/A)
+ // Teleport attack.
+ if(!A)
+ to_chat(src, span("warning", "There's nothing to teleport to."))
+ return FALSE
+
+ var/list/nearby_things = range(1, A)
+ var/list/valid_turfs = list()
+
+ // All this work to just go to a non-dense tile.
+ for(var/turf/potential_turf in nearby_things)
+ var/valid_turf = TRUE
+ if(potential_turf.density)
+ continue
+ for(var/atom/movable/AM in potential_turf)
+ if(AM.density)
+ valid_turf = FALSE
+ if(valid_turf)
+ valid_turfs.Add(potential_turf)
+
+ var/turf/T = get_turf(src)
+ var/turf/target_turf = pick(valid_turfs)
+
+ if(!target_turf)
+ to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to."))
+ return FALSE
+
+ var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread
+ s1.set_up(5, 1, T)
+ var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread
+ s2.set_up(5, 1, target_turf)
+
+
+ T.visible_message(span("notice", "\The [src] vanishes!"))
+ s1.start()
+
+ forceMove(target_turf)
+ playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1)
+ to_chat(src, span("notice", "You teleport to \the [target_turf]."))
+
+ target_turf.visible_message(span("warning", "\The [src] appears!"))
+ s2.start()
+
+ if(Adjacent(A))
+ attack_target(A)
+
+
+/mob/living/simple_mob/slime/xenobio/ruby
+ desc = "This slime has great physical strength."
+ color = "#FF3333"
+ slime_color = "ruby"
+ shiny = TRUE
+ glow_toggle = TRUE
+ coretype = /obj/item/slime_extract/ruby
+
+ description_info = "This slime is unnaturally stronger, allowing it to hit much harder, take less damage, and be stunned for less time. \
+ Their glomp attacks also send the victim flying."
+ player_msg = "Your attacks knock back the target a fair distance.
\
+ You also hit harder, take less damage, and stuns affect you for less time."
+
+ melee_attack_delay = 1 SECOND
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/dark_purple,
+ /mob/living/simple_mob/slime/xenobio/dark_purple,
+ /mob/living/simple_mob/slime/xenobio/ruby,
+ /mob/living/simple_mob/slime/xenobio/ruby
+ )
+
+/mob/living/simple_mob/slime/xenobio/ruby/initialize()
+ add_modifier(/datum/modifier/slime_strength, null, src) // Slime is always swole.
+ return ..()
+
+/mob/living/simple_mob/slime/xenobio/ruby/apply_melee_effects(atom/A)
+ ..()
+
+ if(isliving(A) && a_intent == I_HURT)
+ var/mob/living/L = A
+ if(L.mob_size <= MOB_MEDIUM)
+ visible_message(span("danger", "\The [src] sends \the [L] flying with the impact!"))
+ playsound(src, "punch", 50, 1)
+ L.Weaken(1)
+ var/throwdir = get_dir(src, L)
+ L.throw_at(get_edge_target_turf(L, throwdir), 3, 1, src)
+ else
+ to_chat(L, span("warning", "\The [src] hits you with incredible force, but you remain in place."))
+
+
+/mob/living/simple_mob/slime/xenobio/amber
+ desc = "This slime seems to be an expert in the culinary arts, as they create their own food to share with others. \
+ They would probably be very important to other slimes, if the other colors didn't try to kill them."
+ color = "#FFBB00"
+ slime_color = "amber"
+ shiny = TRUE
+ glow_toggle = TRUE
+ coretype = /obj/item/slime_extract/amber
+
+ description_info = "This slime feeds nearby entities passively while it is alive. This can cause uncontrollable \
+ slime growth and reproduction if not kept in check. The amber slime cannot feed itself, but can be fed by other amber slimes."
+ player_msg = "You passively provide nutrition to nearby entities."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/silver,
+ /mob/living/simple_mob/slime/xenobio/silver,
+ /mob/living/simple_mob/slime/xenobio/amber,
+ /mob/living/simple_mob/slime/xenobio/amber
+ )
+
+/mob/living/simple_mob/slime/xenobio/amber/handle_special()
+ if(stat != DEAD)
+ feed_aura()
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/amber/proc/feed_aura()
+ for(var/mob/living/L in view(2, src))
+ if(L == src) // Don't feed themselves, or it is impossible to stop infinite slimes without killing all of the ambers.
+ continue
+ if(istype(L, /mob/living/simple_mob/slime/xenobio))
+ var/mob/living/simple_mob/slime/xenobio/X = L
+ X.adjust_nutrition(rand(15, 25))
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if(H.isSynthetic())
+ continue
+ H.nutrition = between(0, H.nutrition + rand(15, 25), 800)
+
+/mob/living/simple_mob/slime/xenobio/cerulean
+ desc = "This slime is generally superior in a wide range of attributes, compared to the common slime. The jack of all trades, but master of none."
+ color = "#4F7EAA"
+ slime_color = "cerulean"
+ coretype = /obj/item/slime_extract/cerulean
+
+ // Less than the specialized slimes, but higher than the rest.
+ maxHealth = 200
+ maxHealth_adult = 250
+
+ melee_damage_lower = 10
+ melee_damage_upper = 30
+
+ movement_cooldown = 0 // This actually isn't any faster due to AI limitations that hopefully the timer subsystem can fix in the future.
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/dark_blue,
+ /mob/living/simple_mob/slime/xenobio/dark_blue,
+ /mob/living/simple_mob/slime/xenobio/cerulean,
+ /mob/living/simple_mob/slime/xenobio/cerulean
+ )
+
+// Tier 4
+
+/mob/living/simple_mob/slime/xenobio/red
+ desc = "This slime is full of energy, and very aggressive. 'The red ones go faster.' seems to apply here."
+ color = "#FF3333"
+ slime_color = "red"
+ coretype = /obj/item/slime_extract/red
+ movement_cooldown = 0 // See above.
+
+ description_info = "This slime is faster than the others. Attempting to discipline this slime will always cause it to go rabid and berserk."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/red,
+ /mob/living/simple_mob/slime/xenobio/oil,
+ /mob/living/simple_mob/slime/xenobio/oil,
+ /mob/living/simple_mob/slime/xenobio/orange
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/red // Will enrage if disciplined.
+
+
+/mob/living/simple_mob/slime/xenobio/green
+ desc = "This slime is radioactive."
+ color = "#14FF20"
+ slime_color = "green"
+ coretype = /obj/item/slime_extract/green
+ glow_toggle = TRUE
+ reagent_injected = "radium"
+ var/rads = 25
+
+ description_info = "This slime will irradiate anything nearby passively, and will inject radium on attack. \
+ A radsuit or other thick and radiation-hardened armor can protect from this. It will only radiate while alive."
+ player_msg = "You passively irradiate your surroundings.
\
+ You also inject radium on attack."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/purple,
+ /mob/living/simple_mob/slime/xenobio/green,
+ /mob/living/simple_mob/slime/xenobio/emerald,
+ /mob/living/simple_mob/slime/xenobio/emerald
+ )
+
+/mob/living/simple_mob/slime/xenobio/green/handle_special()
+ if(stat != DEAD)
+ irradiate()
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/green/proc/irradiate()
+ radiation_repository.radiate(src, rads)
+
+
+
+/mob/living/simple_mob/slime/xenobio/pink
+ desc = "This slime has regenerative properties."
+ color = "#FF0080"
+ slime_color = "pink"
+ coretype = /obj/item/slime_extract/pink
+ glow_toggle = TRUE
+
+ description_info = "This slime will passively heal nearby entities within two tiles, including itself. It will only do this while alive."
+ player_msg = "You passively heal yourself and nearby allies."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/blue,
+ /mob/living/simple_mob/slime/xenobio/light_pink,
+ /mob/living/simple_mob/slime/xenobio/light_pink,
+ /mob/living/simple_mob/slime/xenobio/pink
+ )
+
+/mob/living/simple_mob/slime/xenobio/pink/handle_special()
+ if(stat != DEAD)
+ heal_aura()
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/pink/proc/heal_aura()
+ for(var/mob/living/L in view(src, 2))
+ if(L.stat == DEAD || !IIsAlly(L))
+ continue
+ L.add_modifier(/datum/modifier/aura/slime_heal, null, src)
+
+/datum/modifier/aura/slime_heal
+ name = "slime mending"
+ desc = "You feel somewhat gooy."
+ mob_overlay_state = "pink_sparkles"
+ stacks = MODIFIER_STACK_FORBID
+ aura_max_distance = 2
+
+ on_created_text = "Twinkling spores of goo surround you. It makes you feel healthier."
+ on_expired_text = "The spores of goo have faded, although you feel much healthier than before."
+
+/datum/modifier/aura/slime_heal/tick()
+ if(holder.stat == DEAD)
+ expire()
+
+ if(ishuman(holder)) // Robolimbs need this code sadly.
+ var/mob/living/carbon/human/H = holder
+ for(var/obj/item/organ/external/E in H.organs)
+ var/obj/item/organ/external/O = E
+ O.heal_damage(2, 2, 0, 1)
+ else
+ holder.adjustBruteLoss(-2)
+ holder.adjustFireLoss(-2)
+
+ holder.adjustToxLoss(-2)
+ holder.adjustOxyLoss(-2)
+ holder.adjustCloneLoss(-1)
+
+
+/mob/living/simple_mob/slime/xenobio/gold
+ desc = "This slime absorbs energy, and cannot be stunned by normal means."
+ color = "#EEAA00"
+ shiny = TRUE
+ slime_color = "gold"
+ coretype = /obj/item/slime_extract/gold
+ description_info = "This slime is immune to the slimebaton and taser, and will actually charge the slime, however it will still discipline the slime."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/metal,
+ /mob/living/simple_mob/slime/xenobio/gold,
+ /mob/living/simple_mob/slime/xenobio/sapphire,
+ /mob/living/simple_mob/slime/xenobio/sapphire
+ )
+
+/mob/living/simple_mob/slime/xenobio/gold/slimebatoned(mob/living/user, amount)
+ power_charge = between(0, power_charge + amount, 10)
+
+/mob/living/simple_mob/slime/xenobio/gold/get_description_interaction() // So it doesn't say to use a baton on them.
+ return list()
+
+
+// Tier 5
+
+/mob/living/simple_mob/slime/xenobio/oil
+ desc = "This slime is explosive and volatile. Smoking near it is probably a bad idea."
+ color = "#333333"
+ slime_color = "oil"
+ shiny = TRUE
+ coretype = /obj/item/slime_extract/oil
+
+ description_info = "If this slime suffers damage from a fire or heat based source, or if it is caught inside \
+ an explosion, it will explode. Oil slimes will also suicide-bomb themselves when fighting something that is not a monkey or slime."
+ player_msg = "You will explode if struck by a burning attack, or if you hit an enemy with a melee attack that is not a monkey or another slime."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/oil,
+ /mob/living/simple_mob/slime/xenobio/oil,
+ /mob/living/simple_mob/slime/xenobio/red,
+ /mob/living/simple_mob/slime/xenobio/red
+ )
+
+/mob/living/simple_mob/slime/xenobio/oil/proc/explode()
+ if(stat != DEAD)
+ explosion(src.loc, 0, 2, 4) // A bit weaker since the suicide charger tended to gib the poor sod being targeted.
+ if(src) // Delete ourselves if the explosion didn't do it.
+ qdel(src)
+
+/mob/living/simple_mob/slime/xenobio/oil/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = A
+ if(istype(H.species, /datum/species/monkey))
+ return ..()// Don't blow up when just eatting monkeys.
+
+ else if(isslime(L))
+ return ..()
+
+ // Otherwise blow ourselves up.
+ say(pick("Sacrifice...!", "Sssss...", "Boom...!"))
+ set_AI_busy(TRUE)
+ sleep(2 SECONDS)
+ log_and_message_admins("[src] has suicide-bombed themselves while trying to kill \the [L].")
+ explode()
+
+ return ..()
+
+/mob/living/simple_mob/slime/xenobio/oil/ex_act(severity)
+ log_and_message_admins("[src] exploded due to a chain reaction with another explosion.")
+ explode()
+
+/mob/living/simple_mob/slime/xenobio/oil/fire_act(datum/gas_mixture/air, temperature, volume)
+ log_and_message_admins("[src] exploded due to exposure to fire.")
+ explode()
+
+/mob/living/simple_mob/slime/xenobio/oil/bullet_act(obj/item/projectile/P, def_zone)
+ if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
+ log_and_message_admins("[src] exploded due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].")
+ explode()
+ else
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/oil/attackby(obj/item/weapon/W, mob/living/user)
+ if(istype(W) && W.force && W.damtype == BURN)
+ log_and_message_admins("[src] exploded due to being hit with a burning weapon ([W]) by [key_name(user)].")
+ explode()
+ else
+ ..()
+
+
+/mob/living/simple_mob/slime/xenobio/sapphire
+ desc = "This slime seems a bit brighter than the rest, both figuratively and literally."
+ color = "#2398FF"
+ slime_color = "sapphire"
+ shiny = TRUE
+ glow_toggle = TRUE
+ coretype = /obj/item/slime_extract/sapphire
+ ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/sapphire
+
+ description_info = "This slime uses more robust tactics when fighting and won't hold back, so it is dangerous to be alone \
+ with one if hostile, and especially dangerous if they outnumber you."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/sapphire,
+ /mob/living/simple_mob/slime/xenobio/sapphire,
+ /mob/living/simple_mob/slime/xenobio/gold,
+ /mob/living/simple_mob/slime/xenobio/gold
+ )
+
+
+/mob/living/simple_mob/slime/xenobio/emerald
+ desc = "This slime is faster than usual, even more so than the red slimes."
+ color = "#22FF22"
+ shiny = TRUE
+ glow_toggle = TRUE
+ slime_color = "emerald"
+ coretype = /obj/item/slime_extract/emerald
+
+ description_info = "This slime will make everything around it, and itself, faster for a few seconds, if close by."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/green,
+ /mob/living/simple_mob/slime/xenobio/green,
+ /mob/living/simple_mob/slime/xenobio/emerald,
+ /mob/living/simple_mob/slime/xenobio/emerald
+ )
+
+/mob/living/simple_mob/slime/xenobio/emerald/handle_special()
+ if(stat != DEAD)
+ zoom_aura()
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/emerald/proc/zoom_aura()
+ for(var/mob/living/L in view(src, 2))
+ if(L.stat == DEAD || !IIsAlly(L))
+ continue
+ L.add_modifier(/datum/modifier/technomancer/haste, 5 SECONDS, src)
+
+
+/mob/living/simple_mob/slime/xenobio/light_pink
+ desc = "This slime seems a lot more peaceful than the others."
+ color = "#FF8888"
+ slime_color = "light pink"
+ coretype = /obj/item/slime_extract/light_pink
+
+ description_info = "This slime is effectively always disciplined initially."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/pink,
+ /mob/living/simple_mob/slime/xenobio/pink,
+ /mob/living/simple_mob/slime/xenobio/light_pink,
+ /mob/living/simple_mob/slime/xenobio/light_pink
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/light_pink
+
+// Special
+/mob/living/simple_mob/slime/xenobio/rainbow
+ desc = "This slime changes colors constantly."
+ color = null // Uses a special icon_state.
+ slime_color = "rainbow"
+ coretype = /obj/item/slime_extract/rainbow
+ icon_state_override = "rainbow"
+ unity = TRUE
+
+ description_info = "This slime is considered to be the same color as all other slime colors at the same time for the purposes of \
+ other slimes being friendly to them, and therefore will never be harmed by another slime. \
+ Attacking this slime will provoke the wrath of all slimes within range."
+ player_msg = "You are considered to be the same color as every slime, \
+ meaning that you are considered an ally to all slimes."
+
+ slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/rainbow,
+ /mob/living/simple_mob/slime/xenobio/rainbow,
+ /mob/living/simple_mob/slime/xenobio/rainbow,
+ /mob/living/simple_mob/slime/xenobio/rainbow
+ )
+
+/mob/living/simple_mob/slime/xenobio/rainbow/initialize()
+ unify()
+ return ..()
+
+// The RD's pet slime.
+/mob/living/simple_mob/slime/xenobio/rainbow/kendrick
+ name = "Kendrick"
+ desc = "The Research Director's pet slime. It shifts colors constantly."
+ rainbow_core_candidate = FALSE
+ // Doing pacify() in initialize() won't actually pacify the AI due to the ai_holder not existing due to parent initialize() not being called yet.
+ // Instead lets just give them an ai_holder that does that for us.
+ ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/passive
+
+/mob/living/simple_mob/slime/xenobio/rainbow/kendrick/initialize()
+ pacify() // So the physical mob also gets made harmless.
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm
new file mode 100644
index 0000000000..f7f594f139
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm
@@ -0,0 +1,284 @@
+// These slimes have the mechanics xenobiologists care about, such as reproduction, mutating into new colors, and being able to submit through fear.
+
+/mob/living/simple_mob/slime/xenobio
+ desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists."
+ layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something.
+ ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes.
+ var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough.
+ var/maxHealth_adult = 200
+ var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough.
+ var/mob/living/victim = null // the person the slime is currently feeding on
+ var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly.
+ var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes.
+ var/list/slime_mutation = list(
+ /mob/living/simple_mob/slime/xenobio/orange,
+ /mob/living/simple_mob/slime/xenobio/metal,
+ /mob/living/simple_mob/slime/xenobio/blue,
+ /mob/living/simple_mob/slime/xenobio/purple
+ )
+ var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces
+ var/number = 0 // This is used to make the slime semi-unique for indentification.
+ var/harmless = FALSE // Set to true when pacified. Makes the slime harmless, not get hungry, and not be able to grow/reproduce.
+
+/mob/living/simple_mob/slime/xenobio/initialize()
+ ASSERT(ispath(ai_holder_type, /datum/ai_holder/simple_mob/xenobio_slime))
+ number = rand(1, 1000)
+ update_name()
+ return ..()
+
+/mob/living/simple_mob/slime/xenobio/Destroy()
+ if(victim)
+ stop_consumption() // Unbuckle us from our victim.
+ return ..()
+
+/mob/living/simple_mob/slime/xenobio/update_icon()
+ icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating" : ""]"
+ icon_dead = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead"
+ icon_rest = icon_dead
+ ..() // This will apply the correct icon_state and do the other overlay-related things.
+
+
+/mob/living/simple_mob/slime/xenobio/handle_special()
+ if(stat != DEAD)
+ handle_nutrition()
+
+ if(victim)
+ handle_consumption()
+
+ handle_stuttering() // ??
+
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/examine(mob/user)
+ ..()
+ if(hat)
+ to_chat(user, "It is wearing \a [hat].")
+
+ if(stat == DEAD)
+ to_chat(user, "It appears to be dead.")
+ else if(incapacitated(INCAPACITATION_DISABLED))
+ to_chat(user, "It appears to be incapacitated.")
+ else if(harmless)
+ to_chat(user, "It appears to have been pacified.")
+ else
+ if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ if(AI.rabid)
+ to_chat(user, "It seems very, very angry and upset.")
+ else if(AI.obedience >= 5)
+ to_chat(user, "It looks rather obedient.")
+ else if(AI.discipline)
+ to_chat(user, "It has been subjugated by force, at least for now.")
+
+/mob/living/simple_mob/slime/xenobio/proc/make_adult()
+ if(is_adult)
+ return
+
+ is_adult = TRUE
+ melee_damage_lower = round(melee_damage_lower * 2) // 20
+ melee_damage_upper = round(melee_damage_upper * 2) // 30
+ maxHealth = maxHealth_adult
+ amount_grown = 0
+ update_icon()
+ update_name()
+
+/mob/living/simple_mob/slime/xenobio/proc/update_name()
+ if(harmless) // Docile slimes are generally named, so we shouldn't mess with it.
+ return
+ name = "[slime_color] [is_adult ? "adult" : "baby"] [initial(name)] ([number])"
+ real_name = name
+
+/mob/living/simple_mob/slime/xenobio/update_mood()
+ var/old_mood = mood
+ if(incapacitated(INCAPACITATION_DISABLED))
+ mood = "sad"
+ else if(harmless)
+ mood = ":33"
+ else if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ if(AI.rabid)
+ mood = "angry"
+ else if(AI.target)
+ mood = "mischevous"
+ else if(AI.discipline)
+ mood = "pout"
+ else
+ mood = ":3"
+ else
+ mood = ":3"
+
+ if(old_mood != mood)
+ update_icon()
+
+/mob/living/simple_mob/slime/xenobio/proc/enrage()
+ if(harmless)
+ return
+ if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ AI.enrage()
+
+/mob/living/simple_mob/slime/xenobio/proc/pacify()
+ harmless = TRUE
+ if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ AI.pacify()
+
+ faction = "neutral"
+
+ // If for whatever reason the mob AI (or player) decides to try to attack something anyways.
+ melee_damage_upper = 0
+ melee_damage_lower = 0
+
+ update_mood()
+
+
+// These are verbs so that player slimes can evolve/split.
+/mob/living/simple_mob/slime/xenobio/verb/evolve()
+ set category = "Slime"
+ set desc = "This will let you evolve from baby to adult slime."
+
+ if(stat)
+ to_chat(src, span("warning", "I must be conscious to do this..."))
+ return
+
+ if(harmless)
+ to_chat(src, span("warning", "I have been pacified. I cannot evolve..."))
+ return
+
+ if(!is_adult)
+ if(amount_grown >= 10)
+ make_adult()
+ else
+ to_chat(src, span("warning", "I am not ready to evolve yet..."))
+ else
+ to_chat(src, span("warning", "I have already evolved..."))
+
+
+/mob/living/simple_mob/slime/xenobio/verb/reproduce()
+ set category = "Slime"
+ set desc = "This will make you split into four new slimes."
+
+ if(stat)
+ to_chat(src, span("warning", "I must be conscious to do this..."))
+ return
+
+ if(harmless)
+ to_chat(src, span("warning", "I have been pacified. I cannot reproduce..."))
+ return
+
+ if(is_adult)
+ if(amount_grown >= 10)
+ // Check if there's enough 'room' to split.
+ var/list/nearby_things = orange(1, src)
+ var/free_tiles = 0
+ for(var/turf/T in nearby_things)
+ var/free = TRUE
+ if(T.density) // No walls.
+ continue
+ for(var/atom/movable/AM in T)
+ if(AM.density)
+ free = FALSE
+ break
+
+ if(free)
+ free_tiles++
+
+ if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies.
+ to_chat(src, span("warning", "It is too cramped here to reproduce..."))
+ return
+
+ var/list/babies = list()
+ for(var/i = 1 to 4)
+ babies.Add(make_new_slime())
+
+ var/mob/living/simple_mob/slime/new_slime = pick(babies)
+ new_slime.universal_speak = universal_speak
+ if(src.mind)
+ src.mind.transfer_to(new_slime)
+ else
+ new_slime.key = src.key
+ qdel(src)
+ else
+ to_chat(src, span("warning", "I am not ready to reproduce yet..."))
+ else
+ to_chat(src, span("warning", "I have not evolved enough to reproduce yet..."))
+
+// Used when reproducing or dying.
+/mob/living/simple_mob/slime/xenobio/proc/make_new_slime(var/desired_type)
+ var/t = src.type
+ if(desired_type)
+ t = desired_type
+ if(prob(mutation_chance / 10))
+ t = /mob/living/simple_mob/slime/xenobio/rainbow
+ else if(prob(mutation_chance) && slime_mutation.len)
+ t = slime_mutation[rand(1, slime_mutation.len)]
+ var/mob/living/simple_mob/slime/xenobio/baby = new t(loc)
+
+ // Handle 'inheriting' from parent slime.
+ baby.mutation_chance = mutation_chance
+ baby.power_charge = round(power_charge / 4)
+
+ pass_on_data(baby) // Transfer the AI stuff slowly, sadly.
+
+ if(!istype(baby, /mob/living/simple_mob/slime/xenobio/rainbow))
+ baby.unity = unity
+ baby.faction = faction
+ baby.friends = friends.Copy()
+
+ step_away(baby, src)
+ return baby
+
+/mob/living/simple_mob/slime/xenobio/proc/pass_on_data(mob/living/simple_mob/slime/xenobio/baby)
+ // This is superdumb but the AI datum won't exist until the new slime's initialize() finishes.
+ var/new_discipline = 0
+ var/new_obedience = 0
+ var/new_resentment = 0
+ var/new_rabid = FALSE
+
+ // First, get this slime's AI values since they are likely to be deleted in a moment.
+ if(src && src.has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/our_AI = ai_holder
+ new_discipline = max(our_AI.discipline - 1, 0)
+ new_obedience = max(our_AI.obedience - 1, 0)
+ new_resentment = max(our_AI.resentment - 1, 0)
+ new_rabid = our_AI.rabid
+
+ spawn(2) // Race conditions are fun, but with the first two letters capitalized.
+ if(istype(baby) && baby.has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/their_AI = baby.ai_holder
+
+ if(!istype(baby, /mob/living/simple_mob/slime/xenobio/light_pink))
+ their_AI.discipline = new_discipline
+ their_AI.obedience = new_obedience
+
+ their_AI.resentment = new_resentment
+
+ their_AI.rabid = new_rabid
+
+/mob/living/simple_mob/slime/xenobio/get_description_interaction()
+ var/list/results = list()
+
+ if(!stat)
+ results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad."
+
+ results += ..()
+
+ return results
+
+/mob/living/simple_mob/slime/xenobio/get_description_info()
+ var/list/lines = list()
+ var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \
+ They can be extremely dangerous if not handled properly."
+ lines.Add(intro_line)
+ lines.Add(null) // To pad the line breaks.
+
+ var/list/rewards = list()
+ for(var/potential_color in slime_mutation)
+ var/mob/living/simple_mob/slime/S = potential_color
+ rewards.Add(initial(S.slime_color))
+ var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough."
+ lines.Add(reward_line)
+ lines.Add(null)
+
+ lines.Add(description_info)
+ return lines.Join("\n")
\ No newline at end of file
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index b84ecdbc84..43a2182731 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -737,13 +737,12 @@
/mob/proc/facedir(var/ndir)
- if(!canface() || (client && (client.moving || (world.time < client.move_delay))))
+ if(!canface() || (client && (client.moving || (world.time < move_delay))))
return 0
set_dir(ndir)
if(buckled && buckled.buckle_movable)
buckled.set_dir(ndir)
- if(client)
- client.move_delay += movement_delay()
+ move_delay += movement_delay()
return 1
@@ -996,7 +995,7 @@ mob/proc/yank_out_object()
/mob/proc/has_brain_worms()
for(var/I in contents)
- if(istype(I,/mob/living/simple_animal/borer))
+ if(istype(I,/mob/living/simple_mob/animal/borer))
return I
return 0
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 7e012c71a0..38611ee92f 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -7,6 +7,8 @@
var/datum/mind/mind
var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak
+ var/move_delay = null // For movement speed delays.
+ var/next_move = null // For click delay, despite the misleading name.
//Not in use yet
var/obj/effect/organstructure/organStructure = null
@@ -62,7 +64,6 @@
var/sdisabilities = 0 //Carbon
var/disabilities = 0 //Carbon
var/atom/movable/pulling = null
- var/next_move = null
var/transforming = null //Carbon
var/other = 0.0
var/eye_blind = null //Carbon
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 186487d0b9..6c31f54f8e 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -54,6 +54,9 @@ proc/isdeaf(A)
/mob/proc/break_cloak()
return
+/mob/proc/is_cloaked()
+ return FALSE
+
proc/hasorgans(A) // Fucking really??
return ishuman(A)
@@ -534,19 +537,17 @@ proc/is_blind(A)
return threatcount
-/mob/living/simple_animal/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest)
+/mob/living/simple_mob/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest)
var/threatcount = ..()
if(. == SAFE_PERP)
return SAFE_PERP
- if(!istype(src, /mob/living/simple_animal/retaliate/goat))
- if(hostile)
- if(faction != "neutral") // Otherwise Runtime gets killed.
- threatcount += 4
+ if(has_AI() && ai_holder.hostile && faction != "neutral") // Otherwise Runtime gets killed.
+ threatcount += 4
return threatcount
// Beepsky will (try to) only beat 'bad' slimes.
-/mob/living/simple_animal/slime/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest)
+/mob/living/simple_mob/slime/xenobio/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest)
var/threatcount = 0
if(stat == DEAD)
@@ -565,8 +566,10 @@ proc/is_blind(A)
if(victim)
threatcount += 4
*/
- if(rabid)
- threatcount = 10
+ if(has_AI())
+ var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder
+ if(AI.rabid)
+ threatcount = 10
return threatcount
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 08c84d2402..9b24476e11 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -11,8 +11,12 @@
return
/mob/proc/setMoveCooldown(var/timeout)
- if(client)
- client.move_delay = max(world.time + timeout, client.move_delay)
+ move_delay = max(world.time + timeout, move_delay)
+
+/mob/proc/check_move_cooldown()
+ if(world.time < src.move_delay)
+ return FALSE // Need to wait more.
+ return TRUE
/client/North()
..()
@@ -199,7 +203,8 @@
if(moving) return 0
- if(world.time < move_delay) return
+ if(!mob.check_move_cooldown())
+ return
if(locate(/obj/effect/stop/, mob.loc))
for(var/obj/effect/stop/S in mob.loc)
@@ -271,21 +276,21 @@
src << "You're pinned to a wall by [mob.pinned[1]]!"
return 0
- move_delay = world.time//set move delay
+ mob.move_delay = world.time//set move delay
switch(mob.m_intent)
if("run")
if(mob.drowsyness > 0)
- move_delay += 6
- move_delay += config.run_speed
+ mob.move_delay += 6
+ mob.move_delay += config.run_speed
if("walk")
- move_delay += config.walk_speed
- move_delay += mob.movement_delay()
+ mob.move_delay += config.walk_speed
+ mob.move_delay += mob.movement_delay()
if(istype(mob.buckled, /obj/vehicle))
//manually set move_delay for vehicles so we don't inherit any mob movement penalties
//specific vehicle move delays are set in code\modules\vehicles\vehicle.dm
- move_delay = world.time
+ mob.move_delay = world.time
//drunk driving
if(mob.confused && prob(20)) //vehicles tend to keep moving in the same direction
direct = turn(direct, pick(90, -90))
@@ -314,14 +319,14 @@
if(prob(50)) direct = turn(direct, pick(90, -90))
if("walk")
if(prob(25)) direct = turn(direct, pick(90, -90))
- move_delay += 2
+ mob.move_delay += 2
return mob.buckled.relaymove(mob,direct)
//We are now going to move
moving = 1
//Something with pulling things
if(locate(/obj/item/weapon/grab, mob))
- move_delay = max(move_delay, world.time + 7)
+ mob.move_delay = max(mob.move_delay, world.time + 7)
var/list/L = mob.ret_grab()
if(istype(L, /list))
if(L.len == 2)
@@ -570,4 +575,4 @@
/client/verb/moveleft()
set name = ".moveleft"
set instant = 1
- Move(get_step(mob, WEST), WEST)
\ No newline at end of file
+ Move(get_step(mob, WEST), WEST)
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 3835bbb144..3a0499b7b2 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -750,9 +750,14 @@
icon_state = "hair_belenkotied"
flags = HAIR_TIEABLE
- belenkotied
- name = "Supernova"
- icon_state = "hair_supernova"
+ glossy
+ name = "Glossy"
+ icon_state = "hair_glossy"
+ flags = HAIR_TIEABLE
+
+ sharpponytail
+ name = "Sharp Ponytail"
+ icon_state = "hair_sharpponytail"
flags = HAIR_TIEABLE
/*
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index dcd95c20de..3b3477b833 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -227,7 +227,7 @@
for(var/t in organs) //this really should not be necessary
qdel(t)
- var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
+ var/mob/living/simple_mob/animal/passive/dog/corgi/new_corgi = new /mob/living/simple_mob/animal/passive/dog/corgi (loc)
new_corgi.a_intent = I_HURT
new_corgi.key = key
@@ -237,7 +237,7 @@
/mob/living/carbon/human/Animalize()
- var/list/mobtypes = typesof(/mob/living/simple_animal)
+ var/list/mobtypes = typesof(/mob/living/simple_mob)
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
if(!safe_animal(mobpath))
@@ -271,7 +271,7 @@
/mob/proc/Animalize()
- var/list/mobtypes = typesof(/mob/living/simple_animal)
+ var/list/mobtypes = typesof(/mob/living/simple_mob)
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
if(!safe_animal(mobpath))
@@ -297,39 +297,29 @@
if(!MP)
return 0 //Sanity, this should never happen.
+/*
if(ispath(MP, /mob/living/simple_animal/space_worm))
return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning.
-
- if(ispath(MP, /mob/living/simple_animal/construct/behemoth))
- return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/armoured))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/wraith))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/builder))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
+*/
//Good mobs!
- if(ispath(MP, /mob/living/simple_animal/cat))
+ if(ispath(MP, /mob/living/simple_mob/animal/passive/cat))
return 1
- if(ispath(MP, /mob/living/simple_animal/corgi))
+ if(ispath(MP, /mob/living/simple_mob/animal/passive/dog))
return 1
- if(ispath(MP, /mob/living/simple_animal/crab))
+ if(ispath(MP, /mob/living/simple_mob/animal/passive/crab))
return 1
- if(ispath(MP, /mob/living/simple_animal/hostile/carp))
+ if(ispath(MP, /mob/living/simple_mob/animal/space/carp))
return 1
- if(ispath(MP, /mob/living/simple_animal/shade))
+ if(ispath(MP, /mob/living/simple_mob/construct))
return 1
- if(ispath(MP, /mob/living/simple_animal/hostile/tomato))
+ if(ispath(MP, /mob/living/simple_mob/tomato))
return 1
- if(ispath(MP, /mob/living/simple_animal/mouse))
+ if(ispath(MP, /mob/living/simple_mob/animal/passive/mouse))
return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak)
- if(ispath(MP, /mob/living/simple_animal/hostile/bear))
+ if(ispath(MP, /mob/living/simple_mob/animal/space/bear))
return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak)
- if(ispath(MP, /mob/living/simple_animal/parrot))
+ if(ispath(MP, /mob/living/simple_mob/animal/passive/bird/parrot))
return 1 //Parrots are no longer unfinished! -Nodrak
//Not in here? Must be untested!
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index 1f245ba3a3..1a184b034f 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -64,11 +64,13 @@
/mob/proc/can_overcome_gravity()
return FALSE
-/mob/living/carbon/human/can_overcome_gravity()
- return species && species.can_overcome_gravity(src)
+/mob/living/can_overcome_gravity()
+ return hovering
-/mob/living/simple_animal/construct/can_overcome_gravity()
- return 1 //They care not for standard physics.
+/mob/living/carbon/human/can_overcome_gravity()
+ . = ..()
+ if(!.)
+ return species && species.can_overcome_gravity(src)
/mob/observer/zMove(direction)
var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src)
@@ -98,33 +100,41 @@
return ..()
/mob/observer/can_ztravel()
- return 1
+ return TRUE
-/mob/living/simple_animal/construct/can_ztravel()
- return 1
+/mob/living/can_ztravel()
+ if(incapacitated())
+ return FALSE
+ return hovering
/mob/living/carbon/human/can_ztravel()
if(incapacitated())
- return 0
+ return FALSE
+
+ if(hovering)
+ return TRUE
if(Process_Spacemove())
- return 1
+ return TRUE
if(Check_Shoegrip()) //scaling hull with magboots
for(var/turf/simulated/T in trange(1,src))
if(T.density)
- return 1
+ return TRUE
/mob/living/silicon/robot/can_ztravel()
if(incapacitated() || is_dead())
- return 0
+ return FALSE
+
+ if(hovering)
+ return TRUE
if(Process_Spacemove()) //Checks for active jetpack
- return 1
+ return FALSE
for(var/turf/simulated/T in trange(1,src)) //Robots get "magboots"
if(T.density)
- return 1
+ return TRUE
// TODO - Leshana Experimental
@@ -208,19 +218,15 @@
if((locate(/obj/structure/disposalpipe/up) in below) || locate(/obj/machinery/atmospherics/pipe/zpipe/up in below))
return FALSE
+/mob/living/can_fall()
+ if(hovering)
+ return FALSE
+ return ..()
+
/mob/living/carbon/human/can_fall()
if(..())
return species.can_fall(src)
-/mob/living/simple_animal/parrot/can_fall() // Poly can fly.
- return FALSE
-
-/mob/living/simple_animal/hostile/carp/can_fall() // So can carp apparently.
- return FALSE
-
-/mob/living/simple_animal/construct/can_fall() //As do Constructs.
- return FALSE
-
// Check if this atom prevents things standing on it from falling. Return TRUE to allow the fall.
/obj/proc/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf)
return TRUE
diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm
index 3a014b5ae7..894309c8e7 100644
--- a/code/modules/multiz/turf.dm
+++ b/code/modules/multiz/turf.dm
@@ -148,4 +148,10 @@
/turf/simulated/open/is_space()
var/turf/below = GetBelow(src)
- return !below || below.is_space()
\ No newline at end of file
+ return !below || below.is_space()
+
+/turf/simulated/open/is_safe_to_enter(mob/living/L)
+ if(L.can_fall())
+ if(!locate(/obj/structure/stairs) in GetBelow(src))
+ return FALSE
+ return ..()
\ No newline at end of file
diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm
index 12671d584d..7385987a58 100644
--- a/code/modules/organs/internal/brain.dm
+++ b/code/modules/organs/internal/brain.dm
@@ -107,7 +107,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
if(name == initial(name))
name = "\the [owner.real_name]'s [initial(name)]"
- var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
+ var/mob/living/simple_mob/animal/borer/borer = owner.has_brain_worms()
if(borer)
borer.detatch() //Should remove borer if the brain is removed - RR
diff --git a/code/modules/organs/misc.dm b/code/modules/organs/misc.dm
index 862c96a96f..30515e746b 100644
--- a/code/modules/organs/misc.dm
+++ b/code/modules/organs/misc.dm
@@ -34,7 +34,7 @@
..()
- var/mob/living/simple_animal/borer/B = owner.has_brain_worms()
+ var/mob/living/simple_mob/animal/borer/B = owner.has_brain_worms()
if(B)
B.leave_host()
B.ckey = owner.ckey
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 4a81179c72..4a24500fd3 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -19,7 +19,7 @@
/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob)
if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
- if(!istype(usr, /mob/living/simple_animal))
+ if(!istype(usr, /mob/living/simple_mob))
if( !usr.get_active_hand() ) //if active hand is empty
var/mob/living/carbon/human/H = user
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index c239d1352a..7137160fd9 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -33,7 +33,6 @@ var/global/photo_count = 0
var/icon/img //Big photo image
var/scribble //Scribble on the back.
var/icon/tiny
- var/cursed = 0
var/photo_size = 3
/obj/item/weapon/photo/New()
@@ -237,10 +236,6 @@ var/global/photo_count = 0
else
mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]."
- for(var/mob/living/simple_animal/hostile/statue/S in the_turf)
- if(S)
- mob_detail += "You can see \a [S] on the photo. Its stare makes you feel uneasy." //"That which holds the image of an angel, becomes itself an angel."
-
return mob_detail
/obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
@@ -282,20 +277,7 @@ var/global/photo_count = 0
y_c--
x_c = x_c - size
-
-
-
var/obj/item/weapon/photo/p = createpicture(target, user, turfs, mobs, flag)
- if(findtext(mobs, "Its stare makes you feel uneasy"))
- p.cursed = 1
- user.visible_message("Something starts to slowly manifest from the picture!")
- spawn(150)
- var/turf/T = get_turf(p)
- var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T)
- S.banishable = 1//At least you can get rid of those bastards
- T.visible_message("The photo turns into \a [S]!")
- qdel(p)
-
printpicture(user, p)
@@ -339,16 +321,6 @@ var/global/photo_count = 0
p.pixel_y = pixel_y
p.photo_size = photo_size
p.scribble = scribble
- p.cursed = cursed
- if(p.cursed)
- var/turf/T = get_turf(p)
- T.visible_message("Something starts to slowly manifest from the picture!")
- spawn(150)
- T = get_turf(p) //second time, because the photo could've moved
- var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T)
- S.banishable = 1//At least you can get rid of those bastards
- T.visible_message("The photo turns into \a [S]!")
- qdel(p)
if(copy_id)
p.id = id
diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm
index 4a7b042149..371130511a 100644
--- a/code/modules/planet/sif.dm
+++ b/code/modules/planet/sif.dm
@@ -400,38 +400,38 @@ var/datum/planet/sif/planet_sif = null
/datum/weather/sif/hail/process_effects()
..()
- for(var/mob/living/carbon/human/H in living_mob_list)
+ for(var/humie in human_mob_list)
+ var/mob/living/carbon/human/H = humie
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.outdoors)
continue // They're indoors, so no need to pelt them with ice.
- // If they have an open umbrella, it'll guard from rain
- // Message plays every time the umbrella gets stolen, just so they're especially aware of what's happening
+ // If they have an open umbrella, it'll guard from hail
+ var/obj/item/weapon/melee/umbrella/U
if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella))
- var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
- if(U.open)
- if(show_message)
- to_chat(H, "Hail patters gently onto your umbrella.")
- continue
+ U = H.get_active_hand()
else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
- var/obj/item/weapon/melee/umbrella/U = H.get_inactive_hand()
- if(U.open)
- if(show_message)
- to_chat(H, "Hail patters gently onto your umbrella.")
- continue
-
+ U = H.get_inactive_hand()
+ if(U && U.open)
+ if(show_message)
+ to_chat(H, "Hail patters onto your umbrella.")
+ continue
+
var/target_zone = pick(BP_ALL)
var/amount_blocked = H.run_armor_check(target_zone, "melee")
var/amount_soaked = H.get_armor_soak(target_zone, "melee")
- if(amount_blocked >= 100)
+ var/damage = rand(1,3)
+
+ if(amount_blocked >= 30)
+ continue // No need to apply damage. Hardhats are 30. They should probably protect you from hail on your head.
+ //Voidsuits are likewise 40, and riot, 80. Clothes are all less than 30.
+
+ if(amount_soaked >= damage)
continue // No need to apply damage.
- if(amount_soaked >= 10)
- continue // No need to apply damage.
-
- H.apply_damage(rand(1, 3), BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
+ H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
if(show_message)
to_chat(H, effect_message)
@@ -446,4 +446,4 @@ var/datum/planet/sif/planet_sif = null
observed_message = "Everything is red. Something really wrong is going on."
transition_messages = list(
"The sky turns blood red!"
- )
\ No newline at end of file
+ )
diff --git a/code/modules/power/singularity/act.dm b/code/modules/power/singularity/act.dm
index f24134dd63..cf71ec39c5 100644
--- a/code/modules/power/singularity/act.dm
+++ b/code/modules/power/singularity/act.dm
@@ -115,6 +115,15 @@
ChangeTurf(get_base_turf_by_area(src))
return 2
+/turf/simulated/floor/singularity_pull(S, current_size)
+ if(flooring && current_size >= STAGE_THREE)
+ if(prob(current_size / 2))
+ var/leave_tile = TRUE
+ if(broken || burnt || flooring.flags & TURF_IS_FRAGILE)
+ leave_tile = FALSE
+ playsound(src, 'sound/items/crowbar.ogg', 50, 1)
+ make_plating(leave_tile)
+
/turf/simulated/wall/singularity_pull(S, current_size)
if(!reinf_material)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 2d9f1803ba..24d36506f0 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -1,7 +1,7 @@
#define SOLAR_MAX_DIST 40
-var/solar_gen_rate = 1500
-var/list/solars_list = list()
+GLOBAL_VAR_INIT(solar_gen_rate, 1500)
+GLOBAL_LIST_EMPTY(solars_list)
/obj/machinery/power/solar
name = "solar panel"
@@ -25,8 +25,8 @@ var/list/solars_list = list()
/obj/machinery/power/solar/drain_power()
return -1
-/obj/machinery/power/solar/New(var/turf/loc, var/obj/item/solar_assembly/S)
- ..(loc)
+/obj/machinery/power/solar/initialize(mapload, obj/item/solar_assembly/S)
+ . = ..()
Make(S)
connect_to_network()
@@ -51,7 +51,7 @@ var/list/solars_list = list()
if(!S)
S = new /obj/item/solar_assembly(src)
S.glass_type = /obj/item/stack/material/glass
- S.anchored = 1
+ S.anchored = TRUE
S.loc = src
if(S.glass_type == /obj/item/stack/material/glass/reinforced) //if the panel is in reinforced glass
health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to
@@ -102,18 +102,18 @@ var/list/solars_list = list()
src.set_dir(angle2dir(adir))
return
-//calculates the fraction of the sunlight that the panel recieves
+//calculates the fraction of the SSsun.sunlight that the panel recieves
/obj/machinery/power/solar/proc/update_solar_exposure()
- if(!sun)
+ if(!SSsun.sun)
return
if(obscured)
sunfrac = 0
return
- //find the smaller angle between the direction the panel is facing and the direction of the sun (the sign is not important here)
- var/p_angle = min(abs(adir - sun.angle), 360 - abs(adir - sun.angle))
+ //find the smaller angle between the direction the panel is facing and the direction of the SSsun.sun (the sign is not important here)
+ var/p_angle = min(abs(adir - SSsun.sun.angle), 360 - abs(adir - SSsun.sun.angle))
- if(p_angle > 90) // if facing more than 90deg from sun, zero output
+ if(p_angle > 90) // if facing more than 90deg from SSsun.sun, zero output
sunfrac = 0
return
@@ -123,14 +123,14 @@ var/list/solars_list = list()
/obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY
if(stat & BROKEN)
return
- if(!sun || !control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed
+ if(!SSsun.sun || !control) //if there's no SSsun.sun or the panel is not linked to a solar control computer, no need to proceed
return
if(powernet)
if(powernet == control.powernet)//check if the panel is still connected to the computer
- if(obscured) //get no light from the sun, so don't generate power
+ if(obscured) //get no light from the SSsun.sun, so don't generate power
return
- var/sgen = solar_gen_rate * sunfrac
+ var/sgen = GLOB.solar_gen_rate * sunfrac
add_avail(sgen)
control.gen += sgen
else //if we're no longer on the same powernet, remove from control computer
@@ -173,7 +173,7 @@ var/list/solars_list = list()
. = PROCESS_KILL
return
-//trace towards sun to see if we're in shadow
+//trace towards SSsun.sun to see if we're in shadow
/obj/machinery/power/solar/proc/occlusion()
var/ax = x // start at the solar panel
@@ -181,8 +181,8 @@ var/list/solars_list = list()
var/turf/T = null
for(var/i = 1 to 20) // 20 steps is enough
- ax += sun.dx // do step
- ay += sun.dy
+ ax += SSsun.sun.dx // do step
+ ay += SSsun.sun.dy
T = locate( round(ax,0.5),round(ay,0.5),z)
@@ -306,12 +306,12 @@ var/list/solars_list = list()
/obj/machinery/power/solar_control/disconnect_from_network()
..()
- solars_list.Remove(src)
+ GLOB.solars_list.Remove(src)
/obj/machinery/power/solar_control/connect_to_network()
var/to_return = ..()
if(powernet) //if connected and not already in solar_list...
- solars_list |= src //... add it
+ GLOB.solars_list |= src //... add it
return to_return
//search for unconnected panels and trackers in the computer powernet and connect them
@@ -330,7 +330,7 @@ var/list/solars_list = list()
connected_tracker = T
T.set_control(src)
-//called by the sun controller, update the facing angle (either manually or via tracking) and rotates the panels accordingly
+//called by the SSsun.sun controller, update the facing angle (either manually or via tracking) and rotates the panels accordingly
/obj/machinery/power/solar_control/proc/update()
if(stat & (NOPOWER | BROKEN))
return
@@ -341,7 +341,7 @@ var/list/solars_list = list()
cdir = targetdir //...the current direction is the targetted one (and rotates panels to it)
if(2) // auto-tracking
if(connected_tracker)
- connected_tracker.set_angle(sun.angle)
+ connected_tracker.set_angle(SSsun.sun.angle)
set_panels(cdir)
updateDialog()
@@ -375,7 +375,7 @@ var/list/solars_list = list()
/obj/machinery/power/solar_control/interact(mob/user)
var/t = "Generated power : [round(lastgen)] W
"
- t += "Star Orientation: [sun.angle]° ([angle2text(sun.angle)])
"
+ t += "Star Orientation: [SSsun.sun.angle]° ([angle2text(SSsun.sun.angle)])
"
t += "Array Orientation: [rate_control(src,"cdir","[cdir]°",1,15)] ([angle2text(cdir)])
"
t += "Tracking:"
switch(track)
@@ -477,7 +477,7 @@ var/list/solars_list = list()
track = text2num(href_list["track"])
if(track == 2)
if(connected_tracker)
- connected_tracker.set_angle(sun.angle)
+ connected_tracker.set_angle(SSsun.sun.angle)
set_panels(cdir)
else if (track == 1) //begin manual tracking
src.targetdir = src.cdir
@@ -487,7 +487,7 @@ var/list/solars_list = list()
if(href_list["search_connected"])
src.search_for_connected()
if(connected_tracker && track == 2)
- connected_tracker.set_angle(sun.angle)
+ connected_tracker.set_angle(SSsun.sun.angle)
src.set_panels(cdir)
interact(usr)
@@ -537,7 +537,7 @@ var/list/solars_list = list()
spawn(150) // Wait 15 seconds to ensure everything was set up properly (such as, powernets, solar panels, etc.
src.search_for_connected()
if(connected_tracker && track == 2)
- connected_tracker.set_angle(sun.angle)
+ connected_tracker.set_angle(SSsun.sun.angle)
src.set_panels(cdir)
//
@@ -546,7 +546,7 @@ var/list/solars_list = list()
/obj/item/weapon/paper/solar
name = "paper- 'Going green! Setup your own solar array instructions.'"
- info = "
Welcome
At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or phoron! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!
Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
"
+ info = "
Welcome
At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or phoron! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!
Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the SSsun.sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the SSsun.sun's movements and to send commands to the solar panels to change direction with the SSsun.sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
"
/proc/rate_control(var/S, var/V, var/C, var/Min=1, var/Max=5, var/Limit=null) //How not to name vars
var/href = "
60) amount_per_pill = 60
- var/name = sanitizeSafe(input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)") as null|text, MAX_NAME_LEN)
+ var/pill_cube = "pill"
+ if(condi)//For the condimaster
+ pill_cube = "cube"
+ else
+ pill_cube = "pill"
+
+ var/name = sanitizeSafe(input(usr,"Name:","Name your [pill_cube]!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)") as null|text, MAX_NAME_LEN)
+
if(!name) //Blank name (sanitized to nothing, or left empty) or cancel
return
+
if(reagents.total_volume/count < 1) //Sanity checking.
return
while (count--)
@@ -243,7 +252,11 @@
P.name = "[name] pill"
P.pixel_x = rand(-7, 7) //random position
P.pixel_y = rand(-7, 7)
- P.icon_state = "pill"+pillsprite
+ if(!condi) //If normal
+ P.icon_state = "pill"+pillsprite
+ else //If condi is on
+ P.icon_state = "bouilloncube"//Reskinned monkey cube
+ P.desc = "A dissolvable cube."
reagents.trans_to_obj(P,amount_per_pill)
if(src.loaded_pill_bottle)
if(loaded_pill_bottle.contents.len < loaded_pill_bottle.max_storage_space)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
index 59eba0e341..612dd51ea1 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
@@ -42,6 +42,13 @@
var/effective_dose = dose
if(issmall(M)) effective_dose *= 2
+ if(alien == IS_SLIME) // Treat it like nutriment for the jello, but not equivalent.
+ M.heal_organ_damage(0.2 * removed * volume_mod, 0) // More 'effective' blood means more usable material.
+ M.nutrition += 20 * removed * volume_mod
+ M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed)
+ M.adjustToxLoss(removed / 2) // Still has some water in the form of plasma.
+ return
+
if(effective_dose > 5)
M.adjustToxLoss(removed)
if(effective_dose > 15)
@@ -59,6 +66,9 @@
var/mob/living/carbon/human/H = M
if(H.isSynthetic())
return
+ if(alien == IS_SLIME)
+ affect_ingest(M, alien, removed)
+ return
if(data && data["virus2"])
var/list/vlist = data["virus2"]
if(vlist.len)
@@ -70,6 +80,9 @@
M.antibodies |= data["antibodies"]
/datum/reagent/blood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ if(alien == IS_SLIME) //They don't have blood, so it seems weird that they would instantly 'process' the chemical like another species does.
+ affect_ingest(M, alien, removed)
+ return
M.inject_blood(src, volume * volume_mod)
remove_self(volume)
@@ -148,8 +161,8 @@
/datum/reagent/water/touch_mob(var/mob/living/L, var/amount)
if(istype(L))
// First, kill slimes.
- if(istype(L, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/slime/S = L
+ if(istype(L, /mob/living/simple_mob/slime))
+ var/mob/living/simple_mob/slime/S = L
S.adjustToxLoss(15 * amount)
S.visible_message("[S]'s flesh sizzles where the water touches it!", "Your flesh burns in the water!")
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 4ff4a2f808..ac8d4c0b0a 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -300,8 +300,6 @@
M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 215)
if(prob(1))
M.emote("shiver")
- if(istype(M, /mob/living/simple_animal/slime))
- M.bodytemperature = max(M.bodytemperature - rand(10,20), 0)
holder.remove_reagent("capsaicin", 5)
/datum/reagent/frostoil/cryotoxin //A longer lasting version of frost oil.
@@ -341,8 +339,6 @@
M.apply_effect(2, AGONY, 0)
if(prob(5))
M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!")
- if(istype(M, /mob/living/simple_animal/slime))
- M.bodytemperature += rand(10, 25)
holder.remove_reagent("frostoil", 5)
/datum/reagent/condensedcapsaicin
@@ -487,8 +483,6 @@
M.apply_effect(4, AGONY, 0)
if(prob(5))
M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!")
- if(istype(M, /mob/living/simple_animal/slime))
- M.bodytemperature += rand(15, 30)
holder.remove_reagent("frostoil", 5)
/* Drinks */
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index 68dae8aac9..ea9e17d581 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -106,6 +106,8 @@
M.drowsyness = max(0, M.drowsyness - 6 * removed * chem_effective)
M.hallucination = max(0, M.hallucination - 9 * removed * chem_effective)
M.adjustToxLoss(-4 * removed * chem_effective)
+ if(prob(10))
+ M.remove_a_modifier_of_type(/datum/modifier/poisoned)
/datum/reagent/carthatoline
name = "Carthatoline"
@@ -121,6 +123,8 @@
if(M.getToxLoss() && prob(10))
M.vomit(1)
M.adjustToxLoss(-8 * removed)
+ if(prob(30))
+ M.remove_a_modifier_of_type(/datum/modifier/poisoned)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name[O_LIVER]
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
index 53ce37b3ef..ff753a5b37 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
@@ -360,7 +360,7 @@
S.dirt = 0
T.clean_blood()
- for(var/mob/living/simple_animal/slime/M in T)
+ for(var/mob/living/simple_mob/slime/M in T)
M.adjustToxLoss(rand(5, 10))
/datum/reagent/space_cleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 5aefbc96d3..7afdfac7ca 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -37,8 +37,8 @@
/obj/machinery/iv_drip,
/obj/machinery/disease2/incubator,
/obj/machinery/disposal,
- /mob/living/simple_animal/cow,
- /mob/living/simple_animal/retaliate/goat,
+ /mob/living/simple_mob/animal/passive/cow,
+ /mob/living/simple_mob/animal/goat,
/obj/machinery/computer/centrifuge,
/obj/machinery/sleeper,
/obj/machinery/smartfridge/,
diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm
index 651d96a36c..5f5e5af55e 100644
--- a/code/modules/shieldgen/directional_shield.dm
+++ b/code/modules/shieldgen/directional_shield.dm
@@ -88,6 +88,8 @@
but allow those projectiles to leave the shield from the inside. Blocking too many damaging projectiles will cause the shield to fail."
icon = 'icons/obj/device.dmi'
icon_state = "signmaker_sec"
+ light_range = 4
+ light_power = 4
var/active = FALSE // If it's on.
var/shield_health = 400 // How much damage the shield blocks before breaking. This is a shared health pool for all shields attached to this projector.
var/max_shield_health = 400 // Ditto. This is fairly high, but shields are really big, you can't miss them, and laser carbines pump out so much hurt.
@@ -170,6 +172,8 @@
var/new_color = rgb(new_r, new_g, new_b)
+ set_light(light_range, light_power, new_color)
+
// Now deploy the new color to all the shields.
for(var/obj/effect/directional_shield/S in active_shields)
S.update_color(new_color)
diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm
index 023d5fee95..1c5b8d2965 100644
--- a/code/modules/shieldgen/energy_field.dm
+++ b/code/modules/shieldgen/energy_field.dm
@@ -53,6 +53,12 @@
user.setClickCooldown(user.get_attack_speed(W))
..()
+/obj/effect/energy_field/attack_generic(mob/user, damage)
+ if(damage)
+ adjust_strength(-damage / 20)
+ user.do_attack_animation(src)
+ user.setClickCooldown(user.get_attack_speed())
+
/obj/effect/energy_field/attack_hand(var/mob/living/user)
impact_effect(3) // Harmless, but still produces the 'impact' effect.
..()
diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm
index a6a02fd6a3..97d506aefa 100644
--- a/code/modules/shuttles/shuttle.dm
+++ b/code/modules/shuttles/shuttle.dm
@@ -211,7 +211,7 @@
for(var/mob/living/carbon/bug in destination)
bug.gib()
- for(var/mob/living/simple_animal/pest in destination)
+ for(var/mob/living/simple_mob/pest in destination)
pest.gib()
origin.move_contents_to(destination, direction=direction)
diff --git a/code/modules/spells/aoe_turf/summons.dm b/code/modules/spells/aoe_turf/summons.dm
index 996b583585..f8a6b4094a 100644
--- a/code/modules/spells/aoe_turf/summons.dm
+++ b/code/modules/spells/aoe_turf/summons.dm
@@ -20,7 +20,7 @@
invocation_type = SpI_SHOUT
range = 1
- summon_type = list(/mob/living/simple_animal/hostile/carp)
+ summon_type = list(/mob/living/simple_mob/animal/space/carp)
hud_state = "wiz_carp"
@@ -36,6 +36,6 @@
summon_amt = 10
range = 3
- summon_type = list(/mob/living/simple_animal/hostile/creature)
+ summon_type = list(/mob/living/simple_mob/creature)
hud_state = "wiz_creature"
\ No newline at end of file
diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm
index 4aa0aa1918..3415ad0ead 100644
--- a/code/modules/spells/spell_code.dm
+++ b/code/modules/spells/spell_code.dm
@@ -198,10 +198,10 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now
if(findNullRod(T))
return 0
- if(istype(user, /mob/living/simple_animal) && holder == user)
- var/mob/living/simple_animal/SA = user
- if(SA.purge)
- SA << "The nullrod's power interferes with your own!"
+ if(istype(user, /mob/living/simple_mob) && holder == user)
+ var/mob/living/simple_mob/SM = user
+ if(SM.purge)
+ SM << "The nullrod's power interferes with your own!"
return 0
if(!src.check_charge(skipcharge, user)) //sees if we can cast based on charges alone
diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm
index 515453f6a3..1f41ce9e3d 100644
--- a/code/modules/spells/spellbook.dm
+++ b/code/modules/spells/spellbook.dm
@@ -221,11 +221,6 @@
new /obj/item/clothing/head/helmet/space/void/wizard(get_turf(H))
temp = "You have purchased a suit of wizard armor."
max_uses--
- if("staffanimation")
- feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
- new /obj/item/weapon/gun/energy/staff/animate(get_turf(H))
- temp = "You have purchased a staff of animation."
- max_uses--
if("scrying")
feedback_add_details("wizard_spell_learned","SO") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
new /obj/item/weapon/scrying(get_turf(H))
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index 8e21e9e8a3..a86842837b 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -206,8 +206,8 @@
BITSET(target.hud_updateflag, IMPLOYAL_HUD)
//Handle possessive brain borers.
- if(istype(obj,/mob/living/simple_animal/borer))
- var/mob/living/simple_animal/borer/worm = obj
+ if(istype(obj,/mob/living/simple_mob/animal/borer))
+ var/mob/living/simple_mob/animal/borer/worm = obj
if(worm.controlling)
target.release_control()
worm.detatch()
diff --git a/code/modules/tension/tension.dm b/code/modules/tension/tension.dm
index 913f1d2dff..82151a7e78 100644
--- a/code/modules/tension/tension.dm
+++ b/code/modules/tension/tension.dm
@@ -9,35 +9,42 @@
/atom/movable/proc/guess_threat_level(var/mob/living/threatened)
return 0
-/mob/living/simple_animal
+/mob/living/simple_mob
var/threat_level = null // Set this if you want an explicit danger rating.
-/mob/living/simple_animal/guess_threat_level(var/mob/living/threatened)
+/mob/living/simple_mob/guess_threat_level(var/mob/living/threatened)
if(threat_level) // If they have a predefined number, use it.
return threat_level
// Otherwise we need to guess how scary this thing is.
var/threat_guess = 0
// First lets consider their attack ability.
+ var/will_point_blank = FALSE
+ if(has_AI())
+ will_point_blank = ai_holder.pointblank
+
var/potential_damage = 0
- if(!ranged) //Melee damage.
+ if(!projectiletype || ( get_dist(src, threatened >= 1) && !will_point_blank ) ) // Melee damage.
potential_damage = (melee_damage_lower + melee_damage_upper) / 2
+
+ // Treat potential_damage as estimated DPS. If the enemy attacks twice as fast as usual, it will double the number.
+ potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay)
else
- if(projectiletype)
- var/obj/item/projectile/P = new projectiletype(src)
- if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary.
- potential_damage = P.agony / 2
- else
- potential_damage = P.damage
- if(P.damage_type == HALLOSS) // Not sure if any projectiles do this, but can't be too safe.
- potential_damage /= 2
- // Rubber bullets, I guess.
- potential_damage += P.agony / 2
+ var/obj/item/projectile/P = new projectiletype(src)
+ if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary.
+ potential_damage = P.agony / 2
+ else
+ potential_damage = P.damage
+ if(P.damage_type == HALLOSS) // Not sure if any projectiles do this, but can't be too safe.
+ potential_damage /= 2
+ // Rubber bullets, I guess.
+ potential_damage += P.agony / 2
+ qdel(P)
- if(rapid) // This makes them shoot three times per cycle.
- potential_damage *= 3
+ potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay)
+
+ // Special attacks are ultra-specific to the mob so a generic threat assessment isn't really possible.
- qdel(P)
threat_guess += potential_damage
// Then consider their defense.
@@ -50,11 +57,12 @@
return 0
-/mob/living/simple_animal/get_threat(var/mob/living/threatened)
+/mob/living/simple_mob/get_threat(var/mob/living/threatened)
. = ..()
- if(!hostile)
- return 0 // Can't hurt anyone.
+ if(has_AI())
+ if(!ai_holder.hostile)
+ return 0 // Can't hurt anyone.
if(incapacitated(INCAPACITATION_DISABLED))
return 0 // Can't currently hurt you if it's stunned.
@@ -86,7 +94,7 @@
// Handle ability to harm.
// Being five tiles away from some spiders is a lot less scary than being in melee range of five spiders at once.
- if(!ranged)
+ if(!projectiletype)
threat /= max(get_dist(src, threatened), 1)
return threat
diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm
index f3a9dab041..f653a7f636 100644
--- a/code/modules/ventcrawl/ventcrawl.dm
+++ b/code/modules/ventcrawl/ventcrawl.dm
@@ -9,7 +9,7 @@ var/list/ventcrawl_machinery = list(
/obj/item/device/radio/borg,
/obj/item/weapon/holder,
/obj/machinery/camera,
- /mob/living/simple_animal/borer,
+ /mob/living/simple_mob/animal/borer,
/obj/screen
)
@@ -37,7 +37,7 @@ var/list/ventcrawl_machinery = list(
add_ventcrawl(loc)
client.screen += global_hud.centermarker
-/mob/living/simple_animal/slime/can_ventcrawl()
+/mob/living/simple_mob/slime/xenobio/can_ventcrawl()
if(victim)
to_chat(src, "You cannot ventcrawl while feeding.")
return FALSE
@@ -69,11 +69,6 @@ var/list/ventcrawl_machinery = list(
return 1
return ..()
-/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item)
- if(carried_item == held_item)
- return 1
- return ..()
-
/mob/living/proc/ventcrawl_carry()
for(var/atom/A in contents)
if(!is_allowed_vent_crawl_item(A))
diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm
index 5f56ece8ee..e8ee5a16c1 100644
--- a/code/modules/xenoarcheaology/artifacts/autocloner.dm
+++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm
@@ -22,22 +22,22 @@
//33% chance to spawn nasties
if(prob(33))
spawn_type = pick(
- /mob/living/simple_animal/hostile/giant_spider/nurse,
- /mob/living/simple_animal/hostile/alien,
- /mob/living/simple_animal/hostile/bear,
- /mob/living/simple_animal/hostile/creature)
+ /mob/living/simple_mob/animal/giant_spider/nurse,
+ /mob/living/simple_mob/animal/space/alien,
+ /mob/living/simple_mob/animal/space/bear,
+ /mob/living/simple_mob/creature,
+ /mob/living/simple_mob/slime/xenobio)
else
spawn_type = pick(\
- /mob/living/simple_animal/cat,
- /mob/living/simple_animal/corgi,
- /mob/living/simple_animal/corgi/puppy,
- /mob/living/simple_animal/chicken,
- /mob/living/simple_animal/cow,
- /mob/living/simple_animal/parrot,
- /mob/living/simple_animal/slime,
- /mob/living/simple_animal/crab,
- /mob/living/simple_animal/mouse,
- /mob/living/simple_animal/retaliate/goat)
+ /mob/living/simple_mob/animal/passive/cat,
+ /mob/living/simple_mob/animal/passive/dog/corgi,
+ /mob/living/simple_mob/animal/passive/dog/corgi/puppy,
+ /mob/living/simple_mob/animal/passive/chicken,
+ /mob/living/simple_mob/animal/passive/cow,
+ /mob/living/simple_mob/animal/passive/bird/parrot,
+ /mob/living/simple_mob/animal/passive/crab,
+ /mob/living/simple_mob/animal/passive/mouse,
+ /mob/living/simple_mob/animal/goat)
//todo: how the hell is the asteroid permanently powered?
/obj/machinery/auto_cloner/process()
diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm
index a0f0ab92da..50e5c1fe9d 100644
--- a/code/modules/xenoarcheaology/artifacts/replicator.dm
+++ b/code/modules/xenoarcheaology/artifacts/replicator.dm
@@ -26,9 +26,8 @@
/obj/item/roller,
/obj/structure/closet/crate,
/obj/structure/closet/acloset,
- /mob/living/simple_animal/hostile/mimic,
- /mob/living/simple_animal/hostile/viscerator,
- /mob/living/simple_animal/hostile/hivebot,
+ /mob/living/simple_mob/mechanical/viscerator,
+ /mob/living/simple_mob/mechanical/hivebot,
/obj/item/device/analyzer,
/obj/item/device/camera,
/obj/item/device/flash,
diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm
index 7f2056a0fe..040c42e20f 100644
--- a/code/modules/xenoarcheaology/finds/special.dm
+++ b/code/modules/xenoarcheaology/finds/special.dm
@@ -87,7 +87,7 @@
if(charges >= 3)
if(prob(5))
charges -= 1
- var/spawn_type = pick(/mob/living/simple_animal/hostile/creature)
+ var/spawn_type = pick(/mob/living/simple_mob/creature)
new spawn_type(pick(view(1,src)))
playsound(src.loc, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3)
diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm
index 6d472b5a09..397ca52c33 100644
--- a/code/modules/xenobio/items/extracts.dm
+++ b/code/modules/xenobio/items/extracts.dm
@@ -77,7 +77,7 @@
/datum/chemical_reaction/slime/grey_new_slime/on_reaction(var/datum/reagents/holder)
holder.my_atom.visible_message("Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!")
- new /mob/living/simple_animal/slime(get_turf(holder.my_atom))
+ new /mob/living/simple_mob/slime/xenobio(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/grey_monkey
@@ -495,16 +495,16 @@
if(!(their_turf in Z.contents)) // Not in the same zone.
continue
- if(istype(L, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/slime/S = L
- if(S.cold_damage_per_tick <= 0) // Immune to cold.
+ if(istype(L, /mob/living/simple_mob/slime))
+ var/mob/living/simple_mob/slime/S = L
+ if(S.cold_resist >= 1) // Immune to cold.
to_chat(S, "A chill is felt around you, however it cannot harm you.")
continue
if(S.client) // Don't instantly kill player slimes.
to_chat(S, "You feel your body crystalize as an intense chill overwhelms you!")
- S.adjustToxLoss(S.cold_damage_per_tick * 2)
+ S.inflict_cold_damage(100)
else
- S.adjustToxLoss(S.cold_damage_per_tick * 5) // Metal slimes can survive this 'slime nuke'.
+ S.inflict_cold_damage(200) // Metal slimes can survive this 'slime nuke'.
continue
if(ishuman(L))
@@ -552,17 +552,21 @@
required = /obj/item/slime_extract/red
/datum/chemical_reaction/slime/red_enrage/on_reaction(var/datum/reagents/holder)
- for(var/mob/living/simple_animal/slime/S in view(get_turf(holder.my_atom)))
- if(S.stat || S.docile || S.rabid)
+ for(var/mob/living/simple_mob/slime/S in view(get_turf(holder.my_atom)))
+ if(S.stat)
continue
+ if(istype(S, /mob/living/simple_mob/slime/xenobio))
+ var/mob/living/simple_mob/slime/xenobio/X = S
+ if(X.harmless)
+ continue
+ if(!X.client)
+ X.enrage()
+
S.add_modifier(/datum/modifier/berserk, 30 SECONDS)
if(S.client) // Player slimes always have free will.
to_chat(S, "An intense wave of rage is felt from inside, but you remain in control of yourself.")
- continue
-
- S.enrage()
for(var/mob/living/carbon/human/H in view(get_turf(holder.my_atom)))
if(H.species.name == SPECIES_PROMETHEAN)
@@ -957,8 +961,8 @@
/datum/chemical_reaction/slime/rainbow_random_slime/on_reaction(var/datum/reagents/holder)
- var/mob/living/simple_animal/slime/S
- var/list/slime_types = typesof(/mob/living/simple_animal/slime)
+ var/mob/living/simple_mob/slime/xenobio/S
+ var/list/slime_types = typesof(/mob/living/simple_mob/slime/xenobio)
while(slime_types.len)
S = pick(slime_types)
diff --git a/code/modules/xenobio/items/slimepotions.dm b/code/modules/xenobio/items/slimepotions.dm
index df03fdab6f..944853bec7 100644
--- a/code/modules/xenobio/items/slimepotions.dm
+++ b/code/modules/xenobio/items/slimepotions.dm
@@ -21,7 +21,7 @@
icon_state = "potcyan"
description_info = "The slime needs to be alive for this to work. It will reduce the chances of mutation by 15%."
-/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user)
+/obj/item/slimepotion/stabilizer/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, "The stabilizer only works on slimes!")
return ..()
@@ -45,7 +45,7 @@
description_info = "The slime needs to be alive for this to work. It will increase the chances of mutation by 12%."
icon_state = "potred"
-/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user)
+/obj/item/slimepotion/mutator/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, "The mutator only works on slimes!")
return ..()
@@ -67,20 +67,25 @@
name = "docility agent"
desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame. It might also work on other creatures?"
icon_state = "potlightpink"
- description_info = "The target needs to be alive, not already passive, and have animal-like intelligence."
+ description_info = "The target needs to be alive, not already passive, and be an animal or slime type entity."
-/obj/item/slimepotion/docility/attack(mob/living/simple_animal/M, mob/user)
+/obj/item/slimepotion/docility/attack(mob/living/simple_mob/M, mob/user)
if(!istype(M))
to_chat(user, "The agent only works on creatures!")
return ..()
if(M.stat == DEAD)
to_chat(user, "\The [M] is dead!")
return ..()
+ if(!M.has_AI())
+ to_chat(user, span("warning", "\The [M] is too strongly willed for this to affect them.")) // Most likely player controlled.
+ return
+
+ var/datum/ai_holder/AI = M.ai_holder
// Slimes.
- if(istype(M, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/slime/S = M
- if(S.docile)
+ if(istype(M, /mob/living/simple_mob/slime/xenobio))
+ var/mob/living/simple_mob/slime/xenobio/S = M
+ if(S.harmless)
to_chat(user, "The slime is already docile!")
return ..()
@@ -89,22 +94,22 @@
to_chat(M, "You absorb the agent and feel your intense desire to feed melt away.")
to_chat(user, "You feed the slime the agent, removing its hunger and calming it.")
- // Simple Animals.
- else if(istype(M, /mob/living/simple_animal))
- var/mob/living/simple_animal/SA = M
- if(SA.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc.
- to_chat(user, "\The [SA] is too intellient for this to affect them.")
+ // Simple Mobs.
+ else if(istype(M, /mob/living/simple_mob))
+ var/mob/living/simple_mob/SM = M
+ if(!(SM.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc.
+ to_chat(user, "\The [SM] only works on slimes and animals.")
return ..()
- if(!SA.hostile)
- to_chat(user, "\The [SA] is already passive!")
+ if(!AI.hostile)
+ to_chat(user, "\The [SM] is already passive!")
return ..()
- SA.hostile = FALSE
+ AI.hostile = FALSE
to_chat(M, "You consume the agent and feel a serene sense of peace.")
- to_chat(user, "You feed \the [SA] the agent, calming it.")
+ to_chat(user, "You feed \the [SM] the agent, calming it.")
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
- M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore.
+ AI.lost_target() // So hostile things stop attacking people even if not hostile anymore.
var/newname = copytext(sanitize(input(user, "Would you like to give \the [M] a name?", "Name your new pet", M.name) as null|text),1,MAX_NAME_LEN)
if(newname)
@@ -121,7 +126,7 @@
Extra extracts are not passed down to offspring when reproducing."
icon_state = "potpurple"
-/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user)
+/obj/item/slimepotion/steroid/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, "The steroid only works on slimes!")
return ..()
@@ -149,7 +154,7 @@
carry over to offspring when reproducing."
icon_state = "potpink"
-/obj/item/slimepotion/unity/attack(mob/living/simple_animal/slime/M, mob/user)
+/obj/item/slimepotion/unity/attack(mob/living/simple_mob/slime/M, mob/user)
if(!istype(M))
to_chat(user, "The agent only works on slimes!")
return ..()
@@ -175,12 +180,12 @@
the user's faction, which means the slime will attack things that are hostile to the user's faction, such as carp, spiders, and other slimes."
icon_state = "potred"
-/obj/item/slimepotion/loyalty/attack(mob/living/simple_animal/M, mob/user)
+/obj/item/slimepotion/loyalty/attack(mob/living/simple_mob/M, mob/user)
if(!istype(M))
- to_chat(user, "The agent only works on animals!")
+ to_chat(user, "The agent only works on creatures!")
return ..()
- if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc.
- to_chat(user, "\The [M] is too intellient for this to affect them.")
+ if(!(M.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc.
+ to_chat(user, "\The [M] only works on slimes and animals.")
return ..()
if(M.stat == DEAD)
to_chat(user, "The animal is dead!")
@@ -188,12 +193,16 @@
if(M.faction == user.faction)
to_chat(user, "\The [M] is already loyal to your species!")
return ..()
+ if(!M.has_AI())
+ to_chat(user, span("warning", "\The [M] is too strong-willed for this to affect them."))
+ return ..()
+
+ var/datum/ai_holder/AI = M.ai_holder
to_chat(user, "You feed \the [M] the agent. It will now try to murder things that want to murder you instead.")
to_chat(M, "\The [user] feeds you \the [src], and feel that the others will regard you as an outsider now.")
M.faction = user.faction
- M.attack_same = FALSE
- M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore.
+ AI.lost_target() // So hostile things stop attacking people even if not hostile anymore.
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
@@ -206,28 +215,29 @@
their 'friend', and will never attack them. This might also work on other things besides slimes."
icon_state = "potlightpink"
-/obj/item/slimepotion/friendship/attack(mob/living/simple_animal/M, mob/user)
+/obj/item/slimepotion/friendship/attack(mob/living/simple_mob/M, mob/user)
if(!istype(M))
- to_chat(user, "The agent only works on animals!")
+ to_chat(user, "The agent only works on creatures!")
return ..()
- if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc.
- to_chat(user, "\The [M] is too intellient for this to affect them.")
+ if(!(M.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc.
+ to_chat(user, "\The [M] only works on slimes and animals.")
return ..()
if(M.stat == DEAD)
- to_chat(user, "The animal is dead!")
+ to_chat(user, "\The [M] is dead!")
return ..()
if(user in M.friends)
to_chat(user, "\The [M] is already loyal to you!")
return ..()
+ if(!M.has_AI())
+ to_chat(user, span("warning", "\The [M] is too strong-willed for this to affect them."))
+ return ..()
+
+ var/datum/ai_holder/AI = M.ai_holder
to_chat(user, "You feed \the [M] the agent. It will now be your best friend.")
to_chat(M, "\The [user] feeds you \the [src], and feel that \the [user] wants to be best friends with you.")
- if(isslime(M))
- var/mob/living/simple_animal/slime/S = M
- S.befriend(user)
- else
- M.friends.Add(user)
- M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore.
+ M.friends.Add(user)
+ AI.lost_target() // So hostile things stop attacking people even if not hostile anymore.
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
@@ -239,15 +249,16 @@
description_info = "The slime needs to be alive for this to work. It will instantly grow the slime enough to reproduce."
icon_state = "potyellow"
-/obj/item/slimepotion/feeding/attack(mob/living/simple_animal/slime/M, mob/user)
+/obj/item/slimepotion/feeding/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
- to_chat(user, "The mutator only works on slimes!")
+ to_chat(user, "The feeding agent only works on slimes!")
return ..()
if(M.stat == DEAD)
to_chat(user, "The slime is dead!")
return ..()
to_chat(user, "You feed the slime the feeding agent. It will now instantly reproduce.")
+ M.amount_grown = 10
M.make_adult()
M.amount_grown = 10
M.reproduce()
diff --git a/code/modules/xenobio/items/weapons.dm b/code/modules/xenobio/items/weapons.dm
index 8fb5f9eea6..bb735c35f2 100644
--- a/code/modules/xenobio/items/weapons.dm
+++ b/code/modules/xenobio/items/weapons.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/melee/baton/slime
name = "slimebaton"
- desc = "A modified stun baton designed to stun slimes and other lesser xeno lifeforms for handling."
+ desc = "A modified stun baton designed to stun slimes and other lesser slimy xeno lifeforms for handling."
icon_state = "slimebaton"
item_state = "slimebaton"
slot_flags = SLOT_BELT
@@ -9,31 +9,30 @@
origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 2)
agonyforce = 10 //It's not supposed to be great at stunning human beings.
hitcost = 48 //Less zap for less cost
- description_info = "This baton will stun a slime or other lesser lifeform for about five seconds, if hit with it while on."
+ description_info = "This baton will stun a slime or other slime-based lifeform for about five seconds, if hit with it while on."
-/obj/item/weapon/melee/baton/slime/attack(mob/M, mob/user, hit_zone)
- // Simple Animals.
- if(istype(M, /mob/living/simple_animal/slime) && status)
- var/mob/living/simple_animal/SA = M
- if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies.
- SA.Weaken(5)
- if(isslime(SA))
- var/mob/living/simple_animal/slime/S = SA
- S.adjust_discipline(3)
+/obj/item/weapon/melee/baton/slime/attack(mob/living/L, mob/user, hit_zone)
+ if(istype(L) && status) // Is it on?
+ if(L.mob_class & MOB_CLASS_SLIME) // Are they some kind of slime? (Prommies might pass this check someday).
+ if(isslime(L))
+ var/mob/living/simple_mob/slime/S = L
+ S.slimebatoned(user, 5) // Feral and xenobio slimes will react differently to this.
+ else
+ L.Weaken(5)
+
+ // Now for prommies.
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if(H.species && H.species.name == SPECIES_PROMETHEAN)
+ var/agony_to_apply = 60 - agonyforce
+ H.apply_damage(agony_to_apply, HALLOSS)
- // Prometheans.
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species && H.species.name == SPECIES_PROMETHEAN && status)
- var/agony_to_apply = 60 - agonyforce
- H.apply_damage(agony_to_apply, HALLOSS)
..()
-/obj/item/weapon/melee/baton/slime/loaded/New()
- ..()
+/obj/item/weapon/melee/baton/slime/loaded/initialize()
bcell = new/obj/item/weapon/cell/device(src)
update_icon()
- return
+ return ..()
// Research borg's version
@@ -61,9 +60,9 @@
charge_cost = 120 // Twice as many shots.
projectile_type = /obj/item/projectile/beam/stun/xeno
accuracy = 30 // Make it a bit easier to hit the slimes.
- description_info = "This gun will stun a slime or other lesser lifeform for about two seconds, if hit with the projectile it fires."
+ description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds, if hit with the projectile it fires."
description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \
- xeno lifeforms at a distance. It is ineffective at stunning larger lifeforms such as humanoids."
+ slime-based xeno lifeforms at a distance. It is ineffective at stunning non-slimy lifeforms such as humanoids."
/obj/item/weapon/gun/energy/taser/xeno/robot // Borg version
self_recharge = 1
@@ -71,7 +70,7 @@
recharge_time = 3
/obj/item/weapon/gun/energy/taser/xeno/sec //NT's corner-cutting option for their on-station security.
- desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid xeno life forms."
+ desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid slimy xeno life forms."
icon_state = "taserblue"
item_state = "taser"
projectile_type = /obj/item/projectile/beam/stun/xeno/weak
@@ -102,20 +101,17 @@
/obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
if(istype(target, /mob/living))
var/mob/living/L = target
+ if(L.mob_class & MOB_CLASS_SLIME)
+ if(isslime(L))
+ var/mob/living/simple_mob/slime/S = L
+ S.slimebatoned(firer, round(agony/2))
+ else
+ L.Weaken(round(agony/2))
- // Simple Animals.
- if(istype(L, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/SA = L
- if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies.
- SA.Weaken(round(agony/2)) // Less powerful since its ranged, and therefore safer.
- if(isslime(SA))
- var/mob/living/simple_animal/slime/S = SA
- S.adjust_discipline(round(agony/2))
-
- // Prometheans.
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.species && H.species.name == SPECIES_PROMETHEAN)
- if(agony == initial(agony))
+ if(agony == initial(agony)) // ??????
agony = round((14 * agony) - agony) //60-4 = 56, 56 / 4 = 14. Prior was flat 60 - agony of the beam to equate to 60.
+
..()
diff --git a/code/modules/xenobio/machinery/processor.dm b/code/modules/xenobio/machinery/processor.dm
index 56b7cee3bf..6d888adb26 100644
--- a/code/modules/xenobio/machinery/processor.dm
+++ b/code/modules/xenobio/machinery/processor.dm
@@ -79,8 +79,8 @@
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
/obj/machinery/processor/proc/extract(var/atom/movable/AM)
- if(istype(AM, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/slime/S = AM
+ if(istype(AM, /mob/living/simple_mob/slime))
+ var/mob/living/simple_mob/slime/S = AM
while(S.cores)
new S.coretype(get_turf(src))
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
@@ -98,8 +98,8 @@
sleep(1 SECOND)
/obj/machinery/processor/proc/can_insert(var/atom/movable/AM)
- if(istype(AM, /mob/living/simple_animal/slime))
- var/mob/living/simple_animal/slime/S = AM
+ if(istype(AM, /mob/living/simple_mob/slime))
+ var/mob/living/simple_mob/slime/S = AM
if(S.stat != DEAD)
return FALSE
return TRUE
diff --git a/code/stylesheet.dm b/code/stylesheet.dm
index 77da8eb937..233d0f3471 100644
--- a/code/stylesheet.dm
+++ b/code/stylesheet.dm
@@ -105,4 +105,11 @@ h1.alert, h2.alert {color: #000000;}
BIG IMG.icon {width: 32px; height: 32px;}
+/* Debug Logs */
+.debug_error {color:#FF0000; font-weight:bold}
+.debug_warning {color:#FF0000;}
+.debug_info {}
+.debug_debug {color:#0000FF;}
+.debug_trace {color:#888888;}
+
"}
diff --git a/code/world.dm b/code/world.dm
index abae2c9e4c..884ec241ec 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -419,19 +419,27 @@ var/world_topic_spam_protect_time = world.timeofday
return "Database connection failed or not set up"
-/world/Reboot(var/reason)
+/world/Reboot(reason = 0, fast_track = FALSE)
/*spawn(0)
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy
*/
+ if (reason || fast_track) //special reboot, do none of the normal stuff
+ if (usr)
+ log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools")
+ message_admins("[key_name_admin(usr)] Has requested an immediate world restart via client side debugging tools")
+ world << "[key_name_admin(usr)] has requested an immediate world restart via client side debugging tools"
+
+ else
+ world << "Rebooting world immediately due to host request"
+ else
+ processScheduler.stop()
+ Master.Shutdown() //run SS shutdowns
+ for(var/client/C in clients)
+ if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
+ C << link("byond://[config.server]")
- processScheduler.stop()
- Master.Shutdown() //run SS shutdowns
-
- for(var/client/C in clients)
- if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
- C << link("byond://[config.server]")
-
- ..(reason)
+ log_world("World rebooted at [time_stamp()]")
+ ..()
/hook/startup/proc/loadMode()
world.load_mode()
diff --git a/config/example/config.txt b/config/example/config.txt
index d9d73c6ccb..a347fac832 100644
--- a/config/example/config.txt
+++ b/config/example/config.txt
@@ -91,10 +91,10 @@ SQL_ENABLED
SHOW_DEVS
##Show mods on staffwho
SHOW_MODS
-
+
##Show mentors on staffwho
SHOW_EVENT
-
+
## Chooses whether mods have the ability to tempban or not
MODS_CAN_TEMPBAN
@@ -133,12 +133,12 @@ TRAITOR_SCALING
## if objectives are disabled
#OBJECTIVES_DISABLED
-## make ERT's be only called by admins
-#ERT_ADMIN_ONLY
-
+## make ERT's be only called by admins
+#ERT_ADMIN_ONLY
+
## If uncommented, votes can be called to add extra antags to the round.
#ALLOW_EXTRA_ANTAGS
-
+
## If security is prohibited from being most antagonists
#PROTECT_ROLES_FROM_ANTAGONIST
@@ -315,7 +315,7 @@ CHARACTER_SLOTS 10
LOADOUT_SLOTS 3
## Uncomment to use overmap system for zlevel travel
-#USE_OVERMAP
+#USE_OVERMAP
## Defines which Z-levels the station exists on.
STATION_LEVELS 1
@@ -384,7 +384,7 @@ STARLIGHT 0
## Defines how Law Zero is phrased. Primarily used in the Malfunction gamemode.
# LAW_ZERO ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010
-
+
## Enables specific procedural map generation, generally for mining, however it is specific to the loaded map. Uncomment to enable it, however it can
## worth it to keep it disabled if you are not hosting an actual server, to speed up start-up time for testing code.
@@ -408,3 +408,8 @@ STARLIGHT 0
## Uncomment to enable Paranoia Logging. This will notify admins and write to a file any time a new player (byond or your server) connects.
# PARANOIA_LOGGING
+
+## Uncomment to enable submaps to have their orientation rotated randomly during map generation.
+## Submap rotation is an experimental feature and can cause bugs and weirdness if certain objects inside the submap are coded poorly.
+## Submaps can still be rotated when loading manually with the admin verbs, if desired.
+# RANDOM_SUBMAP_ORIENTATION
diff --git a/config/names/first_female.txt b/config/names/first_female.txt
index b500f027ef..3f8c53a7a9 100644
--- a/config/names/first_female.txt
+++ b/config/names/first_female.txt
@@ -306,7 +306,6 @@ Yolanda
Ysabel
Zelda
Zune
-Emma
Isabella
Emily
Madison
@@ -314,13 +313,11 @@ Ava
Olivia
Sophia
Abigail
-Elizabeth
Chloe
Samantha
Addison
Natalie
Mia
-Alexis
Alyssa
Hannah
Ashley
@@ -330,7 +327,6 @@ Grace
Taylor
Brianna
Lily
-Hailey
Anna
Victoria
Kayla
@@ -345,19 +341,13 @@ Sofia
Makayla
Avery
Riley
-Julia
Leah
-Aubrey
-Jasmine
Audrey
Katherine
Morgan
Brooklyn
Destiny
-Sydney
-Alexa
Kylie
-Brooke
Kaitlyn
Evelyn
Layla
@@ -379,7 +369,6 @@ Trinity
Andrea
Maya
Valeria
-Sophie
Rachel
Vanessa
Aaliyah
@@ -406,7 +395,6 @@ Zoey
Gracie
Megan
Haley
-Mya
Michelle
Molly
Stephanie
@@ -427,7 +415,6 @@ Rebecca
Lydia
Daniela
Bella
-Keira
Adriana
Lilly
Hayden
@@ -464,7 +451,6 @@ London
Juliana
Shelby
Cheyenne
-Angel
Daisy
Makenzie
Miranda
@@ -478,7 +464,6 @@ Mikayla
Summer
Piper
Adrianna
-Jillian
Sierra
Jayden
Sienna
@@ -493,7 +478,6 @@ Sabrina
Stella
Aniyah
Annabelle
-Alexandria
Kathryn
Skylar
Aliyah
@@ -501,7 +485,6 @@ Delilah
Julianna
Kelsey
Khloe
-Carly
Amaya
Mariana
Christina
@@ -516,7 +499,6 @@ Josephine
Delaney
Scarlett
Elena
-Cadence
Alexia
Maggie
Laura
@@ -543,7 +525,6 @@ Caitlin
Kendra
Karina
Kyra
-Kayleigh
Addyson
Kiara
Jazmine
@@ -554,11 +535,9 @@ Lola
Kyla
Kelly
Fatima
-Tiffany
Kira
Crystal
Mallory
-Esmeralda
Alejandra
Eleanor
Angelica
@@ -607,14 +586,12 @@ Lexi
Camille
Savanna
Dulce
-Daniella
Lucia
Emely
Joselyn
Kiley
Kailey
Miriam
-Cynthia
Rihanna
Georgia
Rylie
@@ -652,7 +629,6 @@ Rose
Malia
Shayla
Fiona
-Phoebe
Nayeli
Paola
Kaelyn
@@ -675,8 +651,6 @@ Hanna
Tatum
Marlee
Nataly
-Helen
-Janelle
Lizbeth
Serena
Anya
@@ -686,13 +660,11 @@ Jazlyn
Nancy
Lindsay
Desiree
-Hayley
Itzel
Imani
Madelynn
Asia
Kadence
-Madyson
Talia
Jane
Kayden
@@ -704,7 +676,6 @@ Jadyn
Celeste
Jimena
Luna
-Yasmin
Emilia
Annika
Estrella
@@ -718,7 +689,6 @@ Dayana
Lilah
Lilliana
Natasha
-Hadley
Harley
Priscilla
Claudia
@@ -753,7 +723,6 @@ Meredith
Kailyn
Lesly
Johanna
-Diamond
Evangeline
Juliet
Kathleen
@@ -786,22 +755,660 @@ Perla
Amiyah
Alyson
Rachael
-Shannon
Aileen
Miracle
Lillie
Danika
-Heather
Kassidy
Taryn
-Tori
Francesca
Kristen
Amya
-Elle
Kristina
Cheyanne
Haylie
Patricia
-Anne
-Samara
\ No newline at end of file
+Samara
+Balina
+Skiftere
+Albana
+Fatushe
+Vilna
+Hamia
+Kalila
+Noura
+Shadia
+Selima
+Herri
+Zwina
+Tanit
+Satna
+Batti
+Loula
+Nuja
+Kassu
+Aketa
+Pherenike
+Cyrene
+Megare
+Hekaline
+Axiothea
+Atheer
+Hamda
+Hakeema
+Nadeera
+Farha
+Nasreen
+Arwa
+Pilar
+Gezana
+Dukinea
+Reyna
+Gala
+Cira
+Violeta
+Arpi
+Noushig
+Zabel
+Nane
+Arev
+Asiah
+Ishtar
+Zaminy
+Durna
+Liboko
+Mathe
+Ratu
+Nana
+Ntsebo
+Uraburu
+Ino
+Itzalle
+Graziana
+Ixone
+Celien
+Jente
+Marianne
+Floriane
+Stefanie
+Eloise
+Anke
+Dristi
+Chitra
+Geeta
+Shila
+Suravi
+Rani
+Ekta
+Fullara
+Anasuya
+Manali
+Annapurna
+Vanita
+Belma
+Elmedina
+Zineta
+Habiba
+Yi
+Eka
+Thi
+New
+Aye
+Azah
+Hapsatou
+Aibell
+Bethan
+Carys
+Branwyn
+Alis
+Gwen
+Gwendolyn
+Caitriona
+Morag
+Muireall
+Khazan
+Yahita
+Yisa
+Sovbika
+Zheng
+Liuxian
+Chao
+Ping
+Yan
+Hai
+Ling
+Min
+Ru
+Bao
+Sanja
+Gordana
+Dorotea
+Ruzena
+Tatjana
+Vilma
+Dagmar
+Blanka
+Yvonne
+Hertha
+Lise
+Liv
+Randi
+Ester
+Ziba
+Taban
+Shireen
+Yasaman
+Karlien
+Saar
+Liene
+Khat
+Maat
+Tauret
+Sitra
+Anta
+Niut
+Ankhi
+Bennu
+Anku
+Sagira
+Kakra
+Safa
+Masika
+Salma
+Aya
+Nesma
+Myrrh
+Wynfride
+Millicent
+Sybell
+Inna
+Rebeka
+Esta
+Endla
+Nanni
+Awet
+Sisay
+Lakech
+Jaana
+Kirsi
+Roosa
+Saimi
+Hilda
+Berta
+Rauna
+Reeta
+Kanerva
+Germaine
+Sabine
+Laurette
+Yvette
+Mara
+Elsbeth
+Maike
+Agatha
+Nadja
+Gerda
+Thalia
+Dora
+Corinna
+Lambrini
+Vassia
+Panagoita
+Leena
+Dayita
+Purva
+Hardi
+Pani
+Vedi
+Lasya
+Charvi
+Yanina
+Eliora
+Shir
+Ayelet
+Fanya
+Liza
+Gaya
+Zimra
+Nehal
+Ananya
+Jyoti
+Neha
+Salani
+Ruhi
+Karnavati
+Jaya
+Padmini
+Anu
+Sa
+Sua
+Neng
+True
+Fridlin
+Silfa
+Iren
+Iva
+Tamara
+Solny
+Snaiborg
+Dagny
+Holmfridur
+Hellveig
+Thula
+Hjalta
+Alfdis
+Freygerdur
+Aldis
+Thorhalla
+Pala
+Ingis
+Grima
+Telma
+Yobanna
+Kambiri
+Adanna
+Oluchi
+Amachey
+Mgbeke
+Yuka
+Koken
+Chiho
+Akae
+Taka
+Ritsuko
+Hasumi
+Tama
+Yumako
+Haniko
+Kaori
+Setsu
+Shoken
+Sakura
+Sen
+Tane
+Yoshe
+Imari
+Cho
+Jupar
+Janna
+Albina
+Maira
+Aru
+Nazira
+Aliya
+Zubaira
+Sang
+Phan
+Preap
+Kim
+Jey
+Meang
+Moul
+Touch
+Rous
+Sok
+Priti
+Damini
+Ihita
+Amrita
+Kalyani
+Rashmi
+Kunda
+Vani
+Sarika
+Wacu
+Nduta
+Noni
+Muthoni
+Nyambura
+Mukondi
+Wandia
+Magiri
+Njoki
+Mun
+Ya
+Noe
+Kal
+Pak
+Ton
+Wi
+Fulcina
+Vibia
+Sextia
+Cania
+Modesta
+Cordia
+Lae
+Moana
+Oke
+Lilo
+Wanika
+Kalena
+Napua
+Kalama
+Alona
+Kalia
+Makani
+Kawena
+Lani
+Halina
+Asola
+Salitia
+Dianna
+Denisa
+Katre
+Gaiva
+Rima
+Apollonia
+Kornelia
+Zofia
+Vika
+Anyang
+Ambala
+Apudo
+Awuor
+Naamah
+Akoth
+Atuku
+Farhat
+Aisyah
+Jeelaan
+Rihaab
+Mayang
+Meriam
+Rona
+Uruewa
+Marama
+Ruihi
+Neni
+Manewa
+Tapu
+Shefali
+Vritika
+Namita
+Ena
+Manisha
+Akshata
+Aaruni
+Orbei
+Temulun
+Saran
+Chagur
+Ghoa
+Aysha
+Zaheda
+Nezha
+Ahlam
+Fiza
+Hafida
+Saida
+Awinita
+Tuwa
+Orenda
+Pamuya
+Tsomah
+Hola
+Washta
+Yutu
+Catori
+Tablita
+Kasa
+Muna
+Weeko
+Minku
+Seti
+Sajal
+Thaili
+Rajani
+Kopeela
+Pratik
+Erna
+Sonja
+Margrete
+Turid
+Evy
+Tordis
+Anette
+Kristin
+Elna
+Malin
+Bente
+Frida
+Magnhild
+Astrid
+Monika
+Hamna
+Yesim
+Nira
+Diba
+Salwa
+Arta
+Nakisa
+Sima
+Tumay
+Maryam
+Soraya
+Fariba
+Pouri
+Pari
+Nikou
+Soheila
+Nasim
+Hanieh
+Shamsi
+Nassim
+Maja
+Szarlota
+Kinga
+Marietta
+Donata
+Lidia
+Luiza
+Adelina
+Josefina
+Sonia
+Salome
+Dores
+Amor
+Bruna
+Jassi
+Avneet
+Livnoor
+Yasmine
+Hir
+Lakh
+Shaminder
+Mashaal
+Ruza
+Kostana
+Esma
+Masilda
+Viollca
+Lajaria
+Tsura
+Jeta
+Vai
+Melania
+Teodora
+Aurelia
+Viorica
+Dominique
+Mariutza
+Dumitra
+Uta
+Delia
+Ylenia
+Grusha
+Galka
+Valeriya
+Lera
+Mashka
+Nelya
+Feodora
+Jelena
+Sveta
+Jenya
+Lara
+Matryosha
+Matryona
+Tina
+Eseta
+Emere
+Pele
+Svetlana
+Stanislava
+Jasna
+Olga
+Anka
+Dragica
+Bogdana
+Bozena
+Petra
+Jaroslava
+Jolana
+Alena
+Nikola
+Sona
+Vanda
+Zawati
+Tisa
+Hawa
+Jaha
+Shauriana
+Rashida
+Koffi
+Satsobek
+Sigrid
+Tilda
+Oleana
+Nelly
+Kerstin
+Britt
+Maj
+Siv
+Siri
+Agneta
+Asgard
+Rishmeka
+Oppila
+Rajanitha
+Vyshu
+Rabika
+Shai
+Nirai
+Kayala
+Mae
+Yodman
+Kwanjai
+Praitun
+Choi
+Phajee
+Sumana
+Adak
+Sevil
+Gunes
+Isil
+Izel
+Latife
+Kieu
+Minh
+Le
+Cat
+Thu
+Tien
+Jofrid
+Vigdis
+Signy
+Arnora
+Fridgerd
+Skuld
+Brynhild
+Bolla
+Gyrd
+Fastvi
+Disai
+Zena
+Katha
+Nith
+Navpreet
+Izula
+Sihle
+Ethwasa
+Xolani
+Thando
+Neith
+Zamani
+Zinhle
+Msizi
+Amehlo
+Fatiha
+Aicha
+Fatma
+Khiera
+Dalal
+Gamalat
+Hana
+Rania
+Milagrosa
+Amahle
+Lesedi
+Reem
+Aria
+Noemi
+Concepcion
+Antonella
+Aadya
+Diya
+Jing
+Ying
+Xiaoyan
+Xinyi
+Tingting
+Tala
+Rimas
+Adi
+Noam
+Tamar
+Yael
+Zara
+Seo
+Shu
+Althea
+Kabita
+Nor
+Zeynep
+Aura
+Chastity
+Rebel
+Vixen
+Zero
+Nix
+Wren
+India
+Pearl
+Natuna
+Dawn
+Aditya
+Mio
+Discovery
+Cas
+Zee
+Rewi
+Lusia
+Olympia
+Freya
+Chani
+Ash
+Val
+Okra
+Verda
+Mania
+Peace
+Fortuna
+Hathor
+Lucky
+Wish
+Africa
+Proxima
+Ceti
+Sabik
\ No newline at end of file
diff --git a/config/names/first_male.txt b/config/names/first_male.txt
index f2b03e1686..84270df02e 100644
--- a/config/names/first_male.txt
+++ b/config/names/first_male.txt
@@ -223,26 +223,21 @@ Woodrow
Zack
Zane
Zeke
-Jacob
-Michael
Ethan
Joshua
Daniel
Alexander
Anthony
-William
Christopher
Matthew
Jayden
Andrew
Joseph
David
-Noah
Aiden
James
Ryan
Logan
-John
Nathan
Elijah
Christian
@@ -265,15 +260,12 @@ Jack
Kevin
Jose
Isaiah
-Luke
Landon
Justin
-Lucas
Zachary
Jordan
Robert
Aaron
-Brayden
Thomas
Cameron
Hunter
@@ -285,9 +277,7 @@ Aidan
Jason
Julian
Wyatt
-Charles
Luis
-Carter
Juan
Chase
Diego
@@ -299,7 +289,6 @@ Carlos
Sebastian
Liam
Hayden
-Nathaniel
Henry
Jesus
Ian
@@ -307,18 +296,14 @@ Tristan
Bryan
Sean
Cole
-Alex
Eric
Brian
Jaden
Carson
-Blake
Ayden
Cooper
-Dominic
Brady
Caden
-Josiah
Kyle
Colton
Kaden
@@ -329,16 +314,11 @@ Parker
Steven
Alejandro
Riley
-Richard
-Timothy
-Devin
Jesse
Victor
-Jake
Joel
Colin
Kaleb
-Bryce
Levi
Oliver
Oscar
@@ -348,16 +328,12 @@ Cody
Micah
Preston
Marcus
-Max
-Patrick
Seth
Jeremy
Peyton
Nolan
Ivan
-Damian
Maxwell
-Alan
Kenneth
Jonah
Jorge
@@ -365,10 +341,8 @@ Mark
Giovanni
Eduardo
Grant
-Collin
Gage
Omar
-Emmanuel
Trevor
Edward
Ricardo
@@ -384,7 +358,6 @@ Andres
Derek
Garrett
Tanner
-Malachi
Conner
Fernando
Cesar
@@ -396,7 +369,6 @@ Leonardo
Santiago
Francisco
Cayden
-Shane
Edwin
Hudson
Travis
@@ -415,21 +387,18 @@ Damien
Kaiden
Spencer
Stephen
-Edgar
Wesley
Shawn
Trenton
Jared
Jeffrey
Landen
-Johnathan
Bradley
Braxton
Ryder
Camden
Roman
Asher
-Brendan
Maddox
Sergio
Israel
@@ -437,7 +406,6 @@ Andy
Lincoln
Erik
Donovan
-Raymond
Avery
Rylan
Dalton
@@ -447,7 +415,6 @@ Martin
Keegan
Marco
Jude
-Sawyer
Dakota
Leo
Calvin
@@ -457,7 +424,6 @@ Troy
Zion
Clayton
Roberto
-Zane
Gregory
Tucker
Rafael
@@ -468,7 +434,6 @@ Griffin
Devon
Drew
Lukas
-Johnny
Ty
Pedro
Tyson
@@ -478,12 +443,10 @@ Braylon
Cash
Aden
Chance
-Taylor
Marcos
Maximus
Ruben
Emanuel
-Simon
Corbin
Brennan
Dillon
@@ -499,8 +462,6 @@ Colby
Jonas
Joaquin
Payton
-Brock
-Frank
Enrique
Quinn
Emilio
@@ -516,7 +477,6 @@ Gerardo
Dante
Ezra
Armando
-Allen
Theodore
Gael
Amir
@@ -552,7 +512,6 @@ Anderson
Rodrigo
Pablo
Saul
-Danny
Donald
Elliot
Brayan
@@ -580,12 +539,9 @@ Felix
Jimmy
Cohen
Tony
-Holden
Reid
-Abel
Bennett
Zackary
-Arthur
Nehemiah
Ricky
Esteban
@@ -611,11 +567,9 @@ Darren
Elliott
Uriel
Alfredo
-Hugo
Alec
Jamari
Marshall
-Walter
Judah
Jay
Lance
@@ -629,13 +583,11 @@ Kobe
Bryant
Maurice
Russell
-Leland
Colten
Reed
Davis
Joe
Ernesto
-Desmond
Kade
Reece
Morgan
@@ -648,15 +600,12 @@ Paxton
Jacoby
Douglas
Kristopher
-Gary
Lawrence
Izaiah
Solomon
-Nikolas
Mekhi
Justice
Tate
-Jaydon
Salvador
Shaun
Alvin
@@ -664,7 +613,6 @@ Eddie
Kane
Davion
Zachariah
-Damien
Titus
Kellen
Camron
@@ -673,9 +621,7 @@ Javon
Nasir
Milo
Johan
-Byron
Jasper
-Jonathon
Chad
Marc
Kelvin
@@ -685,7 +631,6 @@ Cory
Deandre
River
Reese
-Roger
Quinton
Talon
Romeo
@@ -698,7 +643,6 @@ Damon
Jadon
Emerson
Micheal
-Bruce
Terry
Kolton
Melvin
@@ -712,7 +656,6 @@ Leonel
Karson
Zayden
Keagan
-Carl
Khalil
Cristopher
Nelson
@@ -722,4 +665,712 @@ Isaias
Roy
Triston
Walker
-Kale
\ No newline at end of file
+Kale
+Tafil
+Ismet
+Bardhal
+Valm
+Ermir
+Milosh
+Lunik
+Rahul
+Sabir
+Majed
+Bakri
+Feroz
+Taysir
+Hamal
+Mawel
+Amadsu
+Mastina
+Deren
+Ides
+Masar
+Belkin
+Kriton
+Aktis
+Lemnus
+Agastrophos
+Charax
+Cylon
+Theomestor
+Telephus
+Aatif
+Abdul
+Ridwaan
+Isaam
+Azmi
+Kaleem
+Akram
+Jafar
+Humaid
+Umar
+Masood
+Angelito
+Bautista
+Humberto
+Enzo
+Rey
+Taniel
+Matsag
+Movses
+Antog
+Moushegh
+Ismail
+Arseen
+Balishar
+Cavad
+Akif
+Orxun
+Thuso
+Malefane
+Makolo
+Refilwe
+Likotsi
+Mohau
+Amose
+Xurio
+Zipselo
+Patrizio
+Luze
+Benoit
+Emiel
+Bastien
+Anas
+Kylian
+Florent
+Rik
+Arjun
+Indranil
+Balinder
+Bimal
+Guru
+Hari
+Lalit
+Sudeep
+Sonu
+Subhash
+Anil
+Dipen
+Chandra
+Musa
+Vildan
+Hamza
+Mevludin
+Wai
+Linn
+Soe
+Kaung
+Khine
+Aung
+Phyo
+Thiha
+Entekele
+Leke
+Sakeh
+Dufach
+Rohan
+Glyn
+Elwyn
+Iver
+Berian
+Mercher
+Jesstin
+Ermid
+Dermid
+Dafydd
+Sion
+Conall
+Conn
+Alasdair
+Ruaraidh
+Rustam
+Asu
+Vakha
+Beksolta
+Nezh
+Illyas
+Tian
+Bai
+Delan
+Shun
+Gengxin
+Liang
+Jun
+Shui
+Chun
+Fang
+Zhenya
+Bo
+Dubravko
+Branko
+Davor
+Damir
+Mislav
+Lucijan
+Milovan
+Andrej
+Drahoslav
+Oluf
+Frans
+Rune
+Bernt
+Fardin
+Kalan
+Jebran
+Shapoor
+Klaas
+Siert
+Elco
+Jan
+Karst
+Aker
+Anum
+Kha
+Anhur
+Pakhrua
+Ahmes
+Hotep
+Tutamen
+Meri
+Sneferu
+Imhotep
+Nefer
+Pepi
+Hanif
+Odion
+Adel
+Aymn
+Mando
+Dodi
+Mustafa
+Adham
+Manu
+Darwishi
+Erasmus
+Cleeve
+Taaniel
+Kaljo
+Timmo
+Uno
+Nega
+Ayene
+Bekele
+Abenet
+Haile
+Mahmoud
+Aldo
+Benjam
+Sampo
+Oskari
+Mika
+Sampsa
+Risto
+Yves
+Antoine
+Theo
+Henri
+Maxime
+Mathis
+Eugene
+Jorg
+Ulrich
+Hubert
+Raimund
+Gunter
+Christoforos
+Markos
+Romanos
+Vasilios
+Valentinos
+Lambros
+Emmanouil
+Devnand
+Inesh
+Savit
+Yatnesh
+Vishay
+Manek
+Amit
+Munish
+Oris
+Jamiel
+Ahron
+Levey
+Yesochor
+Avidan
+Harrod
+Hanan
+Tabor
+Ephron
+Absolom
+Makis
+Ichabod
+Taaveti
+Sumit
+Vineet
+Rishnu
+Chand
+Madhavacharta
+Navin
+Pranav
+Tsim
+Fue
+Lung
+Pheng
+Sigbjorn
+Heidrekur
+Saimundur
+Jovin
+Ulfar
+Velaugur
+Hunn
+Edvald
+Sigurd
+Sigfinnur
+Bjarni
+Oddur
+Isar
+Vemundur
+Herluf
+Linberg
+Fenrir
+Uranus
+Skidi
+Gudgeir
+Geir
+Akuchi
+Okparo
+Chikere
+Chinou
+Jelani
+Chidy
+Natsuo
+Kyoden
+Kakuei
+Sotaro
+Masakado
+Kenji
+Konyo
+Kazuko
+Kenko
+Shogo
+Jo
+Shoji
+Kazi
+Shinji
+Akira
+Kakuzo
+Hiro
+Arman
+Nurbolat
+Alen
+Iskander
+Marat
+Lorn
+Moul
+Phann
+Pang
+Dith
+Chin
+Chim
+Aang
+Kovind
+Madhab
+Lalu
+Uttam
+Nayan
+Yasti
+Waigwa
+Theuri
+Chege
+Nyoro
+Ngure
+Kimaru
+Min
+Pak
+Changgok
+Gok
+Kim
+Nam
+Tycho
+Lycus
+Hadrius
+Cocus
+Augustus
+Virgo
+Hegio
+Leonida
+Leonid
+Nero
+Kanoa
+Loe
+Lilo
+Keon
+Makan
+Sommai
+Makaio
+Oke
+Kalei
+Alens
+Ruriks
+Falks
+Osvalds
+Godvars
+Gytis
+Naglis
+Mykolas
+Kestas
+Vaidas
+Mikas
+Artemas
+Okeyo
+Othiambo
+Onindo
+Odede
+Otiya
+Muda
+Jusoh
+Desa
+Raadi
+Raaji
+Jati
+Tuna
+Kingi
+Urutu
+Ruhi
+Taika
+Mahora
+Eteka
+Vivek
+Tarak
+Umanath
+Punit
+Dev
+Nirmal
+Kunal
+Tartu
+Bogen
+Yegu
+Bukdai
+Yul
+Ayoub
+Muslih
+Jaul
+Youssef
+Zamen
+Aqil
+Fala
+Tocho
+Wikvaya
+Wanahton
+Nantan
+Hinto
+Sugmuk
+Mikasi
+Alo
+Ouray
+Prakash
+Subodh
+Bishwa
+Mukesh
+Nikhil
+Dheer
+Yngvar
+Sivert
+Christer
+Age
+Svend
+Gudmund
+Tore
+Viggo
+Georg
+Torbjorn
+Vebjorn
+Isak
+Oystein
+Halvard
+Alf
+Helge
+Joar
+Thor
+Mats
+Husain
+Ziyaad
+Demir
+Sahand
+Sabahattin
+Hamood
+Birtan
+Ihsan
+Harun
+Balash
+Daud
+Jaffar
+Shahab
+Hossein
+Heshmat
+Arash
+Karim
+Sadeq
+Aref
+Parsa
+Abbas
+Aziz
+Morteza
+Hashem
+Feliks
+Prots
+Luboslaw
+Leslaw
+Urban
+Mieszko
+Hanusz
+Stojan
+Kasper
+Jozafat
+Wit
+Teobaldo
+Balbino
+Viriato
+Candido
+Ramiro
+Gaspar
+Godofredo
+Navjeev
+Uddam
+Kabir
+Sukhinidhan
+Biradol
+Mahanleen
+Harbeer
+Django
+Yanko
+Chal
+Lasho
+Tobar
+Durril
+Shandor
+Zale
+Bosnik
+Boiko
+Radu
+Vasile
+Marku
+Nicu
+Skender
+Grigore
+Toma
+Costache
+Catarino
+Sasha
+Aleksandr
+Filya
+Krasimir
+Kliment
+Vadim
+Rasim
+Vadik
+Iosif
+Danya
+Nikita
+Lukyan
+Petr
+Valentin
+Valya
+Ruslan
+Pili
+Malosi
+Losi
+Atini
+Vujadin
+Duro
+Miran
+Kalinik
+Jezdimir
+Gavrilo
+Lubos
+Henrich
+Silvester
+Miroslav
+Viliam
+Konrad
+Jakub
+Hodari
+Jamba
+Mosi
+Abasi
+Sefu
+Ayo
+Tamu
+Khalfani
+Ludvig
+Hakan
+Onne
+Zakarias
+Mikael
+Elton
+Sigge
+Roland
+Stefan
+Ovid
+Ravel
+Srinan
+Natheep
+Lithik
+Shikan
+Yasmith
+Sayan
+Venujayan
+Tadthon
+Chakan
+Vidura
+Trat
+Thorn
+Taat
+Vitaya
+Nattanan
+Somsak
+Pasat
+Ertek
+Haldun
+Eray
+Suat
+Erksun
+Mehmet
+Aytek
+Ergin
+Dogander
+Quang
+Quoc
+Tuan
+Viet
+Loc
+Khang
+Blann
+Skarf
+Thorvard
+Jorund
+Starolf
+Steinolf
+Haki
+Throst
+Rognvald
+Bolverk
+Vigi
+Odinkar
+Hjor
+Beinir
+Ingolf
+Ragnar
+Badahar
+Heru
+Abrik
+Darshanbir
+Baljeet
+Daldir
+Fakeer
+Puneet
+Maskeen
+Lungelo
+Phakama
+Horus
+Xeghu
+Ukuza
+Dundubala
+Thembelani
+Dumesani
+Mohamed
+Abdelkader
+Rachid
+Said
+Brahim
+Djamel
+Abdallah
+Habib
+Murad
+Fadi
+Mohammed
+Tareq
+Mamadou
+Junior
+Bandile
+Prince
+Mehdi
+Santino
+Keven
+Heitor
+Agustin
+Vicente
+Iker
+Jie
+Fenf
+Yong
+Bin
+Aarav
+Wei
+Reza
+Noam
+Itai
+Rahman
+Batkhaan
+Ichika
+So
+Minato
+Ren
+Hinata
+Haruta
+Ryo
+Somchai
+Prasert
+Maksim
+Cyrus
+Rip
+Ripley
+Colt
+Kilroy
+Zero
+Armitage
+Lucky
+Blitz
+Kroner
+Zak
+Basque
+Tau
+Kepler
+Neo
+Nova
+Cas
+Cypher
+Switch
+Thadeus
+Lock
+Morpheus
+Sifat
+Ose
+Havdid
+Bruno
+Jossen
+Tetsuo
+Talos
+Solo
+Tobor
+Huey
+Dewey
+Louie
+Ash
+Sonny
+Titan
+Bax
+Casper
+Finnegan
+Loki
+Odin
+Finley
+Flynn
+Shamus
+Ultan
+German
+Sirius
+Castor
+Pollux
\ No newline at end of file
diff --git a/config/names/first_name_skrell.txt b/config/names/first_name_skrell.txt
index 4c7654d3a5..964a52dabe 100644
--- a/config/names/first_name_skrell.txt
+++ b/config/names/first_name_skrell.txt
@@ -597,4 +597,4 @@ Xekeax
Kequex
Xetaq
Ke'xae'xe
-Teq'quex'qux
\ No newline at end of file
+Teq'quex'qux
diff --git a/config/names/last.txt b/config/names/last.txt
index 6080967e2d..926773a672 100644
--- a/config/names/last.txt
+++ b/config/names/last.txt
@@ -36,7 +36,6 @@ Logue
Reichard
Day
Dugmore
-Murray
Greenawalt
Jyllian
Osterwise
@@ -224,13 +223,11 @@ Unk
Otis
Quinn
Bell
-Roberts
Wood
Ullman
Bicknell
Gibson
Rohtin
-James
Wallick
Eggbert
Losey
@@ -273,7 +270,6 @@ Hook
Reighner
Welty
Jenkins
-Bennett
Swarner
Hawker
Agg
@@ -341,7 +337,6 @@ Laurenzi
Minnie
Houser
Langston
-Anderson
Barrett
Wible
Hujsak
@@ -398,7 +393,6 @@ Ratcliff
Riggle
Newton
Sanders
-Mitchell
Lauffer
Aggley
Moberly
@@ -438,13 +432,9 @@ Smith
Steele
Leach
Armstrong
-Wheeler
Easter
Greenwood
-Woodward
-Pratt
Buzzard
-Cox
Eliza
Rockwell
Zeal
@@ -468,7 +458,6 @@ Digson
Byers
Hincken
Shaner
-Todd
Whiteman
Lineman
Albright
@@ -505,68 +494,36 @@ Dawkins
McShain
McDonohugh
Power
-Smith
Jones
Williams
Brown
Taylor
Davies
Wilson
-Evans
-Thomas
-Roberts
-Johnson
Walker
Wright
-Robinson
Thompson
-Hughes
-White
-Edwards
-Hall
Patel
-Green
Martins
Lewis
-Wood
-Jackson
-Clarke
Harris
Clark
-Scott
Turner
-Hill
-Moore
Cooper
Morris
-Ward
-Watson
Morgan
-Anderson
Harrison
-King
-Campbell
-Young
-Mitchell
-Baker
-James
Kelly
Allen
-Bell
Phillips
Lee
-Stewart
-Miller
Parker
Simpson
-Bennett
-Davis
Griffiths
Shaw
Price
Cook
Richardson
-Murray
Marshall
Begum
Murphy
@@ -577,9 +534,6 @@ Bailey
Carter
Robertson
Graham
-Adams
-Richards
-Cox
Singh
Hussain
Ellis
@@ -591,22 +545,18 @@ Ali
Reid
Rathens
Rathen
-Mason
Chapman
Powell
Owen
Ahmed
-Gibson
Rogers
Webb
Holmes
Mills
Matthews
-Hunt
Palmer
Lloyd
Kaur
-Fisher
Ivanov
Smirnov
Vasilyev
@@ -616,4 +566,1061 @@ Mikhaylov
Pavlov
Semenov
Andreev
-Alekseev
\ No newline at end of file
+Alekseev
+Mali
+Troshani
+Nano
+Kupi
+Syla
+Lucca
+Hasani
+Khalef
+Benita
+Fahas
+Seghir
+Ziani
+Saadi
+Beghal
+Yamin
+Mousa
+Bilal
+Khalaf
+Zafar
+Salman
+Naderi
+Usman
+Al-Hassen
+El-Salame
+Al-Fadel
+El-Shaer
+El-Amini
+Al-Miah
+Al-Meskin
+El-Nazar
+Villar
+Caceres
+Dominguez
+Ortiz
+Vidal
+Escobar
+Schiavone
+Hagopian
+Petrosian
+Baronian
+Kostanian
+Ismailyan
+Jamshidova
+Kyrimsoy
+Maharramova
+Jurio
+Zabalain
+Ilurdoz
+Menda
+Anchoverri
+Osteriz
+Basque
+Duquesne
+Peeters
+Blindeman
+Piat
+Raes
+Delporte
+Verplancke
+Vandevelde
+Carton
+Basak
+Khuro
+Sastri
+Thakur
+Chakraborty
+Paramahamsa
+Mazumdar
+Momen
+Sanu
+Chatterjee
+Saraswat
+Ghosh
+Rakib
+Majumder
+Terzic
+Alagic
+Topalovic
+Bajramovic
+Ivanovic
+Vidovic
+Yadanar
+Nway
+Myat
+Naing
+Ebot
+Njoya
+Ewaso
+Lekeaka
+Lukombo
+Masumbuku
+Mukendi
+Dimonekene
+Kosi
+Linzenge
+Nguo
+Boko
+Manoka
+Gower
+Pumphrey
+Priddy
+Clough
+Sealy
+Bethel
+Ros
+MacLeoir
+MacCrum
+Tsarnaeva
+Khadzhiev
+Maskhadov
+Hamidov
+Musaeva
+Usamova
+Xing
+Feng
+Qui
+Zhang
+Xun
+Teng
+Huang
+Deng
+Pan
+Zhou
+Kong
+Cheng
+Mao
+Zou
+Solic
+Kopic
+Paunovic
+Papratovic
+Spiljak
+Marek
+Capek
+Prusik
+Vecerova
+Karaskova
+Jansen
+Ludvigsen
+Bentsen
+Berg
+Jepsen
+Karlsen
+Ebbesen
+Dogger
+Bakker
+Keulen
+Harloff
+Ossen
+Storteboom
+Vermeer
+Gasner
+Dam
+Boer
+Hurmann
+Geerts
+Cheverton
+Goddard
+Harpham
+Ashpole
+Hillyard
+Lochty
+Relish
+Fernsby
+Khepera
+Nebka
+Amemu
+Neferu
+Horemhebi
+Kharatanekha
+Anuketma
+Cham
+Bata
+Tannous
+Tuma
+Asghar
+Mallouf
+Bishara
+Aswan
+Kouri
+Hackeman
+Bulstrode
+Fane
+Norwood
+Goodstone
+Milner
+Parn
+Teder
+Sirel
+Magi
+Kask
+Lepmets
+Jogi
+Girma
+Abebe
+Lebna
+Anom
+Feleke
+Bereket
+Selassie
+Panaligan
+Manalastas
+Zoleta
+Decatoria
+Solonen
+Paananen
+Latvala
+Kukkonen
+Waris
+Niemi
+Kallo
+Delon
+Allard
+Renaud
+Blanc
+Gerin
+Aubert
+Geiger
+Landry
+Vannier
+Saint-Yves
+Gauthier
+Ehrenfest
+Konig
+Kindler
+Ruhl
+Voigt
+Rickenbacker
+Strasburger
+Stratos
+Rota
+Economos
+Romanos
+Hallos
+Floros
+Fotopoulos
+Constantinos
+Stamou
+Demetrios
+Stavropoulos
+Demetriou
+Panagopoulou
+Desai
+Vyas
+Chudasama
+Kotak
+Tripathi
+Bhansali
+Chitalia
+Sarabhai
+Modi
+Adani
+Silberstein
+Dresner
+Cohen
+Metz
+Bashevis
+Laski
+Yedidyah
+Ginsberg
+Levinstein
+Abraham
+Federman
+Adler
+Gottesman
+Rabinowicz
+Seth
+Vad
+Mahanta
+Chadda
+Bhaumik
+Jadhav
+Dvivedi
+Lata
+Poddar
+Talavalakar
+Satavelekar
+Mudaliyar
+Nayar
+Nan
+Tsab
+Chue
+Wong
+Thao
+Thai
+Song
+Finnsson
+Finnsdottir
+Kristvinsson
+Krisovinsdottir
+Ingvaldsson
+Ingvaldsdottir
+Abelsson
+Abelsdottir
+Sigurdsson
+Sigurdsdottir
+Holmsson
+Holmsdottir
+Chidey
+Onuchukwu
+Akachi
+Mazzi
+Onyekachi
+Ndulu
+Ngozi
+Obasi
+Jajah
+Uchechea
+Zebenjo
+Ishida
+Ito
+Matsushita
+Yoshimi
+Horikiri
+Sakai
+Kase
+Watari
+Tano
+Fuji
+Okada
+Yadama
+Yagami
+Homura
+Tanimoto
+Kugo
+Fuse
+Sugita
+Naya
+Hamakawa
+Kobayashi
+Serikov
+Fauskeev
+Yerbolatev
+Ayatova
+Ericova
+Khazretgaliev
+Baurzhanova
+Khemera
+Nhean
+Narith
+Sourkea
+Visal
+Poeu
+Kalliyan
+Akara
+Chantou
+Rachana
+Kunthea
+Rasmey
+Nuon
+Akash
+Vrsiini
+Ijay
+Navin
+Ikshu
+Asheesh
+Harihar
+Paramartha
+Mukesh
+Ngendo
+Mumbi
+Murugi
+Kioni
+Nyagura
+Njambi
+Mugo
+Kiongo
+Mburu
+Sook
+Eon
+Ri
+So-Yung
+So-Ri
+Dae-Jung
+Jin
+Joon
+Yong
+Yung
+Scaro
+Decius
+Geta
+Nero
+Natalis
+Pollienus
+Docilus
+Castus
+Nerva
+Siyavong
+Chanthraphone
+Sengtavisouk
+Thonemany
+Vatthana
+Keobunta
+Savang
+Rattanavongsa
+Khanthavong
+Lapsina
+Lodina
+Caune
+Veiss
+Ozers
+Lielmanis
+Lidaks
+Rubenis
+Tucs
+Bekeryte
+Vaiciute
+Pakeryte
+Maczinskiene
+Pretkelis
+Naidicas
+Suksta
+Kanapickas
+Straksys
+Remeza
+Kantautine
+Leipute
+Ogutu
+Ondiek
+Were
+Kowa
+Sialo
+Ochola
+Obonyo
+Akelo
+Hongo
+Julu
+Oduyu
+Orombi
+Noh
+Che
+Dhareef
+Taufan
+Petera
+Witika
+Pikari
+Enoka
+Timoti
+Piripi
+Arona
+Romana
+Natana
+Kapale
+Agarkar
+Karve
+Rasam
+Deshmane
+Sonarkar
+Lagu
+Shinde
+Javkar
+Sawant
+Ranganakar
+Hardas
+Pawgi
+Sibari
+Khatibi
+Mernissi
+Bikri
+Samie
+Zniber
+Lemsih
+Wasti
+Subba
+Karkee
+Pandeya
+Belbase
+Rawal
+Osland
+Thygesen
+Reiten
+Davidsen
+Haller
+Tofte
+Pettersen
+Island
+Handeland
+Saltvik
+Bakke
+Hotvedt
+Kampen
+Vangsness
+Fjerstad
+Underberg
+Munch
+Lodhra
+Ansari
+Banday
+Karlal
+Hameed
+Sarpara
+Bhatti
+Tareen
+Marri
+Kirmani
+Daudpota
+Ghazali
+Mangi
+Vele
+Paiyo
+Apa
+Henao
+Kasi
+Injia
+Kewa
+Tajik
+Raad
+Vakili
+Mashayekhi
+Hosseini
+Panahi
+Rashidi
+Fallah
+Mostofi
+Kasebi
+Afshani
+Boromand
+Qaderi
+Safavi
+Golshani
+Barbarz
+Bina
+Raoufi
+Ahangar
+Kabat
+Loszowska
+Ras
+Murawska
+Kwasny
+Halas
+Kabacinska
+Maszowska
+Rojek
+Maczko
+Makos
+Hodor
+Kapitan
+Sirek
+Kopinski
+Cordeiro
+Seixas
+Tavares
+Carneiro
+Neves
+Queiroz
+Nunes
+Hind
+Abril
+Baptista
+Montenegro
+Azevedo
+Sousa
+Bandiera
+Barboza
+Dhir
+Gora
+Tott
+Tatran
+Jhaal
+Motsara
+Dhama
+Bhadu
+Bargoti
+Sherred
+Heron
+Jell
+Kitt
+Driskin
+Ilica
+Gupta
+Cristea
+Ragar
+Lascar
+Troester
+Rosetti
+Bus
+Dita
+Trelles
+Macek
+Moscovici
+Gavrikova
+Bylinkaina
+Stepnova
+Kaverina
+Antipov
+Vadimovich
+Pavlovich
+Victorovna
+Denisovna
+Panina
+Desyatkova
+Burkov
+Kuzkin
+Dmitrivich
+Rusakov
+Safenu
+Niu
+Savali
+Pelesa
+Tilo
+Pule
+Lotomau
+Milovic
+Jelic
+Pesic
+Zoric
+Ristovski
+Karanovic
+Pejakovski
+Janketic
+Kovacova
+Tesarova
+Botosova
+Bartos
+Holub
+Koren
+Mokry
+Ekholm
+Wikstrom
+Malmquist
+Almgren
+Westermark
+Dahlman
+Wallin
+Mattson
+Ostlund
+Bjork
+Linden
+Stenbeck
+Forslund
+Sandstrom
+Srinan
+Natheep
+Lithik
+Shikan
+Yasmith
+Sayan
+Venujayan
+Palapol
+Sudham
+Kitjakarn
+Montri
+Singhapat
+Gason
+Wongsawat
+Juntasa
+Yao
+Tahir
+Sakir
+Keles
+Usta
+Hasim
+Karaduman
+Bayat
+Korkut
+Altun
+Nguyen
+Chu
+Hoang
+Do
+Huynh
+Duong
+Vu
+Quang
+Gunnsteinssen
+Ketilssen
+Skialgssen
+Kotkelldottir
+Ufidottir
+Warydottir
+Ragnarssen
+Junhi
+Rakhya
+Bhander
+Sadho
+Rajwa
+Kes
+Dhesi
+Sohi
+Puriwal
+Jawia
+Hayre
+Wains
+Asar
+Bati
+Li
+Truong
+Jang
+Wang
+Ruan
+Smirnova
+Mammadov
+Ailyev
+Hasanov
+Kazi
+Mina
+Pal
+Saha
+Roy
+Dewan
+Hasan
+Islam
+Wazen
+Rohman
+Akter
+Banik
+Bishwas
+Chakma
+Dey
+Gazi
+Shekh
+Xu
+Ho
+Law
+Lam
+Zhu
+Bedrize
+Gill
+Joshi
+Babu
+Dutta
+Kumar
+Patil
+Mehta
+Mittal
+Pandit
+Levi
+Mizrachi
+Peretz
+Biton
+Sato
+Kato
+Suzuki
+Takahashi
+Tanaka
+Watanabe
+Nakamura
+Yamamoto
+Kimura
+Abe
+Endo
+Park
+Shreshtha
+Thapa
+Navarro
+Perara
+Kumara
+Gamage
+Kaya
+Demir
+Gruber
+Huber
+Bauer
+Wagner
+Pichler
+Moser
+Mayer
+Maier
+Schuster
+Ivanou
+Kazlou
+janssens
+Maes
+Jacobs
+Mertens
+Simon
+Hodzic
+Petrovic
+Jovanovic
+Dimitrov
+Boyanov
+Tasev
+Nikolov
+Gruev
+Horvat
+Kovacevic
+Babic
+Maric
+Novak
+Svoboda
+Nielsen
+Jensen
+Pedersen
+Sorensen
+Tamm
+Saar
+Sepp
+Joensen
+Korhonen
+Virtanen
+Makinen
+Laine
+Salo
+Dubois
+Martin
+Roux
+Laurent
+Mercier
+Dupont
+Lambert
+Francois
+Michel
+Nagy
+Giannopoulos
+Kovacs
+Horvath
+Kiss
+Byrne
+Reilly
+Doyle
+Doherty
+Rossi
+Russo
+Ferrari
+Esposito
+Bianchi
+Colombo
+Ricci
+Rizzo
+Leone
+Conte
+Neri
+Caputo
+Grassi
+Monti
+Krasniqi
+Morina
+Ozols
+Berzins
+Kazlauskas
+Petrauskas
+Jankauskas
+Borg
+Camilleri
+Andov
+Heaven
+Bozinov
+Rusu
+Ceban
+Popa
+Bos
+Vos
+Hendriks
+Dijkstra
+Smits
+Janse
+Hansen
+Johansen
+Dahl
+Lund
+Nowak
+Kowalski
+Wisniewski
+Wojak
+Mazur
+Wozniak
+Silva
+Jesus
+Freitas
+Radu
+Stoica
+Popov
+Haven
+Moreno
+Sanz
+Bernasconi
+Fontana
+Yilmaz
+Melnyk
+Shevchenko
+Boyko
+MacDonald
+Driscoll
+Mackintosh
+Craig
+MacLean
+Cormack
+Keenan
+MacCulloch
+Mackinnon
+Tremblay
+Jimenez
+Gagnon
+Mora
+Solis
+Tjon
+Mars
+Venus
+Mercury
+Luna
+Ceres
+Deimos
+Phobos
+Ganymede
+Io
+Europa
+Amalthea
+Himalia
+Thebe
+Elara
+Pasiphae
+Metis
+Carme
+Sinope
+Lysithea
+Ananke
+Leda
+Themisto
+Praxidike
+Locaste
+Kalyke
+Megaclite
+Taygete
+Callirrhoe
+Autonoe
+Harpalyke
+Thyone
+Hermippe
+Chalende
+Aoede
+Eukalade
+Isonoe
+Helike
+Carpo
+Aitne
+Eurydome
+Hegomone
+Arche
+Euanthe
+Sponde
+Euporie
+Mneme
+Kore
+Kallichore
+Valetudo
+Titan
+Thea
+Iapetus
+Dione
+Tethys
+Enceladus
+Mimas
+Hyperion
+Pheobe
+Janus
+Epimethus
+Prometheus
+Pandora
+Siarnaq
+Helene
+Albiorix
+Atlas
+Telesto
+Paaliaq
+Calypso
+Ymir
+Tarvos
+Skathi
+Narvi
+Kari
+Skoll
+Bestla
+Methone
+Pallene
+Anthe
+Titania
+Oberon
+Umbriel
+Ariel
+Miranda
+Sycorax
+Puck
+Portia
+Juliet
+Caliban
+Belinda
+Rosalina
+Bianca
+Cupid
+Mab
+Triton
+Proteus
+Larissa
+Halimede
+Sao
+Charon
+Hydra
+Nix
+Kerberos
+Styx
+Jupiter
+Saturn
+Uranus
+Neptune
+Pluto
+Orcus
+Haumea
+Quaoar
+Makemake
+Eris
+Salacia
+Sedna
+Nova
+Trask
+Ripley
+Kilroy
+Simms
+Winters
+Renard
+Reeves
+Looper
+Cassini
+Juno
+Dawn
+Kepler
+Akatsuki
+Ofako
+Zeng
+Fong
+Said
+Halward
+Tetsuo
+Onishi
+Link
+Score
+Asimov
+Strugatsky
+Gort
+Gallagher
+Nimrod
+Jovian
+Crichton
+Andromeda
+Llewellyn
+Naylor
+Thorax
+Curie
+Zisa
+Zax
+Aegis
+Bishop
+Alpha
+Omega
+Delta
+Ohm
+Cain
+Brax
+Bracket
+Bolt
+Weld
+Apogee
+Gliese
+Zeta
+Leporis
+Barnard
+Vega
+Altair
\ No newline at end of file
diff --git a/config/names/last_name_skrell.txt b/config/names/last_name_skrell.txt
index 8bc32333cb..393c07b6b6 100644
--- a/config/names/last_name_skrell.txt
+++ b/config/names/last_name_skrell.txt
@@ -597,4 +597,4 @@ Xaaqxum'xe
Xertaq
Xuexuq'qerr
Xaaq'xae'kea
-Qerr'teq'qer
\ No newline at end of file
+Qerr'teq'qer
diff --git a/html/changelog.html b/html/changelog.html
index 146eb779c7..9a67ab4065 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -53,6 +53,52 @@
-->
+
30 November 2018
+
Cerebulon updated:
+
+ - Added 1000+ surnames and 1200+ forenames from various world cultures to human namelists
+
+
LBnesquik updated:
+
+ - Replaced the plant clippers with a reskinned pair of hedgetrimmers.
+
+
Lbnesquik updated:
+
+ - General biogenerator improvements:
+ - Added feedback noise to the processing.
+ - Allow for cream dispensing.
+ - Allow for plant bag creation.
+ - Allow for 5 units of meat to be dispensed at once.
+ - Allow for 5 units of liquids to be dispensed at once totalling 50u.
+ - Add and allow the creation of larger plant bags for easier ferrying of plants..
+ - Add a description to the machine itself.
+
+
Mechoid updated:
+
+ - Prometheans are no longer murdered by blood, and instead process it like a weak nutrient. Will slow the regeneration of toxins due to water content.
+ - Ctrl clicking a Rapid Service Fabricator when held will allow you to choose the container it deploys.
+ - The Rapid Service Fabricator's icon is correctly set.
+
+
Neerti updated:
+
+ - Rewrites the AI system for mobs. It should be more responsive and robust. Some mobs have special AIs which can do certain things like kiting, following you on a lark, or telling you to go away before shooting you.
+ - Rewrites literally every 'simple_animal' mob into new, shinier, and hopefully more interesting 'simple_mob' mobs, some with new mechanics, like spiders, fake mechas, and hivebots. There are so many changes that it wouldn't be possible to list them here.
+ - RCDs can now build grilles and windows, with a new mode. They can also finish walls when used on girders on floor/wall mode.
+ - Adds various new RCDs that are not obtainable at the moment.
+
+
Woodrat updated:
+
+ - Xenoflora and Xenobio moved to station, first deck.
+ - Minor bugfixes including mislabeled lockers in robotics and floor decals.
+
+
kartagrafi updated:
+
+ - Adds new hairstyle 'Sharp Ponytail'
+ - Adds several new underwear - 'Binder', 'Strapless Binder', 'Longsleeve Striped Shirt, Pink', 'Pink Wing Shirt', 'Pink and Black T-Shirt', 'Leggings'
+ - Changes name of 'Supernova' hairstyle to 'Glossy', and makes the sprite somewhat neater
+ - Fixes a hairstyle not appearing
+
+
13 October 2018
Anewbe updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index f0fe92cc80..572aad63f8 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -4240,3 +4240,46 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Added a RIG customization kit.
- tweak: RIGs now use a var called suit_state to determine the basis for their component
icons, rather than the rig's icon state.
+2018-11-30:
+ Cerebulon:
+ - rscadd: Added 1000+ surnames and 1200+ forenames from various world cultures to
+ human namelists
+ LBnesquik:
+ - rscadd: Replaced the plant clippers with a reskinned pair of hedgetrimmers.
+ Lbnesquik:
+ - rscadd: 'General biogenerator improvements:'
+ - rscadd: Added feedback noise to the processing.
+ - rscadd: Allow for cream dispensing.
+ - rscadd: Allow for plant bag creation.
+ - rscadd: Allow for 5 units of meat to be dispensed at once.
+ - rscadd: Allow for 5 units of liquids to be dispensed at once totalling 50u.
+ - rscadd: Add and allow the creation of larger plant bags for easier ferrying of
+ plants..
+ - rscadd: Add a description to the machine itself.
+ Mechoid:
+ - tweak: Prometheans are no longer murdered by blood, and instead process it like
+ a weak nutrient. Will slow the regeneration of toxins due to water content.
+ - rscadd: Ctrl clicking a Rapid Service Fabricator when held will allow you to choose
+ the container it deploys.
+ - bugfix: The Rapid Service Fabricator's icon is correctly set.
+ Neerti:
+ - experiment: Rewrites the AI system for mobs. It should be more responsive and
+ robust. Some mobs have special AIs which can do certain things like kiting,
+ following you on a lark, or telling you to go away before shooting you.
+ - tweak: Rewrites literally every 'simple_animal' mob into new, shinier, and hopefully
+ more interesting 'simple_mob' mobs, some with new mechanics, like spiders, fake
+ mechas, and hivebots. There are so many changes that it wouldn't be possible
+ to list them here.
+ - rscadd: RCDs can now build grilles and windows, with a new mode. They can also
+ finish walls when used on girders on floor/wall mode.
+ - rscadd: Adds various new RCDs that are not obtainable at the moment.
+ Woodrat:
+ - rscadd: Xenoflora and Xenobio moved to station, first deck.
+ - bugfix: Minor bugfixes including mislabeled lockers in robotics and floor decals.
+ kartagrafi:
+ - rscadd: Adds new hairstyle 'Sharp Ponytail'
+ - rscadd: Adds several new underwear - 'Binder', 'Strapless Binder', 'Longsleeve
+ Striped Shirt, Pink', 'Pink Wing Shirt', 'Pink and Black T-Shirt', 'Leggings'
+ - tweak: Changes name of 'Supernova' hairstyle to 'Glossy', and makes the sprite
+ somewhat neater
+ - bugfix: Fixes a hairstyle not appearing
diff --git a/html/changelogs/Mechoid-Grippers.yml b/html/changelogs/Mechoid-Grippers.yml
new file mode 100644
index 0000000000..1b4c6f69b3
--- /dev/null
+++ b/html/changelogs/Mechoid-Grippers.yml
@@ -0,0 +1,13 @@
+
+author: Mechoid
+
+delete-after: True
+
+
+changes:
+ - rscadd: "Research and Engineering borgs now have 'Circuit Grippers', used for constructing and operating integrated circuit machinery."
+ - tweak: "Grippers now allow interaction with their contents, by attacking the gripper itself with an item when one is held. I.E., drawing from a beaker with a syringe."
+ - tweak: "Grippers now show their held item's examine information when examined. Tab information added."
+ - tweak: "Cyborgs can now interact with integrated circuit printers and machines when adjacent to them."
+ - tweak: "Multitools now have a menu to switch modes between standard use and integrated circuit reference scanning. Antag multi-tools untouched for now."
+ - bugfix: "Integrated circuit printer now respects adjacency, if it is not set to debug."
diff --git a/html/changelogs/Neerti-RCDs.yml b/html/changelogs/Neerti-RCDs.yml
deleted file mode 100644
index 04c5778974..0000000000
--- a/html/changelogs/Neerti-RCDs.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-################################
-# Example Changelog File
-#
-# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
-#
-# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
-# When it is, any changes listed below will disappear.
-#
-# Valid Prefixes:
-# bugfix
-# wip (For works in progress)
-# tweak
-# soundadd
-# sounddel
-# rscadd (general adding of nice things)
-# rscdel (general deleting of nice things)
-# imageadd
-# imagedel
-# maptweak
-# spellcheck (typo fixes)
-# experiment
-#################################
-
-# Your name.
-author: Neerti
-
-# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
-delete-after: True
-
-# Any changes you've made. See valid prefix list above.
-# INDENT WITH TWO SPACES. NOT TABS. SPACES.
-# SCREW THIS UP AND IT WON'T WORK.
-# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
-# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
-changes:
- - rscadd: "RCDs can now build grilles and windows, with a new mode. They can also finish walls when used on girders on floor/wall mode."
- - rscadd: "Adds various new RCDs that are not obtainable at the moment."
diff --git a/html/changelogs/Woodrat - XenoMove.yml b/html/changelogs/Woodrat - XenoMove.yml
deleted file mode 100644
index 1173591076..0000000000
--- a/html/changelogs/Woodrat - XenoMove.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-################################
-# Example Changelog File
-#
-# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
-#
-# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
-# When it is, any changes listed below will disappear.
-#
-# Valid Prefixes:
-# bugfix
-# wip (For works in progress)
-# tweak
-# soundadd
-# sounddel
-# rscadd (general adding of nice things)
-# rscdel (general deleting of nice things)
-# imageadd
-# imagedel
-# maptweak
-# spellcheck (typo fixes)
-# experiment
-#################################
-
-# Your name.
-author: Woodrat
-
-# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
-delete-after: True
-
-# Any changes you've made. See valid prefix list above.
-# INDENT WITH TWO SPACES. NOT TABS. SPACES.
-# SCREW THIS UP AND IT WON'T WORK.
-# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
-# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
-changes:
- - rscadd: "Xenoflora and Xenobio Addition to station, first deck."
- - bugfix: "Minor bugfixes including mislabeled lockers in robotics and floor decals."
diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi
index 4b7e714731..6c631498f6 100644
Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index b735173878..e45ddcbb0d 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi
index 5c3bb92b76..ca5c8b87a5 100644
Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ
diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi
index c294178f91..dc8de0b6d0 100644
Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index e503b0d1b9..f3836ae2c1 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/birds.dmi b/icons/mob/birds.dmi
new file mode 100644
index 0000000000..afc1d8ff18
Binary files /dev/null and b/icons/mob/birds.dmi differ
diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi
index f83c836427..4f249e2e8a 100644
Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ
diff --git a/icons/mob/hivebot.dmi b/icons/mob/hivebot.dmi
index ecaa519822..e18209733d 100644
Binary files a/icons/mob/hivebot.dmi and b/icons/mob/hivebot.dmi differ
diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi
index fbea9c563e..cbf20402e6 100644
Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ
diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi
index 75929194f9..a65de5defd 100644
Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ
diff --git a/icons/mob/human_face_m.dmi b/icons/mob/human_face_m.dmi
index 457dd0e5df..fe62645869 100644
Binary files a/icons/mob/human_face_m.dmi and b/icons/mob/human_face_m.dmi differ
diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi
index c02abf60c8..41d2fbd305 100644
Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ
diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi
index 0e16db099e..d24841e6c1 100644
Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 1b0e592001..4bfb8bf479 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/mob/modifier_effects.dmi b/icons/mob/modifier_effects.dmi
index 262e45e717..abd78dcd31 100644
Binary files a/icons/mob/modifier_effects.dmi and b/icons/mob/modifier_effects.dmi differ
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index 0798bbc4d3..842909d3ec 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/slime2.dmi b/icons/mob/slime2.dmi
index a0b6051665..9391c1acd3 100644
Binary files a/icons/mob/slime2.dmi and b/icons/mob/slime2.dmi differ
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index a8ae36b5e8..3bf2b9d660 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 1b834792bd..6c697f2777 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index 2492c87e70..731346ad0c 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ
diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi
index b25a6cbc56..a7d05818bf 100644
Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ
diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm
index 90d22afb86..96fb79cf16 100644
--- a/maps/RandomZLevels/wildwest.dm
+++ b/maps/RandomZLevels/wildwest.dm
@@ -90,7 +90,7 @@
if("Peace")
user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence."
user << "You feel as if you just narrowly avoided a terrible fate..."
- for(var/mob/living/simple_animal/hostile/faithless/F in living_mob_list)
+ for(var/mob/living/simple_mob/faithless/F in living_mob_list)
F.health = -10
F.stat = 2
F.icon_state = "faithless_dead"
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index 1021cbbcaa..8643d1d88d 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -131,7 +131,7 @@
"acA" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/library)
"acB" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/locker)
"acC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/library)
-"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/library)
+"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/library)
"acE" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 0},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library_conference_room)
"acF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/library_conference_room)
"acG" = (/turf/simulated/floor/wood,/area/library_conference_room)
@@ -206,7 +206,7 @@
"adX" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor,/area/maintenance/library)
"adY" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/maintenance/library)
"adZ" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
-"aea" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/locker)
+"aea" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/locker)
"aeb" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Chapel Morgue"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"aec" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"aed" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access = list(22)},/obj/machinery/mass_driver{dir = 4; id = "chapelgun"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/airlock_sensor{pixel_y = 25},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/chapel/chapel_morgue)
@@ -305,7 +305,7 @@
"afS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/locker)
"afT" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"afU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
-"afV" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
+"afV" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"afW" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"afX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/chapel/chapel_morgue)
"afY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/detectives_office)
@@ -1004,7 +1004,7 @@
"atp" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/security/riot_control)
"atq" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor,/area/security/riot_control)
"atr" = (/turf/simulated/wall/r_wall,/area/security/riot_control)
-"ats" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
+"ats" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"att" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
"atu" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
"atv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor,/area/maintenance/security_starboard)
@@ -2752,7 +2752,7 @@
"baV" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/boots/combat,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/mine/unexplored/upper_level)
"baW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Pump Station"; req_one_access = list(11,24)},/turf/simulated/floor,/area/maintenance/medbay_fore)
"baX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
-"baY" = (/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle)
+"baY" = (/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle)
"baZ" = (/turf/simulated/wall/r_wall,/area/rnd/research_storage)
"bba" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bbb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/rnd/research)
@@ -3776,7 +3776,7 @@
"buF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo)
"buG" = (/obj/structure/flora/pottedplant{icon_state = "plant-01"},/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
-"buI" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
+"buI" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_mob/animal/passive/cat/runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buK" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
@@ -4187,7 +4187,7 @@
"bCA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/central)
"bCB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor,/area/maintenance/central)
"bCC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/central)
-"bCD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/central)
+"bCD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/central)
"bCE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/maintenance/central)
"bCF" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/maintenance/central)
"bCG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/maintenance/central)
@@ -4270,7 +4270,7 @@
"bEf" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/random/drinkbottle,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/central)
"bEg" = (/turf/simulated/floor/tiled,/area/maintenance/central)
"bEh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/maintenance/central)
-"bEi" = (/obj/machinery/light/small,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/central)
+"bEi" = (/obj/machinery/light/small,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/central)
"bEj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central)
"bEk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central)
"bEl" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/central)
@@ -4570,7 +4570,7 @@
"bJT" = (/turf/simulated/wall/r_wall,/area/quartermaster/miningdock)
"bJU" = (/obj/structure/lattice,/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock)
"bJV" = (/obj/structure/lattice,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock)
-"bJW" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research)
+"bJW" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/research)
"bJX" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research)
"bJY" = (/obj/structure/table/standard,/obj/item/device/assembly/igniter,/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
"bJZ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light,/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
@@ -4590,7 +4590,7 @@
"bKn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
"bKo" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/machinery/door/firedoor,/obj/structure/window/reinforced/polarized{dir = 8; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 2; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 4; id = "hop_office"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop)
"bKp" = (/obj/structure/closet/secure_closet/hop,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
-"bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
+"bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_mob/animal/passive/dog/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bKr" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bKs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bKt" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
@@ -4886,7 +4886,7 @@
"bPX" = (/obj/machinery/computer/aifixer,/obj/effect/floor_decal/corner/purple/full,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bPY" = (/obj/machinery/computer/robotics,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bPZ" = (/obj/machinery/computer/mecha,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/ai_status_display{pixel_y = -32},/obj/machinery/camera/network/research{c_tag = "SCI - RD's Office"; dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
-"bQa" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_animal/slime/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
+"bQa" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_mob/slime/xenobio/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bQb" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice)
"bQc" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bQd" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/pink{dir = 4},/turf/simulated/floor/tiled,/area/assembly/robotics)
@@ -5366,7 +5366,7 @@
"bZj" = (/turf/simulated/wall,/area/maintenance/medbay_aft)
"bZk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft)
"bZl" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
-"bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"bZn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"bZo" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "large_escape_pod_1_berth"; pixel_x = -26; pixel_y = 0; tag_door = "large_escape_pod_1_berth_hatch"},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway)
"bZp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway)
@@ -6184,7 +6184,7 @@
"coV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central_three)
"coW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"coX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
-"coY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
+"coY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"coZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"cpa" = (/obj/machinery/camera/network/command{c_tag = "COM - Vault"; dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"cpb" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
@@ -9152,7 +9152,7 @@
"dtZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/engineering/storage)
"dua" = (/obj/effect/decal/cleanable/dirt,/obj/structure/dispenser{oxygentanks = 0},/turf/simulated/floor,/area/engineering/storage)
"dub" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/engineering)
-"duc" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/engineering)
+"duc" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/engineering)
"dud" = (/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"due" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/hologram/holopad,/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 1 Mid"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"duf" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/machinery/hologram/holopad,/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 2 Mid"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
@@ -9872,7 +9872,7 @@
"dHR" = (/obj/item/weapon/rig/breacher,/obj/item/clothing/mask/breath,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
"dHS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"dHT" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/breacher,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10175,3 +10175,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm
index cbdb8d3e61..9780679b04 100644
--- a/maps/northern_star/polaris-2.dmm
+++ b/maps/northern_star/polaris-2.dmm
@@ -19,7 +19,7 @@
"as" = (/obj/structure/table/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/pin/flower,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre)
"at" = (/obj/effect/landmark/costume,/obj/structure/table/rack/holorack,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre)
"au" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom)
-"av" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom)
+"av" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom)
"aw" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom)
"ax" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife)
"ay" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_plating)
@@ -54,7 +54,7 @@
"bb" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea)
"bc" = (/obj/effect/decal/cleanable/dirt,/obj/structure/holostool,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea)
"bd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea)
-"be" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
+"be" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
"bf" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre)
"bg" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre)
"bh" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{dir = 1; name = "Court Reporter's Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom)
@@ -91,7 +91,7 @@
"bM" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt)
"bN" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt)
"bO" = (/turf/space/transit/east,/area/shuttle/large_escape_pod1/transit)
-"bP" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
+"bP" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
"bQ" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
"bR" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea)
"bS" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom)
@@ -114,7 +114,7 @@
"cj" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom)
"ck" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/east,/area/space)
"cl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east,/area/space)
-"cm" = (/obj/structure/flora/pottedplant{ icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre)
+"cm" = (/obj/structure/flora/pottedplant{icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre)
"cn" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre)
"co" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom)
"cp" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom)
@@ -127,7 +127,7 @@
"cw" = (/turf/simulated/floor/holofloor/space,/area/holodeck/source_space)
"cx" = (/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield)
"cy" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall)
-"cz" = (/obj/structure/flora/pottedplant{ icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall)
+"cz" = (/obj/structure/flora/pottedplant{icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall)
"cA" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball)
"cB" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball)
"cC" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball)
@@ -213,7 +213,7 @@
"ee" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet{dir = 8},/area/holodeck/source_meetinghall)
"ef" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball)
"eg" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball)
-"eh" = (/turf/unsimulated/beach/sand{ icon_state = "beach"},/area/holodeck/source_beach)
+"eh" = (/turf/unsimulated/beach/sand{icon_state = "beach"},/area/holodeck/source_beach)
"ei" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt)
"ej" = (/obj/structure/window/reinforced/holowindow{dir = 1},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt)
"ek" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Green Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt)
@@ -256,19 +256,19 @@
"eV" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership)
"eW" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
"eX" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
-"eY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
-"eZ" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
-"fa" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"eY" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"eZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"fa" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
"fb" = (/turf/simulated/shuttle/wall/dark,/area/shuttle/syndicate_elite/mothership)
"fc" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership)
"fd" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership)
"fe" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership)
"ff" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
"fg" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
-"fh" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
-"fi" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
-"fj" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
-"fk" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"fh" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"fi" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"fj" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
+"fk" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game)
"fl" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership)
"fm" = (/obj/structure/table/standard,/obj/item/weapon/soap/deluxe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
"fn" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"})
@@ -284,12 +284,12 @@
"fx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north,/area/space)
"fy" = (/turf/space/transit/north,/area/syndicate_station/transit)
"fz" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/arrival/pre_game)
-"fA" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"fB" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fA" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fB" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"fC" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game)
"fD" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game)
"fE" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/requests_console{department = "Arrival shuttle"; pixel_y = 26},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game)
-"fF" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fF" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"fG" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership)
"fH" = (/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership)
"fI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership)
@@ -307,14 +307,14 @@
"fU" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"fV" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"fW" = (/turf/space/transit/north,/area/skipjack_station/transit)
-"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"fZ" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"fZ" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"ga" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad)
"gb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"})
-"gc" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"gd" = (/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"ge" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gc" = (/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"ge" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"gf" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"gg" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad)
"gh" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad)
@@ -322,7 +322,7 @@
"gj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"gk" = (/turf/simulated/shuttle/wall/dark,/area/shuttle/trade/centcom)
"gl" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/pre_game)
-"gm" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gm" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"gn" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad)
"go" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"gp" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
@@ -333,9 +333,9 @@
"gu" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom)
"gv" = (/turf/space/transit/north,/area/shuttle/escape_pod2/transit)
"gw" = (/turf/space/transit/north,/area/shuttle/escape_pod1/transit)
-"gx" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gx" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"gy" = (/obj/machinery/hologram/holopad,/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game)
-"gz" = (/obj/structure/table/standard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gz" = (/obj/structure/table/standard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"gA" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership)
"gB" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership)
"gC" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
@@ -348,7 +348,7 @@
"gJ" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"gK" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"gL" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom)
-"gM" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"gM" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"gN" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/syndicate_elite/mothership)
"gO" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership)
"gP" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
@@ -384,9 +384,9 @@
"ht" = (/obj/machinery/door/airlock/glass_medical{name = "Medical Bay"; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"hu" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"hv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom)
-"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"hy" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"hy" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"hz" = (/obj/structure/closet/walllocker/emerglocker{pixel_y = -32},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"hA" = (/obj/machinery/button/remote/blast_door{id = "tradestarshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"hB" = (/obj/structure/table/steel_reinforced,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
@@ -407,8 +407,8 @@
"hQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"hR" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/circular_saw,/obj/item/stack/nanopaste,/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"hS" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
-"hT" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"hU" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"hT" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"hU" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"hV" = (/turf/unsimulated/wall,/area/syndicate_mothership)
"hW" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"hX" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
@@ -417,9 +417,9 @@
"ia" = (/obj/machinery/door/airlock/multi_tile/glass,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom)
"ib" = (/obj/structure/closet/crate/secure/weapon,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"ic" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game)
-"id" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"ie" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
-"if" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"id" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"ie" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
+"if" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game)
"ig" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game)
"ih" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership)
"ii" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership)
@@ -438,7 +438,7 @@
"iv" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game)
"iw" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"ix" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
-"iy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom)
+"iy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom)
"iz" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor/white,/area/shuttle/trade/centcom)
"iA" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor/white,/area/shuttle/trade/centcom)
"iB" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
@@ -534,9 +534,9 @@
"kn" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"ko" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
"kp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom)
-"kq" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/machinery/atm{pixel_x = -32},/obj/machinery/meter,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
+"kq" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/atm{pixel_x = -32},/obj/machinery/meter,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "trade2_control"; pixel_x = -22; pixel_y = -32; req_one_access = list(150)},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
-"ks" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 10},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
+"ks" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 10},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kt" = (/obj/structure/table/standard,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"ku" = (/obj/structure/table/standard,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kv" = (/obj/structure/table/standard,/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/glass{amount = 15},/obj/item/stack/material/glass{amount = 15},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
@@ -551,7 +551,7 @@
"kE" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kF" = (/obj/machinery/light,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom)
"kG" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom)
-"kH" = (/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom)
+"kH" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom)
"kI" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kJ" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
"kK" = (/obj/machinery/vending/engivend,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom)
@@ -598,14 +598,14 @@
"lz" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"})
"lA" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon_state = "dark"},/area/alien)
"lB" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/alien)
-"lC" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lD" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lE" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lC" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lD" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lE" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
"lF" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon_state = "dark"},/area/alien)
"lG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
"lH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lI" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lJ" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lI" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lJ" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
"lK" = (/turf/space,/area/shuttle/alien/base)
"lL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"})
"lM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership)
@@ -614,9 +614,9 @@
"lP" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership)
"lQ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership)
"lR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lS" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lT" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
-"lU" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lS" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lT" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
+"lU" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"})
"lV" = (/turf/unsimulated/wall,/area)
"lW" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership{name = "\improper Ninja Base"})
"lX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space)
@@ -820,10 +820,10 @@
"pN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"pO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"pP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership)
-"pQ" = (/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"pR" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"pS" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"pT" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"pQ" = (/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"pR" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"pS" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"pT" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"pU" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"pV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"pW" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
@@ -848,7 +848,7 @@
"qp" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"qq" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"qr" = (/obj/structure/table/standard,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"qs" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"qs" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"qt" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"qu" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"qv" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
@@ -869,10 +869,10 @@
"qK" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"qL" = (/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"qM" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"qN" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"qO" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"qP" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"qQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"qN" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"qO" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"qP" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"qQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"qR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"qS" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/green,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/green,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"qT" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
@@ -884,20 +884,20 @@
"qZ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ra" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/specops/centcom)
"rb" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating/airless,/area/shuttle/specops/centcom)
-"rc" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rd" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"re" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rf" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rc" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rd" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"re" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rf" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
"ri" = (/turf/simulated/shuttle/wall/dark{hard_corner = 1; join_group = "shuttle_ert"},/area/shuttle/specops/centcom)
"rj" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"rk" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"rl" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 3},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"rm" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"rn" = (/obj/structure/frame/computer,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"ro" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"rp" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"ro" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"rp" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"rq" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"rr" = (/obj/structure/reagent_dispensers/beerkeg/fakenuke,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"rs" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
@@ -906,20 +906,20 @@
"rv" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"rw" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rx" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating/airless,/area/shuttle/specops/centcom)
-"ry" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rz" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"ry" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rz" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
"rA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom)
-"rB" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
+"rB" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_mob/animal/passive/dog/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"rC" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"rD" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"rE" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"rF" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
+"rF" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"rG" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"rH" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"rI" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rJ" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rK" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
-"rL" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rI" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rJ" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rK" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
+"rL" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom)
"rM" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"rN" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"rO" = (/turf/unsimulated/wall,/area/centcom/command)
@@ -1038,8 +1038,8 @@
"tX" = (/turf/simulated/shuttle/floor/black,/area/syndicate_station/start)
"tY" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor/black,/area/syndicate_station/start)
"tZ" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"ua" = (/obj/machinery/door/window{ name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"ub" = (/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"ua" = (/obj/machinery/door/window{name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"ub" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"ud" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"ue" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
@@ -1072,17 +1072,17 @@
"uF" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"uG" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"uH" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"uI" = (/turf/space,/obj/structure/shuttle/engine/propulsion{ icon_state = "propulsion_r"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/administration/centcom)
+"uI" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/administration/centcom)
"uJ" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command)
"uK" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command)
"uL" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command)
"uM" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uN" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uO" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"uP" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"uP" = (/mob/living/simple_mob/animal/passive/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uR" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"uS" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"uS" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uT" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"uU" = (/obj/machinery/door/airlock/centcom{name = "Hardsuit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"uV" = (/obj/machinery/light,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom)
@@ -1267,9 +1267,9 @@
"ys" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command)
"yt" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command)
"yu" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command)
-"yv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock)
-"yw" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock)
-"yx" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock)
+"yv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock)
+"yw" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock)
+"yx" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock)
"yy" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"yz" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"yA" = (/obj/structure/closet/secure_closet/hos,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command)
@@ -1355,7 +1355,7 @@
"Ac" = (/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Ad" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Ae" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant)
-"Af" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{ icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
+"Af" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"Ag" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"Ah" = (/obj/machinery/computer/supplycomp/control,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"Ai" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
@@ -1401,7 +1401,7 @@
"AW" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"AX" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"AY" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram)
-"AZ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{ icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/transport1/centcom)
+"AZ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/transport1/centcom)
"Ba" = (/obj/machinery/computer/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Bb" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"Bc" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall)
@@ -1441,7 +1441,7 @@
"BK" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram)
"BL" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram)
"BM" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram)
-"BN" = (/obj/effect/floor_decal/corner/white/full{ icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
+"BN" = (/obj/effect/floor_decal/corner/white/full{icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"BO" = (/obj/effect/floor_decal/corner/white,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"BP" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"BQ" = (/obj/effect/floor_decal/corner/white{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
@@ -1453,7 +1453,7 @@
"BW" = (/obj/structure/bed/chair,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/simulated/shuttle/floor,/area/centcom/tram)
"BX" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram)
"BY" = (/obj/effect/floor_decal/corner/white{dir = 6; icon_state = "corner_white"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
-"BZ" = (/obj/effect/floor_decal/corner/white/diagonal{ icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
+"BZ" = (/obj/effect/floor_decal/corner/white/diagonal{icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"Ca" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"Cb" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Cc" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
@@ -1462,12 +1462,12 @@
"Cf" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/tram)
"Cg" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/tram)
"Ch" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram)
-"Ci" = (/obj/effect/floor_decal/corner/white{ icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
+"Ci" = (/obj/effect/floor_decal/corner/white{icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"Cj" = (/obj/machinery/computer/card,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Ck" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"Cl" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant)
"Cm" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
-"Cn" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"Cn" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"Co" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 4},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"Cp" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
"Cq" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 8},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
@@ -1489,10 +1489,10 @@
"CG" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CH" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CI" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"CJ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"CJ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CK" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CL" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
-"CM" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"CM" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CN" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CO" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CP" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = 0; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
@@ -1503,9 +1503,9 @@
"CU" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"CV" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"CW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"CX" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"CX" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"CY" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"CZ" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"CZ" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"Da" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"Db" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPortEast"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"Dc" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
@@ -1520,9 +1520,9 @@
"Dl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"Dm" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortWest"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"Dn" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"Do" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
-"Dp" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
-"Dq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
+"Do" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
+"Dp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
+"Dq" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
"Dr" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"Ds" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"Dt" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
@@ -1533,7 +1533,7 @@
"Dy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"Dz" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"DA" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
-"DB" = (/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
+"DB" = (/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
"DC" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
"DD" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortEast"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram)
"DE" = (/obj/machinery/door/blast/regular{id = "CentComPortEast"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/tram)
@@ -1542,14 +1542,14 @@
"DH" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal)
"DI" = (/obj/machinery/door/window/westright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"DJ" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
-"DK" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
-"DL" = (/obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
-"DM" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
+"DK" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
+"DL" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
+"DM" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
"DN" = (/obj/structure/bed/chair/office/light,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"DO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"DP" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
-"DQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
-"DR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
+"DQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
+"DR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
"DS" = (/obj/machinery/door/window/southleft,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"DT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"DU" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
@@ -1561,16 +1561,16 @@
"Ea" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"Eb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"Ec" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"Ed" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
-"Ee" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall)
+"Ed" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
+"Ee" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall)
"Ef" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"Eg" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
"Eh" = (/turf/unsimulated/wall,/area/centcom/medical)
"Ei" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ej" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical)
-"Ek" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"Ek" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"El" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"Em" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"Em" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"En" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"Eo" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
"Ep" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
@@ -1589,7 +1589,7 @@
"EC" = (/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"ED" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"EE" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
-"EF" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
+"EF" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"EG" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"EH" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
"EI" = (/obj/structure/flora/bush,/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall)
@@ -1600,7 +1600,7 @@
"EN" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"EO" = (/turf/unsimulated/wall,/area/centcom/bar)
"EP" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/bar)
-"EQ" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"EQ" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"ER" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall)
"ES" = (/turf/unsimulated/wall,/area/centcom/bathroom)
"ET" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
@@ -1610,8 +1610,8 @@
"EX" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"EY" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"EZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Fa" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Fb" = (/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"Fa" = (/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Fb" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"Fc" = (/obj/structure/table/steel,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
"Fd" = (/obj/structure/closet/secure_closet/personal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
"Fe" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
@@ -1634,22 +1634,22 @@
"Fv" = (/obj/effect/floor_decal/corner/beige{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Fw" = (/obj/effect/floor_decal/corner/beige,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Fx" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Fy" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Fz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FB" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FD" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"Fy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Fz" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FA" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FB" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FD" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"FE" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
"FF" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 0; pixel_y = -25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"FG" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"FH" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"FI" = (/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"FJ" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/unsimulated/wall,/area/centcom/medical)
-"FK" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FL" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"FN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"FK" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FL" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"FN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"FO" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"FP" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"FQ" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
@@ -1672,10 +1672,10 @@
"Gh" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Gi" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Gj" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Gk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Gl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Gm" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Gn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"Gk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Gl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Gm" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Gn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"Go" = (/obj/machinery/atm{pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"Gp" = (/obj/machinery/atm{pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"Gq" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom)
@@ -1685,10 +1685,10 @@
"Gu" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Gv" = (/obj/machinery/computer/med_data,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Gw" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Gx" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Gy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Gz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"GA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
+"Gx" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Gy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Gz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"GA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
"GB" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"GC" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"GD" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
@@ -1712,9 +1712,9 @@
"GV" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"GW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"GX" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom)
-"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
-"Ha" = (/turf/unsimulated/floor{ icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
+"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar)
+"Ha" = (/turf/unsimulated/floor{icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
"Hb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
"Hc" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
"Hd" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
@@ -1777,7 +1777,7 @@
"Ii" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ij" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ik" = (/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Il" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
+"Il" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Im" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"In" = (/obj/structure/bed/roller,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Io" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
@@ -1788,7 +1788,7 @@
"It" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Iu" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Iv" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Iw" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
+"Iw" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ix" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"Iy" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"Iz" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
@@ -1860,8 +1860,8 @@
"JN" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"JO" = (/obj/structure/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve)
"JP" = (/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom)
-"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
-"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JS" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JT" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"JU" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
@@ -1937,9 +1937,9 @@
"Lm" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ln" = (/obj/machinery/atmospherics/pipe/vent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"Lo" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
-"Lp" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
+"Lp" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"Lq" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
-"Lr" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
+"Lr" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"Ls" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"Lt" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"Lu" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
@@ -2008,9 +2008,9 @@
"MF" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/shuttle/cryo/centcom)
"MG" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac)
"MH" = (/turf/simulated/shuttle/floor/white,/area/centcom/evac)
-"MI" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"MI" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"MJ" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
-"MK" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"MK" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"ML" = (/obj/machinery/computer/operating,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"MM" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/centcom/evac)
"MN" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
@@ -2028,10 +2028,10 @@
"MZ" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Na" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Nb" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
-"Nc" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"Nc" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Nd" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach)
"Ne" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach)
-"Nf" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach)
+"Nf" = (/mob/living/simple_mob/animal/passive/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach)
"Ng" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/centcom/evac)
"Nh" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 02"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
"Ni" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
@@ -2055,7 +2055,7 @@
"NA" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
"NB" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
"NC" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/centcom/evac)
-"ND" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac)
+"ND" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac)
"NE" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor/black,/area/centcom/evac)
"NF" = (/turf/simulated/shuttle/floor/black,/area/centcom/evac)
"NG" = (/obj/structure/table/standard,/obj/item/device/radio/off,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor/black,/area/centcom/evac)
@@ -2070,8 +2070,8 @@
"NP" = (/turf/unsimulated/beach/water,/area/beach)
"NQ" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor,/area/centcom/evac)
"NR" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor,/area/centcom/evac)
-"NS" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac)
-"NT" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac)
+"NS" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac)
+"NT" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac)
"NU" = (/obj/structure/table/standard,/obj/item/weapon/storage/lockbox,/turf/simulated/shuttle/floor/black,/area/centcom/evac)
"NV" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/centcom/evac)
"NW" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/black,/area/centcom/evac)
@@ -2090,11 +2090,11 @@
"Oj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 3"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
"Ok" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac)
"Ol" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_1_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "large_escape_pod_1_recovery_hatch"},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
-"Om" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"On" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"Oo" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"Op" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"Oq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
+"Om" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"On" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"Oo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"Op" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"Oq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
"Or" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/simulated/shuttle/floor,/area/centcom/evac)
"Os" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"})
"Ot" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
@@ -2106,19 +2106,19 @@
"Oz" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/centcom)
"OA" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/centcom)
"OB" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 01"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
-"OC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
+"OC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
"OD" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/shuttle/floor,/area/centcom/evac)
"OE" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac)
"OF" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OG" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/centcom)
-"OH" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"OI" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
+"OH" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"OI" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
"OJ" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OK" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
-"OL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
-"OM" = (/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"OL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
+"OM" = (/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
"ON" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac)
-"OO" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac)
+"OO" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac)
"OP" = (/obj/item/weapon/tray{pixel_y = 5},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OR" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac)
@@ -2130,7 +2130,7 @@
"OX" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window8"},/turf/simulated/shuttle/plating,/area/centcom/evac)
"OY" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OZ" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pa" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{ icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pa" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pb" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pc" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pd" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
@@ -2142,31 +2142,31 @@
"Pj" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pk" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pl" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pm" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pm" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Pn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Po" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pp" = (/obj/item/xenos_claw,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pq" = (/obj/structure/table/rack,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pr" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Po" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pp" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pq" = (/obj/item/xenos_claw,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pr" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Ps" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pt" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pu" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pv" = (/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pw" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Px" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Py" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"Pz" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PA" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PB" = (/obj/structure/bed/chair,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pt" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pu" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pv" = (/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pw" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Px" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Py" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"Pz" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PA" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PB" = (/obj/structure/bed/chair,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PF" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PG" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PH" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PF" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PG" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PH" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space,/area/space)
-"PJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"PK" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"PK" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PL" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"})
"PM" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
"PN" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"})
@@ -2254,8 +2254,8 @@
"Rr" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"Rs" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station)
"Rt" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
-"Ru" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
-"Rv" = (/obj/structure/flora/pottedplant{ icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
+"Ru" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
+"Rv" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Rw" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"Rx" = (/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"Ry" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
@@ -2264,7 +2264,7 @@
"RB" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"RC" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"RD" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
-"RE" = (/obj/structure/flora/pottedplant{ icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
+"RE" = (/obj/structure/flora/pottedplant{icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"RF" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"RG" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"RH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
@@ -2294,7 +2294,7 @@
"Sf" = (/obj/structure/table/steel_reinforced,/obj/item/stack/telecrystal,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Sg" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"Sh" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
-"Si" = (/obj/structure/flora/pottedplant{ icon_state = "plant-04"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
+"Si" = (/obj/structure/flora/pottedplant{icon_state = "plant-04"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"Sj" = (/obj/structure/sign/electricshock,/turf/simulated/shuttle/wall/dark/hard_corner,/area/wizard_station)
"Sk" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
"Sl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
@@ -2323,7 +2323,7 @@
"SI" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/computer/station_alert/all,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"SJ" = (/obj/structure/table/steel_reinforced,/obj/item/device/mmi/radio_enabled,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"SK" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
-"SL" = (/obj/structure/flora/pottedplant{ icon_state = "plant-03"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
+"SL" = (/obj/structure/flora/pottedplant{icon_state = "plant-03"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"SM" = (/obj/structure/reagent_dispensers/watertank,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
"SN" = (/obj/machinery/power/port_gen/pacman,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
"SO" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/skipjack_station/start)
@@ -2353,7 +2353,7 @@
"Tm" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/book/manual/engineering_hacking,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"Tn" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"To" = (/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
-"Tp" = (/obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
+"Tp" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"Tq" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/obj/item/target,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
"Tr" = (/obj/item/weapon/bedsheet/rainbow,/obj/structure/bed/padded,/turf/simulated/shuttle/floor/red,/area/skipjack_station/start)
"Ts" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/simulated/shuttle/floor/red,/area/skipjack_station/start)
@@ -2399,7 +2399,7 @@
"Ug" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Uh" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Ui" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacadadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagagagagagagagagagagagagagafafafafafafafafafafafafafafafafafafafafahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiah
aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacadacaeacacacacacacacacacacacacacacacacacacacacacacacaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagakalagakalagakalagakalagafafafafafafafafafafafafafafafafafafafafamanananaoananananananapaqaraqaraqaqaraqaraqapasatatatatatatatatatapauavawawawawawawawawapaxaxaxaxaxaxaxaxaxaxapayayayayayayayayayayapazaAaBaCaDaDaDaDaDaEaF
@@ -2433,20 +2433,20 @@ aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajaj
aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeFeMeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajaaaaaaaaaaaaaaajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeReSeFeFeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbqbqbqbqbqbDbDbDbDbDbqbqbqbqbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaaaeTeTeTeTeTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeVeVeVeVeVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeWeXexexexeFeHePePeKeFexeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeYeZfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafjfkeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeZeYfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafkfjeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajfofofofofofofofofoajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaeTeTfpfqfreTfseTeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbftftftfbeUfufveUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexexexexexexexexeFeFexexexexexexexexexexafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfAfBfCfDfEfFfAfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfBfAfCfDfEfFfBfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfwfwfwfwfwajfwfwfwajajajfwfwfwajfwfwfwfwfwfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbfNfOfPfQfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFeFexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfXfYfYfLfYfYfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfYfXfXfLfXfXfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbqfxfxfobqajbqfxfxfobqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgmgmgmfLgmgmgmglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfSfSgnfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkgogpgqgkafafafafafgkgkgrgsgkgkafafgkgkgkgkgtguafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgxgxgxgygzgxgxglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgAfHgBfbgafOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgigCgDgkgEgFgGgHgIgkgkafafafgkgkgigjgjgigkgogqgigJgKgkgtgLafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgMgMgMfLgMgMgMglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgNgOgNfbfNfOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgPgQgRgRgSgRgRgTgUgVgkgkgogpgqgkgkgWgRgRgXgkgYgZhagRhbgkgtgLafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhwhxhxfLhxhxhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhxhwhwfLhwhwhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkhKgRgkgihLhMhNhOhPhQhHhsgRhzgigkgkgihRhSgkgkafafafafafafafafafafafafafafafafafafafafafafaf
-aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgdfLfLfLgdhUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf
+aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgcfLfLfLgchUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwfwajajajajajajaaajaaajajajajajajajaaeTicidgziegxifigeTaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihihihiiihihihijikihihihijihihihihihihijihihhVafafafafafafafafafafafafafafafafafafafafafafafgkgkilimgkingkioipiqgigkirgRhshshshshshshshshsgRhsgRisithshsgRgkgtguafafafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfxfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajaaaaiueTiviviveTiuaaaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihiiihihihihihihihihihihihijihihihihihijihihihihihhVafafafafafafafafafafafafafafafafafafafafafafafiwixhsiygkizgigkiAgkiBgkiChshsiDiEiFiGiHiIiJhshshshsiKiLhshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf
aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfofyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajajaaabeTiuiuiueTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihiMihihihihihiiihihikijihihijihihijikihijihhVafafafafafafafafafafafafafafafafafafafafafafafiNiOiPhsiQgRgRgRgRiRgRgRgRhshsiSiTiUiViWiXiYhshshshsiZhshshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf
@@ -2469,12 +2469,12 @@ ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaa
ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhVihjyjyjyjyjyjyjyjKjKjKjyjyjyjyjyjyjykekTlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslslslsafafhVihjyltltltltltjyjKjKjKjyjKjKjKjKjKjyluhVlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlvlvlslvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyluhVhVhVhVhVafafafafafafafafaflwlxlylxlzafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlClDlElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlIlJlIlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlIlIlIlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlSlTlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlDlClElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlJlIlJlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlJlJlJlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlTlSlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihihihihihihihihihihihihihihihihihihihihhVafafafafafafafafafafafaflxlWlWlWlxafafafafafafafafafafafaflXlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY
lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslsafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafaflwlZmamblwafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
@@ -2498,12 +2498,12 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmToGmTmTmTmTmToGoHmTmTmTmTozmimioImimioImimimimimimimimioJmimioJmimimimioCoKmImIoFmimimimimimimimimQmQomomommQmdoLnCmdoMmdoNmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcafafafafafafafafmcmcmcafafafafafafafafafafafafafafhVhVorororhVhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdngoOmTmToPmdmDmDmdoQoQmdmDmDmdmDmDmDmDmDoRoSoSmdmdmimimioCoToUoVoFmimioWmwmimimimimdoXnOnOnOoYmdoLnCmdoZmdoZmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcafafafafafafmcmcafafafafafafafafafafafafafafafafhVpaorpbhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmTpcmTmTmTmTmTpcpdmTmTmTpemdpfmimimimimipgphmdpipjpkplpmpnmimipomDppmimimimimimimimimipqmdmimimimimdmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafafafafafafafafafafprpspspthVhVpuhVhVhVhVhVhVhVmcmcmchVhVhVhVhVhVmcmcmcmcmc
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpRpSpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpSpRpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmTqbqcqdqemdqfmimiqgqhmimiqimdmimimimimimimimimdmdmdmDmDmdqjqjmdmdmdmdmdmdmimimimimDqkqkqkqkqkqkmdqlnCqmmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcmcmcmcafafafafafafafafafpLpLqnqoqpqqqrpLpLafpPpQqsqspQpQpQpQqtquququqvhVmcmcmchVhVhVhVhVhVmcmcmcmcmc
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqOqPqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrcrdrerfrfrfrgrhriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrfrfrfrfrfrfrfrzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrIrJrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqPqOqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrdrcrfrerererhrgriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrerererererererzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrJrIrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimirYrZsasbscsdmdsesfsgshsisjskslmdsmqFqFqFqFqFqFqFqFqFqFafmdmimimimimdsnqksospqkqksqqkqksrmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLstsusvswsxpLafafafafafafsyqaqaqaszlelesAsAhVmcmcmchVrWfVfVsBhVmcmcmcmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdsCsDrYrZsasbscsdmdmdmdmdmdmdmdmdmdmdsEsEsEsEsEsEsEsEsEsEsEsEmdmdsFsFmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLsGsHrmqLsIpLafafafafafafsJqaqaqahVsKlehVhVhVhVhVhVhVsLsMsMsLhVhVhVhVmcmc
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafmdmdsNsNmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafrOsssssssssssOsOsOsOsOsPsPsOsOsOsOsOssssssssssrOrOrOrOrOrOrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLpLsQsurmqLsRpLpLafafnEnvsShVqaqaqahVhVhVhVsTsUsVsWsXsYfVfVfVfVsZsZtahVhVmc
@@ -2544,27 +2544,27 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBYvYvYvXvEvE
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYCavYvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYCaBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYvYBPvYztxzxzzwwLAbxzCjwLAbzwwLCkxzxzBSyGyGClClClClyGCmCmyGClClClClyGyGAQAQAQAQCnCoCpCpCpCqCrAQAQAQAQAxAxAxAxAxAxAxAQAQAQAxAxAxAxAxrOvHvHCsAWAWAWAyBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmcmcmcmcmcafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYwLCzxzAqxbAbCACBxbAEAqwLCCBrBrCDwLCECFCGCFCGBcAQAQBcCFCHCFCFCIAxAQAQAQCJCKCLCLCLCLCLCMCNAQAQAQAxCFCGCFCECGBcAQAQAQBcCGCFCFCOrOvHvHAyCPAWCQAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYwLwLztztxbCVCWxbxbztztwLwLwLwLwLwLBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQCXCYCLCLCLCLCLCLCLCZCrAQAQAxBcBcBcBcBcBcAQAQAQBcBcBcBcBcAxDaDaAyAWDbDcAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDpDqCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDqCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDqDpCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDpCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDxwxwDGvYvYvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYDIDJvExwDGvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYBcAQAQAQAxAQAQAxAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDKDBDLDBDMCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAYAWAWAWAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDPxwDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDQDBDBDBDRCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEdEeCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEeEdCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYEhEhEiEiEhEjEjEjEhEiEiEhEhEjEjEhEhBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQEkElCLCLCLCLCLCLCLEmEnAQAQAxBcBcBcBcBcBcAQAQBcBcBcBcBcBcAyEoEoEpEqErEsAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYEhEtEuEuEvEwExExEyEuEzEhEAEBECEDEhCHCECFCGCGBcAQAQBcCOEECGCFCFAxAQAQAQEFEGCLCLCLCLCLEmCKAQAQAQAxEHCFCECFCGBcAQAQBcCFCGCFEIEEAyEoEoEoEoEoEoAYBIAWAWAyBJBJBTBTBTBTBUBVBVBWBTBTBTBUBJBJBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYEJEJvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBYBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBOBPvYEiEuEuEuEuEuEuEuEuEuEKEhELEuEMENEhEOEPEPEPEPEOEQEQEOEPEPEPEPEOEOAQAQAQAQEkCoERERERCqEnAQAQAQAQESESESESESESESETETESESESESESESAyEoEoEoEoEoEoAyBIAWAWAYCeCfBVBVBVBVBVBVBVBVBVBVBVBVCgCeChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFaFbFbFbFbFbFbFbFbFbFbFbFbFaEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFbFbFyFzFAFBFbFbFyFCFDFBFbFbEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFbFbFyFKFLFBFbFbFyFMFNFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFbFbFyGkGlFBFbFbFyGmGnFBFbFbEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFbFbFyGxGyFBFbFbFyGzGAFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFbFbFbFbFbFbGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGYGZGZFbFbHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFbFbHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFbFbHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFbFbHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFbFaFaFaFaFaFaFaFaFaFaFaFaFbEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFaFaFzFyFBFAFaFaFzFCFDFAFaFaEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFaFaFzFKFLFAFaFaFzFMFNFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFaFaFzGkGlFAFaFaFzGmGnFAFaFaEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFaFaFzGxGyFAFaFaFzGzGAFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFaFaFaFaFaFaGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGZGYGYFaFaHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFaFaHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFaFaHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFaFaHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhHyEuEuEuHYHZEuEuIaEhHDEuIbIcIdEhEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOGNGNGNHeHeHeHeHeHeHeHeHeGNGNGNESIeGBIeGBIeGDGBGBHJIeGBIeGBIeAyAYAYAYAYAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKvEvYvYIfvEafafEVFSFrFWEVFSFGFWEVFSFrFWEVafafvEvYvYvYEhIgEuEuEuEuEuEuEuIhEhHDEuEuIiIdEhIjIkIkIkIlGNHeHeHeHeHeHeHeHeHeHeHeGNGNImGNGNHeGNGNImGNGNHeHeGNGNGNESESESESESESESESESESESESESafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhInEuEuEuIoIpEuEuIqEhIrIsEuItIuEhIvEuEuEuIwGNHeGNGNGNGNIxGNGNGNHeHeHeHeHeHeGNHeGNHeHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
@@ -2573,7 +2573,7 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrISFrFrFrFrFrISFrFrHiHhxwHhvYvYvYEhEhITEhHlEhEhIUEuIVEhHDEuEuEuEuIWEuEuIXEuIYGNHeGNIZIDIDIDIDJaGNIQJbJbJbJbJbIQIQIQJbJbJbJbJcJdGNHeGNGNGNGNGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhEVJeFhEVEVJfEVEVFhJeEVFhvDvDvDvYvYvYEhJgEuJhJiJjEhJkEuJlEhJmJnJoJpJqEhJrJsJsJsJtGNHeGNIZJuJvJvIDIDJwIQIQJxJyJxIQIQIQIQIQJxJyJxJzIQGNHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafmKmKmKmKmKmKmKmKmKmKmKafafafvEvYvYvYvEafafEUJAJBEUJCJDJEJFJGEUJHJIEUafafvEvFvFvFEhJgEuJJJKJLEhJMEuJNEhEhEhEhEhEhEhEhEhEhEhGNGNHeGNGNGNGNGNGNGNGNIQJbJbJbJbJbIQIQIQJbJbJbJbJOIQGNGNGNGNGNGNGNHeGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJQJRJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJRJQJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafwrvDvDvDwrafafafafafafafafafafafafafafafafafwrvDvDvDwrafafEUKfKgEUKhJEKiKjKkEUKlKmEUafafwrvYvYvYEhKnEuJhKoKpEhFtEuEvHzEyEuEvEjEyEuEuEuEuEKGNHeGNGNGNKqKqKqKqKqGNKrKsKsKsKsKsKsKsKsKsKsKsKsKtKrGNKqKqKqKqKqGNGNGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvVvWvVvDafafafafafafafafafafafafafafafafafvDvVvVvVvDafafEUKuKuEUKvKwJEKxKyEUKuKuEUafafvDvYvYvYEhKzEuEuEuKAEhFtEuEuEzFYEuEuKBEuEuEuEuEuEKGNHeGNKCKDKEKEKEKEKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKGKGKGKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvDvDvDafafafafafafafafafafafafafafafafafvDvDvDvDvDafafEUKIKIEUEUKuKuKuEUEUKIKIEUafafvDvYvYvYEhKJEuEuIXKKEhKLEuEuEKKMEuKNEjFnEuEMEuEuEKGNHeGNKCKDKEKOKEKOKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKPKGKPKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
@@ -2603,26 +2603,26 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMhMhMhNkMhMhMhNlMhMhMhNmMhMhMhMhMhMhMhNnMhMhMhMhMhMhNoMOMOMOMONpMOMOMOMOMOMNMhMOMSMSMOMhMXMYMHMHNqNqNrNsNsNtMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahLXNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuLXah
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMNMOMOMOMOMOMONwMOMOMONxMOMOMOMOMOMOMONyMOMONzNANBMhMOMSMSMSMSMSMSMSMSMSMSMOMhMOMSMSMOMlNCNCNDNDNCNCNCMhMhMhMhNENFNGNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNHNINININININININININININININININININININHah
afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNKNKNKNKNKNKNKNKMSMONJMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNLNMNNNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONSNTNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNTNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNTMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOmOnOoOpOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOoOoOoOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOHOIOoOoOoMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONTNSNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNSNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNSMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOnOmOpOoOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOpOpOpOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOIOHOpOpOpMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
ahmcmcmcmcmcmcOsOsOsOfOfOfOfOsOfOfOfOfOJOfOfOfOfOfOfOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhOKNKNKOKMhNCNCOLNCNCMhODMSOrMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOoOoOoOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOoOoOoOoOoMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
-ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOoOOOoOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOpOpOpOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOpOpOpOpOpMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
+ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOpOOOpOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
ahmcmcmcOsOMOMOsOsOsOsOsOsOsOsOfOuOuOFOfPaOuOfOuOuOuOJOYPbOsOsOfmcmcahmcmcmcmclYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMiMiMiMiMiMiMiMiMiMiMiMiMhafafafafMhMhMhMhMhMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
ahmcmcmcOsOMOsOsOsmcmcOsOfOfOfOfPcOuOtOfPcOtOfOuOuOuOfOYOYOYPdOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
ahmcmcmcOsOMOMOsmcmcmcOsPePfPfOfOfOfOfOfOfOfOfOuOuOuOfOYOYOYPgOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah
ahmcOsOMOMOMOMOsOsmcmcOsPhPiPhOJOuOuOuOuOuOuOuOuOuOuOfPjPkPlOfOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONONONONONONONONONONONONONONONONONONONONOah
ahmcPmOMOMOMOMOMOsmcmcOfPnPhPhOJOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahah
-ahmcPoPpPqOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-ahmcPtOMPqOMPqOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-ahmcOsOMPqOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+ahmcPoPqPpOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+ahmcPtOMPpOMPpOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+ahmcOsOMPpOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ahmcOsPzOMOMOMPAOMmcmcafafmcOfOuOuOuOuOuOuOJPvPvPBPvPvOJOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
-ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPFPGPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
+ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPGPFPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ahmcOsOsOsOsPJPKOsmcmKmJafafOfOuOuOfafafafOfOfPCPDPEOfOfafafafOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ahmcOsOsOsOsOsOsmcafafafafafPLPMPMPNafafafafafafafafafafafafafPLPMPMPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
ahmcmcmcmcmcmcmcmcmcafafafafPLPOPPPNafafafafafafafafafafafafafPLPOPPPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafPQPQPQPRPQPQPQafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf
diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm
index 184ffbd6c1..40c415c0a5 100644
--- a/maps/northern_star/polaris-5.dmm
+++ b/maps/northern_star/polaris-5.dmm
@@ -284,7 +284,7 @@
"fx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/light,/turf/simulated/floor/plating,/area/outpost/research/toxins_misc_lab)
"fy" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/outpost/research/toxins_misc_lab)
"fz" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/wall/r_wall,/area/outpost/research/toxins_misc_lab)
-"fA" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology)
+"fA" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology)
"fB" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology)
"fC" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/outpost/research/hallway/toxins_hallway)
"fD" = (/obj/structure/closet/emcloset,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
@@ -1912,7 +1912,7 @@
"KN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
"KO" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"KP" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm
index 7213c160c7..07f579d0a8 100644
--- a/maps/southern_cross/southern_cross-1.dmm
+++ b/maps/southern_cross/southern_cross-1.dmm
@@ -377,7 +377,7 @@
"ahm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore)
"ahn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"aho" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
-"ahp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
+"ahp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"ahq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"ahr" = (/obj/machinery/camera/network/command{c_tag = "COM - Vault"; dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
"ahs" = (/turf/simulated/wall/r_wall,/area/storage/emergency_storage/firstdeck/fs_emergency)
@@ -1023,7 +1023,7 @@
"atI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/starboard)
"atJ" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access = list(32)},/turf/simulated/floor/plating,/area/construction/firstdeck/construction4)
"atK" = (/obj/structure/sign/directions/security{dir = 4},/turf/simulated/wall,/area/construction/firstdeck/construction4)
-"atL" = (/obj/structure/sign/directions/bridge{dir = 4; pixel_y = 10},/obj/structure/sign/directions/science{dir = 4},/turf/simulated/wall,/area/construction/firstdeck/construction4)
+"atL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/multi_tile/glass{name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor/tiled/steel_grid,/area/rnd/research/firstdeck/hallway)
"atM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Escape Pod"},/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1)
"atN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Escape Pod"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1)
"atO" = (/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/hallway/secondary/escape/firstdeck/ep_starboard1)
@@ -2293,7 +2293,7 @@
"aSe" = (/turf/simulated/floor/airless,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
"aSf" = (/turf/space,/area/skipjack_station/firstdeck)
"aSg" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/station)
-"aSh" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_3"; pixel_x = 0; pixel_y = -25; tag_door = "escape_pod_7_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
+"aSh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/brigdoor/southleft{name = "Containment Pen"; req_access = newlist()},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology)
"aSi" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/closet/walllocker/emerglocker{pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
"aSj" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
"aSk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_hatch"; locked = 1; name = "Escape Pod Hatch 3"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
@@ -2311,7 +2311,7 @@
"aSw" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
"aSx" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/white/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
"aSy" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = 25; pixel_y = 30; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
-"aSz" = (/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_7_berth_hatch"; locked = 1; name = "Escape Pod 7"; req_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
+"aSz" = (/obj/structure/sign/directions/bridge{dir = 4; pixel_y = 10},/obj/structure/sign/directions/science{dir = 1},/turf/simulated/wall,/area/construction/firstdeck/construction4)
"aSA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_hatch"; locked = 1; name = "Escape Pod Hatch 5"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station)
"aSB" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = 30},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station)
"aSC" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/closet/walllocker/emerglocker{pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station)
@@ -4265,7 +4265,7 @@
"bEa" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/research)
"bEb" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
"bEc" = (/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
-"bEd" = (/mob/living/simple_animal/slime/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
+"bEd" = (/mob/living/simple_mob/slime/xenobio/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
"bEe" = (/obj/structure/bed/chair/office/light,/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
"bEf" = (/obj/structure/table/reinforced,/obj/item/device/paicard{pixel_x = 4},/obj/item/device/tape,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/weapon/reagent_containers/food/drinks/jar,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
"bEg" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced/polarized{id = "rdoffice"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hor)
@@ -4276,7 +4276,7 @@
"bEl" = (/obj/machinery/disposal,/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/rnd/research)
"bEm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
"bEn" = (/turf/simulated/floor/tiled/white,/area/rnd/research_lockerroom)
-"bEo" = (/obj/structure/closet/wardrobe/science_white,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_lockerroom)
+"bEo" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_3"; pixel_x = 0; pixel_y = -25; tag_door = "escape_pod_3_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
"bEp" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/tiled/freezer,/area/rnd/research_restroom_sc)
"bEq" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/freezer,/area/rnd/research_restroom_sc)
"bEr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/research{c_tag = "SCI - Research Hallway Fore"; dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research)
@@ -6364,7 +6364,7 @@
"cst" = (/obj/structure/table/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/brigdoor/eastright{name = "Head of Personnel's Desk"; req_access = list(57)},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hop)
"csu" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop)
"csv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop)
-"csw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop)
+"csw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/mob/living/simple_mob/animal/passive/dog/corgi/Ian,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop)
"csx" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop)
"csy" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/computer/guestpass{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop)
"csz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter)
@@ -7397,7 +7397,7 @@
"cMm" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Medbay Subgrid"; name_tag = "Medbay Subgrid"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/maintenance/substation/medical)
"cMn" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/medical)
"cMo" = (/obj/machinery/disposal,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
-"cMp" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
+"cMp" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/mob/living/simple_mob/animal/passive/cat/runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
"cMq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
"cMr" = (/obj/machinery/camera/network/medbay{c_tag = "MED - CMO"; dir = 2},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
"cMs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/vials{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/fancy/vials,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo)
@@ -8452,10 +8452,10 @@
"dgB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/chapel)
"dgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/holodeck_control)
"dgD" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/holodeck_control)
-"dgE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
+"dgE" = (/obj/machinery/door/airlock/glass_external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_berth_hatch"; locked = 1; name = "Escape Pod 5"; req_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
"dgF" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/table/bench/padded,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
-"dgG" = (/obj/structure/table/bench/padded,/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Aft Stairwell"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
-"dgH" = (/obj/machinery/light,/obj/structure/table/glass,/obj/structure/sign/deck/second{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
+"dgG" = (/obj/structure/closet/wardrobe/science_white,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/obj/item/weapon/storage/box/gloves,/turf/simulated/floor/tiled/white,/area/rnd/research_lockerroom)
+"dgH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/machinery/vending/fitness,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dgI" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dgJ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dgK" = (/obj/structure/reagent_dispensers/watertank/high,/obj/item/weapon/reagent_containers/glass/bucket,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
@@ -8513,7 +8513,7 @@
"dhK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/chapel)
"dhL" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/chapel)
"dhM" = (/obj/structure/closet/lasertag/blue,/obj/item/stack/flag/blue,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/holodeck_control)
-"dhN" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/structure/closet/lasertag/red,/obj/structure/closet/lasertag/red,/obj/item/stack/flag/red,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/holodeck_control)
+"dhN" = (/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Aft Stairwell"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/structure/table/glass,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dhO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/newscaster{pixel_x = -28; pixel_y = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/seconddeck/aft)
"dhP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/seconddeck/aft)
"dhQ" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/seconddeck/aft)
@@ -10703,7 +10703,7 @@
"dXQ" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled/dark,/area/rnd/research/firstdeck/hallway)
"dXR" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/rnd/research/firstdeck/hallway)
"dXS" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/steel_grid,/area/rnd/research/firstdeck/hallway)
-"dXT" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/multi_tile/glass{name = "Research Division Access"},/turf/simulated/floor/tiled/steel_grid,/area/rnd/research/firstdeck/hallway)
+"dXT" = (/obj/machinery/light,/obj/structure/sign/deck/second{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/structure/table/bench/padded,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dXU" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/dark,/area/rnd/research/firstdeck/hallway)
"dXV" = (/obj/structure/closet/wardrobe/science_white,/turf/simulated/floor/tiled/dark,/area/rnd/research/firstdeck/hallway)
"dXW" = (/obj/structure/table/glass,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/research/firstdeck/hallway)
@@ -10751,7 +10751,7 @@
"dYM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled/dark,/area/rnd/xenobiology)
"dYN" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/full{density = 1},/turf/simulated/floor/tiled,/area/rnd/xenobiology)
"dYO" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/industrial/warning,/obj/machinery/button/remote/blast_door{id = "xenobio6station"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/turf/simulated/floor/tiled/dark,/area/rnd/xenobiology)
-"dYP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/brigdoor/southleft{name = "Containment Pen"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology)
+"dYP" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/structure/closet/lasertag/red,/obj/item/stack/flag/red,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/holodeck_control)
"dYQ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/industrial/warning,/obj/machinery/button/remote/blast_door{id = "xenobio5station"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/turf/simulated/floor/tiled/dark,/area/rnd/xenobiology)
"dYR" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the divider between pens."; id = "xenobioout7station"; name = "Containment Divider Switch"; pixel_x = 0; pixel_y = 28; req_access = list(55)},/obj/effect/floor_decal/industrial/warning,/obj/machinery/light{dir = 1},/obj/machinery/camera/network/research{c_tag = "SCI - Xenobiology Fore"; dir = 2},/turf/simulated/floor/tiled/dark,/area/rnd/xenobiology)
"dYS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/dark,/area/rnd/xenobiology)
@@ -10789,7 +10789,7 @@
"dZy" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/window/brigdoor/westleft{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology)
"dZz" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology)
"dZA" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/window/brigdoor/eastright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2station"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology)
-"dZB" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/rnd/xenobiology)
+"dZB" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/rnd/xenobiology)
"dZC" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway)
"dZD" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway)
"dZE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway)
@@ -10949,7 +10949,7 @@
"ecC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/meter,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport)
"ecD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/meter,/obj/random/mob/mouse,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard)
"ecE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/bridge/meeting_room)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11071,12 +11071,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRalSalTalUalValWalXalYalZamaambaeFamcajEafEafFaiDaiDahBafFafFafFahBaiDaiDafFafKajEamdaeFameaioadLaaaaaaaaaaaaajpakoakVakWamfamgalHalHalHalHalHalHalHalHalHalHalHalHalHalIalIalIalIamhamialmalnakIajxaaaaaaaaaaaaaejaiyamjaeZaiSamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfagpaeZdWEdWGdWFdWHbmqdWIarMdWJarMbmqbmqdWLdWKdWNdWMbmqarMdWJarMdWObmqdWQdWPdWSdWRdWUdWTdWVaowaaaaaaaaaaaaaafaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsammamnamoamoamoamoamoamoamoampamaambaeFamqajEafEafFamramsafFafFafFafFafFamramsafFafKajEamtaeFamudWWadLaaaaaaaaaajoajoamvalFakoamwamxalHalHalHamyamzamAamBamCamDamEamBamFamGamHamIamJalIamKamLakIalKamMajwajwaaaaaaaaaaejaiyamNaeZamOamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfamPaeZdWXdWZdWYdXbdXadXddXcdXbdXbdXfdXedXhdXgdXjdXidXkdXbdXmdXldXnaSNdXodXodXodXodXodXodXodXodXoaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRamRamSamTamoamUamVamWamXamaambaeFamYamZanaanbanbanbanbanbanbanbanbanbanbanbancandaneaeFanfaioadLaaaaaaaaaajoanganhalFalGanianianialHalHanjanjanjanjanjankanlanmanmannanoanpanqalIalIalIalJalKanransajwaaaaaaaaaaejaiyantaeZanuanvanwanxanxanxanxanxanxanxanxanxanxanxanyanzanAaeZdXpdXrdXqdXqdXsdXudXtdXwdXvdXxdXvdXzdXydXBdXAdXDdXCdXFdXEdXHdXGdXodXIdXKdXJdXMdXLdXKdXNdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltanEaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianianTanUanialHanVanWanXanYanZanZaoaaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZdXOdXQdXPdXRapidXTdXSapidXUdXWdXVdXXaSNaSNdXYaSNaZYdXZcfodXHdYadXodYbdYcdXJdXMdXLdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltanEaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianianTanUanialHanVanWanXanYanZanZaoaaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZdXOdXQdXPdXRapiatLdXSapidXUdXWdXVdXXaSNaSNdXYaSNaZYdXZcfodXHdYadXodYbdYcdXJdXMdXLdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaakLatTatTakLakLakLakLaoxaoxaoyaoyaoyaoyaoyaeFaeFaeFaeFaeFaeFaeFaeFaozahcaoAaeFaoBaoBaoBaeFaeFaeFaeFafMaoCaoDadlaaaaaaajpaoEaoFaoGaoHaoIaoJaoKanialHanjaoLaoMaoNanZanZaoOaoPaoQaoRaoSaoTaoUaoVaoWaoXalIaoYaoZapaajxaaaaaaadFapbapcapdaeZaeZaeZaikapeapeapeaikapfaikapgaikaeZaeZaeZaeZaeZaeZaeZaphaphaphaphaphdYgdYgalralralralralralrdYidYhalralrdXZdYjdYkdWHdXodYldXKdXJdXMdXLdXKdYldXodYmdYodYndXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafakLakLapjapkaplapmapnakLapoapoappapqaprapsaptapuapvapwapxapyapyapzapuapAapAapBapCapDapEapFapCapGafMadlapHapIapJadlaaaaaaajpapKapLapManiapNapOapNanialHanjanjanjanjanjapPapQapQapQapRapSapTapUapVapWapXalIapYapZaqaajxaaaaaaadFaqbaghaqcaqdaqeaqfaqgaqhaqiaqjaqgaqkaqlaqlaqmaqnaqoaqoaqpaqqaqraqmaqsaqtaquaqvaqwaqxaqxalraqydYpaqAaqBaqCalOdYqdYralrdYtdYsdXodXodXodYudYwdYvdYydYxdYAdYzdXodYBdYDdYCdYFdYEdYGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaakLakLaqDaqDapkaqEaqFaqFaqGaqHaqIaqJaqKaqLaqMaqNapuapvaqOaqPapyapyapyapuaqQaqQaqRaqSaqTaqUaqVapCaqWaqXaqYaqZaraarbadlaaaaaaajoarcardareaniarfargarfanialHarhariarjarkarlarmarnarkaroarparqarrarsartaruarvalIarwapZarxajwaaaaaaadFaryaghaghaghaghagharzarAarBarCarDarEarFarFaqmarGarHaqoarIaqqaqqaqmarJarKarLdYHarNarOarPdYIarRarRarRarRarRarRalOalralrdYKdYJdXodYLdYNdYMdYPdYOdYRdYQdYPdYSdYUdYTdYWdYVdXodXodXodXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaakLakLaqDaqDapkaqEaqFaqFaqGaqHaqIaqJaqKaqLaqMaqNapuapvaqOaqPapyapyapyapuaqQaqQaqRaqSaqTaqUaqVapCaqWaqXaqYaqZaraarbadlaaaaaaajoarcardareaniarfargarfanialHarhariarjarkarlarmarnarkaroarparqarrarsartaruarvalIarwapZarxajwaaaaaaadFaryaghaghaghaghagharzarAarBarCarDarEarFarFaqmarGarHaqoarIaqqaqqaqmarJarKarLdYHarNarOarPdYIarRarRarRarRarRarRalOalralrdYKdYJdXodYLdYNdYMaShdYOdYRdYQaShdYSdYUdYTdYWdYVdXodXodXodXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLarSapkakLakLakLakLakLakLarTarUarUarUarVarWarXapuarYapyaqParZasaasbapuascasdaseapCasfasgashapCasiasjaskaslasmasnadlasoasoaspasqasrajSamxarfargarfanialHalHalHalHalHalHalHalHalHalHalHalIalIalIamHassastalIasuasvaswasxasyasyadFaszaghasAasAasAasAaqgasBasCasDaqgasEasFasGaqmasHasIasJarIasKaqqaqmasLasMasNasOasOasOaphalralralralralralralOalPalrdYXdYYdXHdZadYZdZcdZbdZedZddZfdZddZgdZddZhdZddZjdZidZldZkdZndZmdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmatnatmatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKatLatMatNatOatDatPatQatRatSatSatSatSatSalralOalOalrdZodZqdZpdZsdZrdZtdZbdZudYTdYTdYTdZwdZvdZxdZbdZzdZydZAdXKdZBdXKdXoaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmatnatmatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKaSzatMatNatOatDatPatQatRatSatSatSatSatSalralOalOalrdZodZqdZpdZsdZrdZtdZbdZudYTdYTdYTdZwdZvdZxdZbdZzdZydZAdXKdZBdXKdXoaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaafaaaaaaaaaatTatUapkakLasQasQasQasQasQatVatWatXatYatZauaaubaucaudatZaueaucaufatWaugauhauiaujaukaukaukaulaumaunauoaupauqauzausautauuaukauvauwauxauyauBauDauCauFauEavLauGavMauratoatoatoatoatoatpauIauJauKattauLauMauNatpauOauPauQauRauSauTauUauVauWauXauYauZavaavbauRavcauSauSavdasFauRaveavfavgavaavhauRaviavaavjavkauRavlavmauSavnatSatSatSatSatSalravoalOalrdZCdZEdZDdZGdZFdZbdZbdZHdZbdZbdZbdZbdZbdZIdZbdZKdZJdZLdXKdXKdXKdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafatTdZMavqakLasQasQasQasQasQavravsavtavuavuavvavwavwavxavyavzavwavAavwavwavBavCavDavwavwavyavwavwavAavwavEavFavGavHavwavIavwavwavJavKavwavNavPavOavRavQawOavSawQauratoatoatoatoatoatpavTavUavVavWavXavYavZatpawaawbawcawdawdaweawdawfawgawhawiawjawkawlawlawmawlawlawnawoawlawlawmawpawlawqawlawrawlawlawsawtawtawuawvawwatSatSatSatSatSalrawxalOalrdXodZOdZNdXodZPdZbdZbdZRdZQdZTdZSdZVdZUdZWdYCdZYdZXdYydYydYydYydXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaafaaaaaaaaaatTapkawyakLasQasQasQasQasQawzawAawBawCawDawEawFawGawHawIawJawKaxGawAawLawMatbawNawAawAawPawAawRawAawSawTawUawVawWawXawYawZaxaaxbaxcauyaxdauDaxeaxgaxfaxiaxhaxjauratoatoatoatoatoatpaxkaxlaxmattavZaxnaxoatpaxpaxqaxrasGaxsaxtaxuaxvaxwauXaxxaxyaxzaxAaxBaxsaxDaxsaxEasFasGaxFaxsaUiaxHaxIasGaxJaxzaxKaxLasGaxMaxNaxsaxOatSatSatSatSatSalraxPalOalrdZZeabeaadZNeacdZbdZbeaddZbdZbdZbdZbdZbeaedZbeageafeahdXKdXKdXJeaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11108,7 +11108,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaagaadaadabcaagaagaadaadaafaagaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaabaaaaaaaaaaMfazgazgaybaRaaRbaRbaRcaRdaReaRfaRgaRhaRbaRiaRjaRkaRlaRmaRjaRnaRjaRoaRpaRqaRraRsaRtaRjaRjaRuayxazBazBaPIaaaaaaaaaaabaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaafaadaadaadaafaaeaagaadaadaadaafaaaaafaagaadaadaadaadaafaaeaaaaMfaMfaMfaMfaLOaLOaLOaRvaRwaRxaRyaRzaRAaRzaRzaRBaKvaRCaKwaKxaRDaRDaRDaRDaREaRFaRGaRHaLOaLOaLOaPIaPIaPIaPIaafaafaadaadaadaadaKmaaaaadaafaadaadaadaadaadaadaadaaaaaeaKmaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaRNaROaRMaRPaRQaRRaRzaRSaRTaRCaRUaRSaRDaRVaRWaRWaREaRYaRZaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaaaaaaaaaaaaaaaaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaSgaShaSiaSjaSkaSlaSmaSnaRMaSoaSpaSqaSraRSaSsaStaKTaKRaRDaSuaRVaSvaSwaSxaSyaSzaSAaSBaSCaSDaSEaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaaaaaaaaaaaaaaaaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaSgbEoaSiaSjaSkaSlaSmaSnaRMaSoaSpaSqaSraRSaSsaStaKTaKRaRDaSuaRVaSvaSwaSxaSydgEaSAaSBaSCaSDaSEaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaSfaSfaSfaaaaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaRJaRJaRKaRJaRLaRMaSFaSGaRyaRzaRzaRzaRzaRSaSHaSIaSJaSKaSLaSMebkaSOaREaSPaSQaSaaSbaScaSdaScaScaSeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaSfaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSRaRyaRyaRyaRyaRyaRyaSSaSTaRyaSUaSVaSWaSXaSYaSZaTaaTbaTcaTdaTeaTfaTgaREaThaTiaREaREaREaREaREaREaTjaaaaaaaaaaTkaaaaaaaaaaTkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaSfaSfaSfaSfaSfaaaaaaaSfaSfaSfaSfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRIaTlaTlaTmaTlaTnaRMaToaTpaTqaTraTbaTbaTbaTsaTbaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaSaaTDaTEaTFaTEaTEaSeaaaaaaaaaaTkaaaaaaaaaaTkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11316,7 +11316,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJaaaaaaaaaaaaaaaaaaaaaaaaaaabkAbzcbzdbzebkAbkAbzfbzgbzhbzgbzibzjbzkbuvbutbzlbutbuvbuvbuwbuwbzmbuwbuwbuxbznbzobzpbuxbzqbzrbzsbztbuxbymbynbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbzubzvbzwbzxbxhcOBdcSdfrbuWbzAbzBbzCbzDbzEbuWbzFbzGbzHbxqbzIbuZbzJbzKbzLbzMbzNbzNbzNbzNbzNbzNbzObzNbzNbzNbzNbzPbzQbzRbzSbzTbzUbzVbzWbyObyPbzXbyObzYbzZbAabAbbAcbAdbxIaaaaaabhgaaaaaaaaaaaabyWbAebyZbAfbAgbAhbyWbAibyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjaaaaaaaaaaaaaaabAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaafaaaaaaaaaaaaaaaaaabAkbAkbAkbAkbAkbAkbAkbAkbAkbAlbAmbAnbAobApbAqbArbAsbAtbAtbAubAvbAwbAxbAybAzbAAbABbACbvCbADbAEbAFbuxbDJbymbymbymbAGbAHbAIbwUbAJbAKbALbAMbwUbwUbwUbwUbwUbwUbANbAObwUbAPbAQbuxbARbASbATbxhbxhbxhbxhbuWbAVbAWbAXbAYbAZbuWbBabBbbBcbBdbBebuZbBfbxibBgbBhbBibBjbBkbxibxibBlbBlbBlbBlbBlbBlbBlbBmbBnbBobBpbBqbBrbBrbBrbBrbBsbBsbBsbBsbBsbBtbBubBvbBwbBwbBxbBwbBxbBwbBxbBwbBwbBybBzbBAbBBbBCbyWbBDbyWbyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaabBEbBFbBGbBHbAkbBIbBJbBKbBLbBMbBMbBNbAkbBObBPbBQbBRbBSbBTbDpbBVbDpbBWbBXbBYbBZbCabCbbCcbCdbCebCfbvCbCgbzobChbuxbCibCjbymbymbuxbCkbClbymbCmbCnbuxbuxbCobuxbuxbCpbymbymbAQbCqbymbCrbuxbuxbCsbCtbCubvZbvZbCvbyJbuWbCwbCxbuWbuWbuWbuWbuZbuZbCybuZbuZbuZbBfbxibCzbCAbBibwnbCBbCCbCDbBlbCEbCFbCGbCHbCIbBlbCJbCJbCKbCJbCJbBrbCLbCMebubBsbCObBsbCPbBsbCQbCRbCSbBwbCTbCUbCVbCVbCWbCXbCYbBwbCZbDabDbbDcbDdbDebDfbDgbyWaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbDobELbDqbDrbDsbDtbCfbDubDvbDwbDxbDubDybDybDzbDAbDBbDybuxbDCbDDbDEbuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibzzbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEnbEobBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbDobELbDqbDrbDsbDtbCfbDubDvbDwbDxbDubDybDybDzbDAbDBbDybuxbDCbDDbDEbuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibzzbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEndgGbBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaadaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaabBEbECbEDbEEbAkbEFbEGbEGbEHbEGbEIbEJbAkbEKbGmbEMbENbEObEPbEQbERbESbETbEUbEVbEWbEXbEYbEZbFabFbbFcbuxbFdbFebFfbFgbFhbuxbvGbvFbuxbFibDGbFjbFkbFlbDGbFmbFnbChbuxbzpbymbFobuxbvGbymbFpbFqbFrbFsbFtbFubFvbDTbFwbDTbFxbDTbFybDTbDTbDTbDTbFzbFAbFBbFBbFBbFBbFBbFBbFCbFDbDZbFEebxbFGbEabFHbFIbFJbFKbFLbFVbFMbFNbFObFPbEjbHxbKtebzebybFTbGbbGibFWbFXbFYbBsbFZbGabHybGcbGdbGebGdbGfbGgbGhbKrbGjbGkbGlbGpbGqbGnbGobJpbGrbGsaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaabBEbGtbGubGvbAkbGwbEGbEGbGxbGybGzbGAbGBbGCbGDbGEbGFbEObGGbGHbERbGIbGJbGKbGLbGMbEXbGNbGObGPbGQbGRbuxbGSbGTbGUbGVbFhbuxbAQbAQbuxbGWbDGbGXbFkbGYbDGbuxbuxbuxbuxbGZbGZbGZbuxbuxbuxbuxbuxbHabHbbHcbHdbHabvZbvZbvZbvZbvZbvibvibvibvZbvZbvZbvZbFBbHebHfbHgbHhbFBbHibHjbHkbHlbHmbHnbEabHobHpbEcbHqbHrbHsbEgbHtebBebCebAbFQbBrebFebDebEbBsbHCbHDbHEbHFbBsbHGbHHbBwbHIbHJbHKbHJbHKbHJbHLebGbHMbHNbHObHPbHQbHRbHSbHTbHUbHVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaafaaabHWbHWbHWbHWbHWbHWbHWbHXbHXbBEbHYbHZbDibAkbIabIabIbbIcbIdbIebIfbAkbIgbIhbIibIjbIkbIlccMbCfbInbIobIpbIqbIrbDybIsbItbIubIvbIwbIxbIxbIybIxbIxbIxbIxbuxbuxbuxbIzbDGbIAbIBbICbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbIEbIFbIGbIHbIIbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbIJbIKbILbILbIMbINbBqbDZbIObIPbIQbEabIRbISbITbIUbIVbIWbEgbEjebIbIXebHbIZbBrbBrbBrbBrbBsbJdbJebJfbJgbBsbJhbJibBwbBwbJjbJkbJlbJjbJmbJjbBxbJnbJobKFbJqbJrbJsbJtbJqbJubJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11374,10 +11374,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafcUrddXddYddZddZddZddZddZddZddZddZddZddZdfbdfcdfddfeddrdffdfgdfgdfhdfidfjcUKdfkdfkdeUdfldfmdfndfodfpdfqdUXdfsdftdfudfvdfwdfxdfydfzdfAdhXdaUdcZcZSaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadaaaaaaaaaaafaaaaaaaaaaafaaaaadaadaafaadaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlddXddYddZddZddZddZddZddZddZddZddZddZdfCdfDdfEdfFdfGdfHdfIdfJdfKdfLdfMcZydfNcULdfOdfPdfQdfRdfSdfQdfTdfUdfUdfUdfVdfWdfUdfUdfXdfUdfYdeTecxdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaagaaaaadaadaadaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlddXdgaddZddZddZddZddZddZddZddZddZddZddYdgbdgcdgddgedgfdggdghcULcSzdgidgjdgkdgldgmdgndgodUYdgqdgqdgrdgqdgsdgqdgtdgudgvdgwdgxdgvdgydgzdgAdgBdaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafcUrddXddYddZddZddZddZddZddZddZddZddZddZdfbdfcdgCdgDddrdgEdgFdgGdgHdfidgIcTAdgJdfkdeUdgKdgLdgMdgNdgOdgPdgQdgRdgSdgTdgNdgOdgUdgVdgVdgWdeTdgXdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafcUrddXddYddZddZddZddZddZddZddZddZddZddZdfbdfcdgCdgDddrdgHdgFdhNdXTdfidgIcTAdgJdfkdeUdgKdgLdgMdgNdgOdgPdgQdgRdgSdgTdgNdgOdgUdgVdgVdgWdeTdgXdcZdaVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaczlddXdeMddZddZddZddZddZddZddZddZddZddZddYdgYdgZddrdhadhbdhadhadhadfidhcdhddhedeTdeTdhfdeTdeTdeTdeTdhgdeTdeTdeTdeTdeTdeTdeTdeTdeTdeTdeTdhhdhicZSaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczlecydekddZddZddZddZddZddZddZddZddZddZddYdeldhldhmdVadhodUZdVcdhrdVbcTBcTAdhtdhudhvdhwdhxdhydhzdhxdhAdhvdhBdhCdhDdhEdhFdhGdhBdhHdhIdhJdhKdhLcZSaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczldhkddYddZddZddZddZddZddZddZddZddZddZddYdhMdhNdhmdhOdhPdhQdhRdVddhTdhUdhVdhWdhudhxdhYdibdhZdiadicdizdhxdhBdiddiedifdigdihdhBdiidijdikdildimcZSaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaczldhkddYddZddZddZddZddZddZddZddZddZddZddYdhMdYPdhmdhOdhPdhQdhRdVddhTdhUdhVdhWdhudhxdhYdibdhZdiadicdizdhxdhBdiddiedifdigdihdhBdiidijdikdildimcZSaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaafaafaafcUrdhkddrddrdindiodipddrddrddrddrddrddrddrddrddrddrdVfdVedisdVgdhrdiudivcVWdiwdixdiydiBdiAdhydhydjRdiCdhxdiDdiEdiFdiGdiHdiIdhBdiJdiKdikdiLdimcZSaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkcvwdiMdiNdiMdiOdiMdiPdiQdiRdiQdiSdiTdiUdiVdiMdiWdhadhadhadhadiXdfkcUKdiYdixdiZdjadiZdhydjbdiZdjcdjddjedjfdjfdjgdjfdjhdhBdjidjjdjkdjldjmcZSaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkctTdiMdjndjodjpdjqdiPdjrdiRdjsdiSdjtdjsdjsdjudjsdjsdiQdjsdjvdbKdfkcUKdjwdhudhxdhYdibdhydhydicdizdjxdhBdiDdiDeczdiDdiDdhBdixdixdixdhhdjzdjAdjAdjAaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11723,4 +11723,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
-
diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm
index 83efa3d31b..98f2bd55f7 100644
--- a/maps/southern_cross/southern_cross-3.dmm
+++ b/maps/southern_cross/southern_cross-3.dmm
@@ -1400,7 +1400,7 @@
"AV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora)
"AW" = (/turf/unsimulated/wall/planetary/sif,/area/surface/outside/river/indalsalven)
"AX" = (/turf/simulated/floor/water,/area/surface/outside/river/indalsalven)
-"AY" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
+"AY" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
"AZ" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/brigdoor/westleft{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
"Ba" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology)
"Bb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/table/standard,/obj/item/weapon/melee/baton/slime/loaded,/obj/item/weapon/gun/energy/taser/xeno,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenobiology)
@@ -1560,7 +1560,7 @@
"DZ" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outside/lake/romsele)
"Ea" = (/turf/simulated/floor/water/shoreline/corner{icon_state = "shorelinecorner"; dir = 4},/area/surface/outside/ocean)
"Eb" = (/obj/effect/zone_divider,/turf/simulated/floor/water/shoreline{icon_state = "shoreline"; dir = 8},/area/surface/outside/ocean)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacadadadabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaeaeaeababababababababab
aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaiajajajahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa
diff --git a/maps/southern_cross/southern_cross-4.dmm b/maps/southern_cross/southern_cross-4.dmm
index 19928e3a45..3b3dbdcdbb 100644
--- a/maps/southern_cross/southern_cross-4.dmm
+++ b/maps/southern_cross/southern_cross-4.dmm
@@ -1,700 +1,700 @@
-"aa" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/deep)
-"ab" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/deep)
-"ac" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
-"ad" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/normal)
-"ae" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/normal)
-"af" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
-"ag" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/unexplored/normal)
-"ah" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"ai" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"aj" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"ak" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"al" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"am" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology)
-"an" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"ao" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 24; pixel_y = 0; req_access = list(47)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"ap" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"ar" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"as" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"at" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"au" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/computer/guestpass{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"av" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aw" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ax" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ay" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"az" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aA" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aB" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aC" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aD" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aE" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aF" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 2"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"aG" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"aH" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"aI" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aL" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aM" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aN" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"aO" = (/obj/structure/disposaloutlet{dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"aP" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"aQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/table/rack,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"aR" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aS" = (/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aT" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aU" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aV" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aW" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"aX" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Research Access Button"; pixel_x = 26; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"aY" = (/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"aZ" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ba" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bb" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bc" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bd" = (/obj/structure/sign/warning/nosmoking_2,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"be" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bf" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bg" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bh" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/closet/crate,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bi" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{pixel_x = -32},/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1397; id_tag = "xenoarch2_airlock_control"; name = "Research Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "xenoarch2_airlock_exterior"; tag_interior_door = "xenoarch2_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"bq" = (/obj/machinery/shower{pixel_y = 3},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology)
-"br" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bt" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bx" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"by" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bz" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bA" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bD" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bE" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bF" = (/obj/effect/floor_decal/corner/purple{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bG" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"bI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"bJ" = (/obj/machinery/space_heater,/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bL" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bN" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bO" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"bP" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bQ" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light/small,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bR" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Long Term Storage"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bS" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
-"bT" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/suspension_gen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bU" = (/obj/machinery/suspension_gen,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bV" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bX" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northleft,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bY" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northright,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bZ" = (/obj/structure/table/steel,/obj/item/device/suit_cooling_unit,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/obj/item/device/suit_cooling_unit,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"ca" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"cb" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cd" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"ce" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/obj/structure/window/reinforced,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cf" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cg" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ch" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ci" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"ck" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 2"; dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cl" = (/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 2"; dir = 4},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cn" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/powered/scrubber/huge,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly)
-"co" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cp" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cs" = (/obj/structure/bed,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"ct" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cu" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cv" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/cave)
-"cw" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"cx" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint)
-"cy" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/deep)
-"cz" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep)
-"cA" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/medical)
-"cB" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"cC" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"cD" = (/obj/structure/table/rack,/obj/machinery/firealarm{pixel_y = 24},/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"cE" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical)
-"cF" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"cG" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"cH" = (/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"cI" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
-"cJ" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cK" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cL" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"cM" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cN" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cO" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cP" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cQ" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cR" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cS" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"cT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cW" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"cX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"cY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"cZ" = (/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"da" = (/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"db" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"de" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"df" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dg" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"di" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dj" = (/obj/structure/table/standard,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dk" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dl" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dn" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"do" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"dp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"dq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"dr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
-"ds" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep)
-"dt" = (/obj/machinery/door/airlock/voidcraft{name = "Wilderness Containment"},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"du" = (/obj/structure/bed/chair/office/light,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/table/standard,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/item/weapon/storage/box/cups,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_research{name = "Outpost Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dC" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dD" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"dE" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dF" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dG" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dH" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/button/remote/blast_door{id = "xenoarch_cell2"; name = "Cell 2"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dJ" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
-"dK" = (/obj/machinery/computer/crew,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/device/defib_kit/loaded,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch First-Aid"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dM" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/firstaid/adv{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/o2{pixel_x = 0; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
-"dN" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/medical)
-"dO" = (/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dQ" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/device/taperecorder,/obj/item/weapon/folder,/obj/item/weapon/stamp,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"dR" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dT" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"dU" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dV" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/sterile/latex,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dW" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dX" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dY" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dZ" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ea" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eb" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ec" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ed" = (/obj/machinery/artifact_analyser,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ee" = (/obj/machinery/door/blast/regular{id = "xenoarch_cell2"},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ef" = (/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/surface/outpost/wall/checkpoint)
-"eg" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint)
-"eh" = (/obj/item/weapon/banner/nt,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"ei" = (/obj/item/weapon/banner/nt,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
-"ej" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical)
-"ek" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"el" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"em" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning,/obj/item/device/camera_film{pixel_x = 2; pixel_y = 2},/obj/item/device/camera,/obj/machinery/recharger,/obj/item/weapon/tape_roll,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Crew Area"; dir = 8},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
-"en" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology)
-"eo" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"ep" = (/obj/structure/table/reinforced,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_access = null; req_one_access = null},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eq" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"es" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"et" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ev" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ew" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"ex" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/banner/virgov,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
-"ey" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/outpost/research/xenoarcheology)
-"ez" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 1"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eB" = (/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eG" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/device/camera,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/tape_roll,/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eJ" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eK" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eL" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"eM" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"eQ" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/rust/part_rusted1,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eS" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eT" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Research Access Button"; pixel_x = -6; pixel_y = -26; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"eU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "xenoarch1_airlock_control"; name = "Research Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "xenoarch1_airlock_exterior"; tag_interior_door = "xenoarch1_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eW" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eY" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"eZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fa" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fb" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fc" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fd" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fe" = (/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ff" = (/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fg" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fh" = (/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fi" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fj" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_b)
-"fk" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"fl" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/status_display{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
-"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fp" = (/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fr" = (/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"ft" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fu" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fv" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fx" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fy" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fz" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fA" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fB" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fC" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fD" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/smes)
-"fE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
-"fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
-"fG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Generator Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"fH" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
-"fI" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fJ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fK" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
-"fL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fM" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fN" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fO" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fP" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"fR" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fS" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fU" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"fV" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Xenoarch"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"fW" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"fX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/random/tool,/obj/random/tool,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"fZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"ga" = (/obj/machinery/atmospherics/binary/pump/on{dir = 2; target_pressure = 200},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gb" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/obj/random/maintenance/clean,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gc" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
-"gd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/restroom)
-"ge" = (/obj/machinery/door/airlock{name = "Research Restroom"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 1"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"gg" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"gh" = (/obj/machinery/atmospherics/unary/heater{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"gi" = (/obj/machinery/atmospherics/unary/freezer{dir = 1; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"gj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
-"gk" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"gl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"gm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"gn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
-"go" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
-"gp" = (/obj/structure/table/steel,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/cell_charger,/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"gq" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"gr" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
-"gs" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/structure/cable/heavyduty{icon_state = "2-4"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
-"gt" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
-"gu" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable/heavyduty{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gw" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gx" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; target_pressure = 200},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gy" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gz" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gA" = (/obj/structure/table/steel,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gB" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gC" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gD" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gE" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/restroom)
-"gF" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/analysis)
-"gG" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"gH" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"gI" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/analysis)
-"gJ" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/analysis)
-"gK" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"gL" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal)
-"gM" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
-"gN" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gQ" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gR" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 7; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gS" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 8},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"gT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gV" = (/obj/structure/table/standard,/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/random/soap,/obj/random/soap,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"gW" = (/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 9},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"gX" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"gY" = (/obj/effect/floor_decal/corner/beige{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"gZ" = (/obj/effect/floor_decal/corner/lime{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Sample Preparation"; dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"ha" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hb" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hc" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"he" = (/obj/machinery/space_heater,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hf" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hg" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 50},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hh" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hi" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hj" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 5; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hk" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"hm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"hn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"ho" = (/obj/machinery/chemical_dispenser/full,/obj/structure/sign/warning/nosmoking_2{pixel_x = -32},/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hp" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hr" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/window/westright,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hs" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"ht" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hu" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Emergency Storage"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hw" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hx" = (/obj/item/weapon/weldpack,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hy" = (/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hz" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{ icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hA" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hB" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hC" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 6; tag_north = 1; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hD" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hE" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"hF" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"hG" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
-"hH" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hI" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hJ" = (/obj/effect/floor_decal/corner/beige,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hK" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hL" = (/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hM" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hN" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"hP" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hS" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hT" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
-"hV" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/beige/full,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hW" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hX" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
-"hY" = (/obj/machinery/radiocarbon_spectrometer,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
-"hZ" = (/obj/structure/table/glass,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
-"ia" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
-"ib" = (/obj/machinery/radiocarbon_spectrometer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
-"ic" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/suit_cooling_unit,/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
-"id" = (/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
-"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal)
-"if" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
-"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
-"ih" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"ii" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"im" = (/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"in" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"io" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"ip" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iq" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"ir" = (/obj/machinery/mining/brace,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"is" = (/obj/machinery/mining/drill,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"it" = (/obj/vehicle/train/engine,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iu" = (/obj/vehicle/train/trolley,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iv" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iw" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/heavyduty{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"ix" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iy" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iz" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"iA" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
-"iB" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxcwcwcwcxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyczczczaaaaaaaaaaaaaaaaaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcXcZcYcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcZcZcZcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsacabababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababefdtegdtefabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsacacababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacehcZcZcZexacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacaccZcZcZacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacgoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacgoababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabacacacacababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababacacacacababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacgoabacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababgoacacacabababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacgoabababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacabacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacababababacacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababacacacacacacacacacabababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababacacacacacacababacacacabababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababacacacacacacacababacacacacababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacabababababababababababababababababababacacacacgoacacacabababacacacacababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababacacacabababababababababababababababababacacacacacabacacacababababacacacacacacababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababacacababababababababababababababababacacacacababacacacabababababacacacacacacacababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacababababababababababababacacababababababababababababababacacacacacababacacacababababababababacacacacacacacababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababacacacacabababacacacababababababababababacacacacacacacabacgoababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababababababababababababababababababababababababacacacacacabababacacacababababababababababababacacacacacacacacababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababacacacacacabababacacacabababababababababababababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababababababababababababababababababababababababababacacacacababababacacacabababababababababababababababababacacgoacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababacacacacabababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababacacacacabababacacacacabababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababacacabacacababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababababacacacababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacacababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacacabababababababababababababababababababacacacacabacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacacabababababababababababababababababababacacacababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacacababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacabababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacabababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacgoacacabababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
-aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacabababababababababababababababababababababababababababababababababababababacgrdsdsdsababababababababaa
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafigaeaeaeaeaeaeaeaeaeaeafafafafafigaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeigafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeafafafaeaeaeafafafaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeafafaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeafagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafafafafaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeafafafaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafifaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafgLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeafafaeaeafgLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafafaeaeafafafafafaeaeaeaegLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeafafafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeafafafafafafafafafafafafafafaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafifaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeafifafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeahaiaiajajaiahafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeafafafafafahakaiajalakahafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeafafafafafafahamanaoamamahafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeapaqapapapaqarapasatauavawaxavavaxayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeapapazaAaBaCaDaEapaFaGaHavaIaJaKaLaMaNaOaPaQayayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapaRaSaTaUaTaVaWapanaXamavaYaZbabbbcbdbebfbgbhayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapbiaTbjbkblaTbmbnbobpbqbrbsbtbubububvbwbxbybzayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeafaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbAaTbBbCbDbEbFbGbHbIbJbKbLbMbNbObNaNbPbQbRbSayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbTbUbVbWbXbYbZcacbcccdavcebMcfcgchaNayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapapapapapapapapapcicjckavclcmcncncocpcqcrcsctcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecviigqgpdDiicvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinimimimimimioafafafaecAdadbdccEdddedfandgdhdiaxdjdkdkdldmdndodpdqdrcuafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafaeaecAdudvdwdxdydzdAamandBandCdGdEdFihdHdIcucucucucudJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaecAdKdLdMdNdOdPdQcIdRdSdTaxdUdVdWdXdYdZeaebecedeedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimitiqafafafeicAdNdNcAejekelemeneodSdTbKepbNbNeqereseteueveweedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyanezeAaneBeBeCeDeEeFdSdTaxeGeHeIeJeKeLeMeNeOePeedJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimiuiqafafafeyeQeReSeTeUeVeWeXeYeZfafbfcfdfefffgfhfifjfjfjfjfjdJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyamfkflamfmfnfofpfqfrfsftaxfudkdkfvfwfxfyfzfAfBfCafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimimiqafafafeifDfDfDfDfEfFfGfHfDfIfJfKfLfMfNfOfPfQesfRfSfTfUfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaffDfVfWfXfYfZgagbgcgdgegdavgfggghgibNgjgkglgmgnfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeivimimiwixixiygsgtgtgtgugvgwgwgxgygzgAgdgBgCgDgEgFgGgFgFgHgIgJgKgKgKgKafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecvizizcvizizcvgMafafaffDgNgwgOgPgQgRgSgdgTgUgVgdgWgXgYgZhahbhchdhehfgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhggwgOhhhihjhkgdhlhmhngdhohphqhrhshthuhvhwhxgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDhygwhzhAhBhChDgdhEhFhGgdhHhIhJhKhLhMhLhdhNhOgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafaffDfDhPhQhRhShThUfDgEgEgEgJhVhWhXhYhZiaibhdicgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaefDfDfDfDfDfDfDfDaeaeaegJgJgFgJgJgFgJgJgKgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeidafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadieiAiAiAadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadiBiBiBadadadadadadadadad
-"}
+"aa" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/deep)
+"ab" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/deep)
+"ac" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
+"ad" = (/turf/unsimulated/wall/planetary/sif,/area/surface/cave/unexplored/normal)
+"ae" = (/turf/simulated/mineral/sif,/area/surface/cave/unexplored/normal)
+"af" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"ag" = (/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/unexplored/normal)
+"ah" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"ai" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"aj" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"ak" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"al" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"am" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology)
+"an" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"ao" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 24; pixel_y = 0; req_access = list(47)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"ap" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"ar" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"as" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"at" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"au" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/computer/guestpass{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"av" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aw" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ax" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ay" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"az" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aA" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aB" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aC" = (/obj/structure/closet/excavation,/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aD" = (/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aE" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aF" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 2"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"aG" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"aH" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"aI" = (/obj/machinery/conveyor{dir = 2; id = "anolongstorage"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/conveyor_switch{id = "anolongstorage"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aL" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aM" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aN" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"aO" = (/obj/structure/disposaloutlet{dir = 4},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"aP" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"aQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/table/rack,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"aR" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aS" = (/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aT" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aU" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aV" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aW" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"aX" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1397; icon_state = "door_locked"; id_tag = "xenoarch2_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1397; master_tag = "xenoarch2_airlock_control"; name = "Research Access Button"; pixel_x = 26; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"aY" = (/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"aZ" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ba" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bb" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bc" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bd" = (/obj/structure/sign/warning/nosmoking_2,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"be" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bf" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bg" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bh" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/closet/crate,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bi" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{pixel_x = -32},/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1397; id_tag = "xenoarch2_airlock_control"; name = "Research Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "xenoarch2_airlock_exterior"; tag_interior_door = "xenoarch2_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"bq" = (/obj/machinery/shower{pixel_y = 3},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology)
+"br" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bt" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bx" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"by" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bz" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bA" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bD" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bE" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bF" = (/obj/effect/floor_decal/corner/purple{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bG" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"bI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"bJ" = (/obj/machinery/space_heater,/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bL" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bN" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bO" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"bP" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bQ" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light/small,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bR" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Long Term Storage"; dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bS" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/anomaly_container,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
+"bT" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/suspension_gen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bU" = (/obj/machinery/suspension_gen,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bV" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bX" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northleft,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bY" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northright,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bZ" = (/obj/structure/table/steel,/obj/item/device/suit_cooling_unit,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/obj/item/device/suit_cooling_unit,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"ca" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"cb" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cd" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"ce" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/obj/structure/window/reinforced,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cf" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cg" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 1; tag_north = 2; tag_south = 0; tag_west = 3},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ch" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ci" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"ck" = (/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 2"; dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cl" = (/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 2"; dir = 4},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cn" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/powered/scrubber/huge,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/anomaly)
+"co" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cp" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/purple{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cs" = (/obj/structure/bed,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"ct" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cu" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cv" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/cave)
+"cw" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"cx" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint)
+"cy" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/deep)
+"cz" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep)
+"cA" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/medical)
+"cB" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"cC" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"cD" = (/obj/structure/table/rack,/obj/machinery/firealarm{pixel_y = 24},/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"cE" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical)
+"cF" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"cG" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/suit/storage/hooded/wintercoat/science,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"cH" = (/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"cI" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology)
+"cJ" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cK" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cL" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"cM" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cN" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cO" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cP" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cQ" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cR" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cS" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"cT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cW" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"cX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"cY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"cZ" = (/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"da" = (/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"db" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"de" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"df" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dg" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"di" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dj" = (/obj/structure/table/standard,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dk" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dl" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dn" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"do" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"dp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"dq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"dr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_a)
+"ds" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/deep)
+"dt" = (/obj/machinery/door/airlock/voidcraft{name = "Wilderness Containment"},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"du" = (/obj/structure/bed/chair/office/light,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/table/standard,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/item/weapon/storage/box/cups,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_research{name = "Outpost Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dC" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dD" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"dE" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dF" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dG" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dH" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/button/remote/blast_door{id = "xenoarch_cell2"; name = "Cell 2"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dJ" = (/obj/structure/table/steel,/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/machinery/cell_charger,/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"dK" = (/obj/machinery/computer/crew,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/device/defib_kit/loaded,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch First-Aid"; dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dM" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/firstaid/adv{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/o2{pixel_x = 0; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/medical)
+"dN" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/medical)
+"dO" = (/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dQ" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/device/taperecorder,/obj/item/weapon/folder,/obj/item/weapon/stamp,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"dR" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dT" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"dU" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dV" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/obj/item/weapon/cell/high,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"dW" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dX" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dY" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dZ" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ea" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eb" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ec" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ed" = (/obj/machinery/artifact_analyser,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ee" = (/obj/machinery/door/blast/regular{id = "xenoarch_cell2"},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ef" = (/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/surface/outpost/wall/checkpoint)
+"eg" = (/obj/structure/showcase/sign{pixel_y = -5},/turf/simulated/shuttle/wall/voidcraft,/area/surface/outpost/wall/checkpoint)
+"eh" = (/obj/item/weapon/banner/nt,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"ei" = (/obj/item/weapon/banner/nt,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"ej" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/medical)
+"ek" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"el" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"em" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/purple{dir = 4},/obj/effect/floor_decal/industrial/warning,/obj/item/device/camera_film{pixel_x = 2; pixel_y = 2},/obj/item/device/camera,/obj/machinery/recharger,/obj/item/weapon/tape_roll,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Crew Area"; dir = 8},/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
+"en" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology)
+"eo" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"ep" = (/obj/structure/table/reinforced,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_access = null; req_one_access = null},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eq" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"es" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"et" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ev" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ew" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"ex" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/banner/virgov,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
+"ey" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"ez" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Airlock 1"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eB" = (/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eE" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eG" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/device/camera,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/corner/purple{dir = 9},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eH" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/weapon/pen,/obj/item/weapon/tape_roll,/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eJ" = (/obj/structure/window/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eK" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eL" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"eM" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"eQ" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_exterior"; locked = 1; name = "Research Exterior Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Xenoarch Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/rust/part_rusted1,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eS" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eT" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xenoarch1_airlock_interior"; locked = 1; name = "Research Interior Airlock"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xenoarch1_airlock_control"; name = "Research Access Button"; pixel_x = -6; pixel_y = -26; req_access = null},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"eU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "xenoarch1_airlock_control"; name = "Research Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "xenoarch1_airlock_exterior"; tag_interior_door = "xenoarch1_airlock_interior"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eW" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eY" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"eZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fa" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fb" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Xenoarch Hallway 1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fc" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fd" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fe" = (/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ff" = (/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/structure/table/steel,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fg" = (/obj/machinery/artifact_harvester,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fh" = (/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fi" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fj" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_b)
+"fk" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"fl" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/status_display{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology)
+"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/purple{dir = 8},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/noticeboard/anomaly{icon_state = "nboard05"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fp" = (/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fq" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fr" = (/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"ft" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fu" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fv" = (/obj/machinery/artifact_scanpad,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/bluegrid,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fx" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fy" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fz" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fA" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fB" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fC" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fD" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/smes)
+"fE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
+"fF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
+"fG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Generator Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"fH" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
+"fI" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fJ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fK" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
+"fL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fM" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fN" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fO" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fP" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"fR" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fS" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fT" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fU" = (/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"fV" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Xenoarch"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"fW" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"fX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/random/tool,/obj/random/tool,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"fZ" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"ga" = (/obj/machinery/atmospherics/binary/pump/on{dir = 2; target_pressure = 200},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gb" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/obj/random/maintenance/clean,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gc" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/smes)
+"gd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/restroom)
+"ge" = (/obj/machinery/door/airlock{name = "Research Restroom"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Anomalous Materials 1"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/purple{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"gg" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"gh" = (/obj/machinery/atmospherics/unary/heater{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"gi" = (/obj/machinery/atmospherics/unary/freezer{dir = 1; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"gj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/purple,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/structure/anomaly_container,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"gk" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"gl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/light,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"gm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow,/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 1; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"gn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 1},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoarcheology/isolation_c)
+"go" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
+"gp" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"gq" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"gr" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/deep)
+"gs" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"gt" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"gu" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable/heavyduty{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gw" = (/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gx" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; target_pressure = 200},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gy" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gz" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gA" = (/obj/structure/table/steel,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gB" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gC" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gD" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gE" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/restroom)
+"gF" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/analysis)
+"gG" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"gH" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Sample Preparation"; req_access = list(65)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"gI" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/analysis)
+"gJ" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/analysis)
+"gK" = (/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"gL" = (/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal)
+"gM" = (/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
+"gN" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gQ" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gR" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 7; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gS" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 8},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"gT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gV" = (/obj/structure/table/standard,/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/item/weapon/towel{color = "#800080"; name = "purple towel"},/obj/random/soap,/obj/random/soap,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"gW" = (/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 9},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"gX" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"gY" = (/obj/effect/floor_decal/corner/beige{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"gZ" = (/obj/effect/floor_decal/corner/lime{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Sample Preparation"; dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"ha" = (/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hb" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hc" = (/obj/structure/reagent_dispensers/coolanttank,/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hd" = (/turf/simulated/wall,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"he" = (/obj/machinery/space_heater,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hf" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hg" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 50},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hh" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hi" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hj" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 5; tag_north = 1; tag_south = 2; tag_west = 0},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hk" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"hm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"hn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"ho" = (/obj/machinery/chemical_dispenser/full,/obj/structure/sign/warning/nosmoking_2{pixel_x = -32},/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hp" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hr" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/window/westright,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hs" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"ht" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hu" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Emergency Storage"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hw" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hx" = (/obj/item/weapon/weldpack,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hy" = (/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hz" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/sterile/latex,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
+"hA" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hB" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hC" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 6; tag_north = 1; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hD" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hE" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"hF" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"hG" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/research/xenoarcheology/restroom)
+"hH" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hI" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hJ" = (/obj/effect/floor_decal/corner/beige,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hK" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hL" = (/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hM" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hN" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"hP" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hS" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hT" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"hV" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/corner/beige/full,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hW" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hX" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis)
+"hY" = (/obj/machinery/radiocarbon_spectrometer,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
+"hZ" = (/obj/structure/table/glass,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
+"ia" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
+"ib" = (/obj/machinery/radiocarbon_spectrometer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis)
+"ic" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/suit_cooling_unit,/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage)
+"id" = (/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/outpost/research/xenoarcheology)
+"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal)
+"if" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"ih" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"ii" = (/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"ij" = (/obj/structure/cable/heavyduty{icon_state = "2-8"},/obj/structure/cable/heavyduty{icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
+"ik" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning/dust{icon_state = "warning_dust"; dir = 4},/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"il" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
+"im" = (/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"in" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
+"io" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/smes)
+"ip" = (/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/plating{icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
+"ir" = (/obj/machinery/mining/brace,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"is" = (/obj/machinery/mining/drill,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"it" = (/obj/vehicle/train/engine,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"iu" = (/obj/vehicle/train/trolley,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"iw" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/heavyduty{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"ix" = (/obj/structure/cable/heavyduty{icon_state = "4-8"},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"iz" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
+"iA" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"iB" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/floor/water{outdoors = 0},/area/surface/cave/explored/normal)
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxcwcwcwcxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyczczczaaaaaaaaaaaaaaaaaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcXcZcYcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcxcZcZcZcxababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsacabababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababefdtegdtefabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsacacababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacehcZcZcZexacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacaccZcZcZacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacgoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababababababababababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsabababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacacgoababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabacacacacababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababacacacacabababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababacacacacababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgoacacgoabacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababgoacacacabababababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacgoabababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacabacabababababababababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacababababacacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababacacacacacacacacacacacabababababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacababababababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababacacacacacacacacacabababababababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababacacacacacacababacacacabababababababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababacacacacacacacababacacacacababababababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacabababababababababababababababababababacacacacgoacacacabababacacacacababababababababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababacacacabababababababababababababababababacacacacacabacacacababababacacacacacacababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababacacababababababababababababababababacacacacababacacacabababababacacacacacacacababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacababababababababababababacacababababababababababababababacacacacacababacacacababababababababacacacacacacacababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababacacacacabababacacacababababababababababacacacacacacacabacgoababababacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacababababababababababababababababababababababababababababababacacacacacabababacacacababababababababababababacacacacacacacacababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababacacacacacabababacacacabababababababababababababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacababababababababababababababababababababababababababababababababacacacacababababacacacabababababababababababababababababacacgoacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababacacacacabababacacacacababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababacacacacabababacacacacabababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababacacabacacababababacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacababababababababacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacabababababababababababababababababababacacacababababababababababababacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababacacacacabababacacacacacababababababababababababababababababacacacacacababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacacabababababababababababababababababababacacacacabacabababababababababababababababababacacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacacabababababababababababababababababababacacacababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacacabababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsabacababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacacababababababababababababababababababababacacababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacacababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacacababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsacabababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacababacacabababababababababababababababababababacacabababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacacabababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacababababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacabacacabababababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacgoacacabababababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacabababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacabababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacababababababababababababababababababababababababababababababababababababababababdsdsdsababababababababaa
+aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacabababababababababababababababababababababababababababababababababababababacgrdsdsdsababababababababaa
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafigaeaeaeaeaeaeaeaeaeaeafafafafafigaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeigafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeafafafaeaeaeafafafaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeafafaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeafagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafafafafaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeafafafaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafgLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafifaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafgLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeafafaeaeafgLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafafaeaeafafafafafaeaeaeaegLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeafafafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafifaeaeaeafafafafafafafafafafafafafafaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeifafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeafifaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafifaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeafifafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafifaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeafafafafafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeahaiaiajajaiahafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeafafafafafahakaiajalakahafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeafafafafafafahamanaoamamahafafafafafafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeapaqapapapaqarapasatauavawaxavavaxayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeapapazaAaBaCaDaEapaFaGaHavaIaJaKaLaMaNaOaPaQayayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapaRaSaTaUaTaVaWapanaXamavaYaZbabbbcbdbebfbgbhayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLafafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeapbiaTbjbkblaTbmbnbobpbqbrbsbtbubububvbwbxbybzayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeafaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbAaTbBbCbDbEbFbGbHbIbJbKbLbMbNbObNaNbPbQbRbSayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbTbUbVbWbXbYbZcacbcccdavcebMcfcgchaNayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapapapapapapapapapcicjckavclcmcncncocpcqcrcsctcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecvdDdVdJeydDcvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegpimimimimimgqafafafaecAdadbdccEdddedfandgdhdiaxdjdkdkdldmdndodpdqdrcuafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsimimimimimgtafafaeaecAdudvdwdxdydzdAamandBandCdGdEdFihdHdIcucucucucugMafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsimimimimimgtafafafaecAdKdLdMdNdOdPdQcIdRdSdTaxdUhzdWdXdYdZeaebecedeegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsirisirimitgtafafafeicAdNdNcAejekelemeneodSdTbKepbNbNeqereseteueveweegMafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsimimimimiugtafafafidanezeAaneBeBeCeDeEeFdSdTaxeGeHeIeJeKeLeMeNeOePeegMafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsirisirimiugtafafafideQeReSeTeUeVeWeXeYeZfafbfcfdfefffgfhfifjfjfjfjfjgMafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsimimimimiugtafafafidamfkflamfmfnfofpfqfrfsftaxfudkdkfvfwfxfyfzfAfBfCafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsirisirimimgtafafafeifDfDfDfDfEfFfGfHfDfIfJfKfLfMfNfOfPfQesfRfSfTfUfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegsimimimimimgtafafafaffDfVfWfXfYfZgagbgcgdgegdavgfggghgibNgjgkglgmgnfCafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeiiimimiwixixikijilililgugvgwgwgxgygzgAgdgBgCgDgEgFgGgFgFgHgIgJgKgKgKgKafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecvizizcvizizcvinafafaffDgNgwgOgPgQgRgSgdgTgUgVgdgWgXgYgZhahbhchdhehfgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafaffDhggwgOhhhihjhkgdhlhmhngdhohphqhrhshthuhvhwhxgKaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafaffDhygwiohAhBhChDgdhEhFhGgdhHhIhJhKhLhMhLhdhNhOgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafaffDfDhPhQhRhShThUfDgEgEgEgJhVhWhXhYhZiaibhdicgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafgLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafafaefDfDfDfDfDfDfDfDaeaeaegJgJgFgJgJgFgJgJgKgKgKaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadieiAiAiAadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadiBiBiBadadadadadadadadad
+"}
+
diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm
index 92b664c4b7..815eab78e5 100644
--- a/maps/southern_cross/southern_cross-6.dmm
+++ b/maps/southern_cross/southern_cross-6.dmm
@@ -544,7 +544,7 @@
"kx" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"ky" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command)
"kz" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed)
-"kA" = (/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed)
+"kA" = (/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed)
"kB" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed)
"kC" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock)
"kD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock)
@@ -1243,7 +1243,7 @@
"xU" = (/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = 7},/obj/item/weapon/paper_bin{pixel_y = -6},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = -9},/obj/item/weapon/pen/blue{pixel_x = 3; pixel_y = -5},/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"xV" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/shuttle/merchant/home)
"xW" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home)
-"xX" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/merchant/home)
+"xX" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/merchant/home)
"xY" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor/white,/area/shuttle/merchant/home)
"xZ" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor/white,/area/shuttle/merchant/home)
"ya" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home)
@@ -1502,7 +1502,7 @@
"CT" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"CU" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station)
"CV" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station)
-"CW" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
+"CW" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"CX" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"CY" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
"CZ" = (/obj/structure/bed/chair/shuttle{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
@@ -1696,7 +1696,7 @@
"GF" = (/obj/structure/flight_left{dir = 1},/turf/simulated/shuttle/floor/voidcraft/light,/area/ninja_dojo/start)
"GG" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach)
"GH" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach)
-"GI" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach)
+"GI" = (/obj/machinery/vending/coffee,/turf/unsimulated/beach/sand,/area/beach)
"GJ" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/ninja_dojo/dojo)
"GK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "ninjawindow"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/ninja_dojo/start)
"GL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced/full,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "ninjawindow"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/ninja_dojo/start)
@@ -2123,7 +2123,7 @@
"OQ" = (/obj/machinery/computer/shuttle_control/web/syndicate{dir = 8},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start)
"OR" = (/obj/structure/bed/chair/comfy/red{icon_state = "comfychair_preview"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"OS" = (/obj/machinery/door/airlock/voidcraft/vertical{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
-"OT" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
+"OT" = (/mob/living/simple_mob/animal/passive/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"OU" = (/obj/machinery/door/airlock/voidcraft/vertical{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start)
"OV" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start)
"OW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
@@ -2204,7 +2204,7 @@
"Qt" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{dir = 8; name = "Surgery"; req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"Qu" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"Qv" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/steel,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
-"Qw" = (/mob/living/simple_animal/tindalos,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start)
+"Qw" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start)
"Qx" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/red,/area/skipjack_station/start)
"Qy" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start)
"Qz" = (/obj/structure/table/standard,/obj/item/weapon/surgical/cautery,/obj/item/weapon/surgical/retractor,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start)
@@ -2334,8 +2334,8 @@ aaaaaaaaaaaaaaaajgjgjgjojojgjgjgjgjgjgjgjgjgjgjojojgjgjgaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaajgjojojojojPjojojQjQjQjQjQjojgjojojojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPlYjqldldldldldjqjqlZjSjSmapPpPpPpPmbpPpPpPkjkjlekIkIkIjeaaaaaaaaaaaaiWjsjEjFjFjGjsiTiViViVjkjHjIjJjujKjjaaaaiXjajdjmjmjmjmjmjLjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYjMjMjMjMjMiYiYiYjNiYiYiYjOiYiYiYjMjMjMjMjMiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaajgjojojgjgjgjgkikikikikikijgjgjgjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPmtjqjqjqjqjqjqjqmuqsmvjSjSjSmwmMmLjSmNmUqskjkjlekIkIkIjeaaaaaaaaaaaaiWjsjUjVjWjXjsiTiViViVjkjYjZjZjujujjaaaaiXjajdjmjmjmjmkajdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkbkckckckciYkdkekfkekekekgkekdiYkckckckckhiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPmVmXmWninhnjmtjqnCqsnDjSjSjSjSjSjSjSjSnEqskjkjjekIkIkIjeaaaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjujujujujujjaaaaiXjajdjmjmjmjmjmjLjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkkklklklklkmkeknkokpknkqkoknkekmklklklklkriYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpPqslZqsqsnDjSjSnRnQocobodjSoeqskjkjjekIkIkIjejeaaaaaaaaaaiWjsjUjVjVjXjskyiViViVkzjukAjujukBjjaaaaiXjajdjmjmkCkCkCkDjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkEklklklkliYkeknkokpknkqkoknkeiYkFklklklkGiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPokpRolpPpPjSjSjSjSjSjSjSjSomqskjkjlekIkIkIonjeaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjujujujujujjaaaaiXjajdjljmjmjmjnjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalhiYiYiYiYiYiYkeknkokpknkqkoknkeiYiYiYiYiYiYlhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpPqslZqsqsnDjSjSnRnQocobodjSoeqskjkjjekIkIkIjejeaaaaaaaaaaiWjsjUjVjVjXjskyiViViVkzjujujujukBjjaaaaiXjajdjmjmkCkCkCkDjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkEklklklkliYkeknkokpknkqkoknkeiYkFklklklkGiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPokpRolpPpPjSjSjSjSjSjSjSjSomqskjkjlekIkIkIonjeaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjukAjujujujjaaaaiXjajdjljmjmjmjnjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalhiYiYiYiYiYiYkeknkokpknkqkoknkeiYiYiYiYiYiYlhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPozpRoloApPqsoBpPjSoMoLpsprpPpPkjkjlekIkIkIpGjeaaaaaaaaaaiWjsjUjVkJjXjsiTiViViVjkjZjZjZjujujjaaaaiXjajdkKjmjmjmkKjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMiYkeknkokpknkqkoknkeiYkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPpRpRolpIpHpJjqpKjSjSjSjSpLpMqskjkjlekIkIkIonjeaaaaaaaaaaiWjskOkPkPkQjsiTiViViVjkjZkRjujujujjaaaaiXjajdjdkSkSkSjdjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMkTkUknknknknknknknkVkWkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaajgjglajgjgjgjgjglblblblblblbjgjgjgjgjglcjgjgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpNpRolpQpOqqqpqDqrqFqEqOqNqPqskjkjlekIkIkIjejeaaaaaaaaaaiWjsjsjsjsjsjsiWiViViVjjjujujujujujjaaaaiXjajakXkYkYkYkZjajaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMiYkekekekeknkekekekeiYkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm
index 9333279dce..06ab539b0a 100644
--- a/maps/southern_cross/southern_cross_areas.dm
+++ b/maps/southern_cross/southern_cross_areas.dm
@@ -59,6 +59,7 @@
/area/surface/outside
ambience = AMBIENCE_SIF
+ always_unpowered = TRUE
// The area near the outpost, so POIs don't show up right next to the outpost.
/area/surface/outside/plains/outpost
@@ -123,6 +124,7 @@
/area/surface/cave
flags = RAD_SHIELDED
+ always_unpowered = TRUE
/area/surface/cave
@@ -582,7 +584,7 @@
icon_state = "escape_pod"
/area/hallway/secondary/escape/firstdeck/ep_starboard1
- name = "\improper Escape Pod 3 Starboard"
+ name = "\improper First Deck Research Access Hallway"
icon_state = "escape_pod"
/area/hallway/secondary/escape/firstdeck/ep_starboard2
diff --git a/maps/submaps/surface_submaps/mountains/BlastMine1.dmm b/maps/submaps/surface_submaps/mountains/BlastMine1.dmm
index 34094caf86..a2c17c17c2 100644
--- a/maps/submaps/surface_submaps/mountains/BlastMine1.dmm
+++ b/maps/submaps/surface_submaps/mountains/BlastMine1.dmm
@@ -3,10 +3,10 @@
"c" = (/obj/structure/sign/warning/bomb_range,/turf/simulated/wall/sandstone,/area/submap/cave/BlastMine1)
"d" = (/obj/structure/table/rack,/obj/item/weapon/syndie/c4explosive,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"e" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
-"f" = (/mob/living/simple_animal/hostile/savik{returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
+"f" = (/mob/living/simple_mob/animal/sif/savik,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"g" = (/obj/structure/table/rack,/obj/item/clothing/head/bomb_hood,/obj/item/clothing/suit/bomb_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"h" = (/obj/item/device/gps/internal/poi{gps_tag = "Unidentified Signal"},/turf/simulated/wall/sandstone,/area/submap/cave/BlastMine1)
-"i" = (/mob/living/simple_animal/retaliate/diyaab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
+"i" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"j" = (/obj/structure/table/reinforced,/obj/item/weapon/flame/lighter/zippo/c4detonator{detonator_mode = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"k" = (/obj/structure/table/rack,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
"l" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1)
diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
index c298931a86..d1260c33e6 100644
--- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
+++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
@@ -4,12 +4,12 @@
"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
"e" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CaveTrench)
"f" = (/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
-"g" = (/mob/living/simple_animal/hostile/malf_drone/lesser,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"h" = (/mob/living/simple_animal/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
+"g" = (/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"h" = (/mob/living/simple_mob/animal/passive/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
"i" = (/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
"j" = (/turf/simulated/wall,/area/submap/CaveTrench)
"k" = (/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"l" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
+"l" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
"m" = (/turf/simulated/wall/wood,/area/submap/CaveTrench)
"n" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
"o" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
diff --git a/maps/submaps/surface_submaps/mountains/Cavelake.dmm b/maps/submaps/surface_submaps/mountains/Cavelake.dmm
index 8ead9f2ef5..3d9edb159c 100644
--- a/maps/submaps/surface_submaps/mountains/Cavelake.dmm
+++ b/maps/submaps/surface_submaps/mountains/Cavelake.dmm
@@ -4,11 +4,11 @@
"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
"e" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
"f" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Cavelake)
-"g" = (/mob/living/simple_animal/giant_crab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
+"g" = (/mob/living/simple_mob/animal/sif/hooligan_crab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
"h" = (/turf/simulated/floor/water,/area/submap/Cavelake)
-"i" = (/mob/living/simple_animal/fish/perch,/turf/simulated/floor/water,/area/submap/Cavelake)
+"i" = (/mob/living/simple_mob/animal/passive/fish/perch,/turf/simulated/floor/water,/area/submap/Cavelake)
"j" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
-"k" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water,/area/submap/Cavelake)
+"k" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/Cavelake)
"l" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
"m" = (/obj/random/mob/sif,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
"n" = (/obj/item/clothing/mask/snorkel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake)
diff --git a/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm b/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm
index fad7093123..74d5e563a4 100644
--- a/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm
+++ b/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm
@@ -14,7 +14,7 @@
"an" = (/obj/structure/window/reinforced,/obj/effect/decal/cleanable/blood/oil,/obj/structure/loot_pile/surface/bones,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"ao" = (/obj/item/weapon/circuitboard/broken,/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle)
"ap" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle)
-"aq" = (/obj/effect/decal/cleanable/liquid_fuel,/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
+"aq" = (/obj/effect/decal/cleanable/liquid_fuel,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"ar" = (/obj/structure/closet/crate/medical,/obj/random/medical,/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"as" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"at" = (/obj/item/weapon/material/shard,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
@@ -23,7 +23,7 @@
"aw" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"ax" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"ay" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
-"az" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/item/weapon/firstaid_arm_assembly,/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
+"az" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/item/weapon/firstaid_arm_assembly,/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"aA" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle)
"aB" = (/obj/structure/lattice,/obj/item/stack/rods,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"aC" = (/obj/effect/decal/cleanable/blood/oil,/obj/item/weapon/firstaid_arm_assembly,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
@@ -38,7 +38,7 @@
"aL" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle)
"aM" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"aN" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
-"aO" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
+"aO" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"aP" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"aQ" = (/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"aR" = (/turf/simulated/shuttle/wall/no_join,/area/submap/CrashedMedShuttle)
@@ -63,12 +63,12 @@
"bk" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"bl" = (/obj/effect/spider/stickyweb,/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bm" = (/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
-"bn" = (/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
+"bn" = (/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"bo" = (/obj/effect/spider/cocoon,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"bp" = (/obj/structure{anchored = 1; density = 1; desc = "Once an artificial intelligence; now merely a brick of inert metal and circuits."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-empty"; name = "V.I.T.A"},/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle)
"bq" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"br" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
-"bs" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/webslinger,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle)
+"bs" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle)
"bt" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle)
"bu" = (/obj/effect/decal/remains/tajaran,/obj/item/weapon/surgical/circular_saw,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
"bv" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle)
@@ -81,7 +81,7 @@
"bC" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle)
"bD" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle)
"bE" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle)
-"bF" = (/obj/random/medical/pillbottle,/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
+"bF" = (/obj/random/medical/pillbottle,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bG" = (/obj/structure/table/standard,/obj/item/device/defib_kit/loaded,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bH" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bI" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/bodybags,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
@@ -97,7 +97,7 @@
"bS" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle)
"bT" = (/obj/structure/table/standard,/obj/item/device/reagent_scanner/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle)
"bU" = (/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
-"bV" = (/mob/living/simple_animal/hostile/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
+"bV" = (/mob/living/simple_mob/animal/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bW" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bX" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
"bY" = (/obj/structure/table/standard,/obj/item/weapon/storage/backpack/medic,/obj/random/medical/lite,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle)
diff --git a/maps/submaps/surface_submaps/mountains/Scave1.dmm b/maps/submaps/surface_submaps/mountains/Scave1.dmm
index 0e45423d3b..11de2dd444 100644
--- a/maps/submaps/surface_submaps/mountains/Scave1.dmm
+++ b/maps/submaps/surface_submaps/mountains/Scave1.dmm
@@ -12,7 +12,7 @@
"l" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
"m" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
"n" = (/obj/item/device/flashlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
-"o" = (/mob/living/simple_animal/hostile/giant_spider/frost,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
+"o" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
"p" = (/obj/effect/spider/stickyweb,/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
"q" = (/obj/effect/decal/remains,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1)
diff --git a/maps/submaps/surface_submaps/mountains/SwordCave.dmm b/maps/submaps/surface_submaps/mountains/SwordCave.dmm
index 8c15e58da8..385c61a540 100644
--- a/maps/submaps/surface_submaps/mountains/SwordCave.dmm
+++ b/maps/submaps/surface_submaps/mountains/SwordCave.dmm
@@ -1,55 +1,55 @@
-"a" = (/turf/template_noop,/area/template_noop)
-"b" = (/turf/simulated/mineral,/area/submap/cave/swordcave)
-"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"d" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"e" = (/turf/simulated/floor/water,/area/submap/cave/swordcave)
-"f" = (/turf/simulated/floor/water/deep,/area/submap/cave/swordcave)
-"g" = (/obj/structure/ghost_pod/manual/cursedblade,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"h" = (/mob/living/simple_animal/hostile/faithless/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"i" = (/obj/item/device/gps/explorer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"j" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-"k" = (/mob/living/simple_animal/hostile/scarybat/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
-
-(1,1,1) = {"
-aaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaa
-aaaaabbbbbbbbbbbcccdccccbbbbbbbbbbbbaaaaa
-aaaabbbbbbcccccccccccccccccccccbbbbbbaaaa
-aaabbbbbbcccccccccccccccccccccccdbbbbbaaa
-aabbbbccccccceeeeeeeeeeeeeccccccccbbbbbaa
-aabbbccccccceeeeeeeeeeeeeeeccccccccbbbbaa
-aabbbcdcccceeeffffffffffffeeeccccccbbbbaa
-aabbbccccceefeeeeeeefeeeeeeeeecccccbbbbaa
-aabbbccccceefeeccceeeeeeeefffeeccccbbbaaa
-aabbbcccceeffeecccccecccceefffeecccbbbaaa
-aabbbcccceeffeeeccgcccchcceeffeecccbbbaaa
-aabbbcccdeeffeeccijcdccccceefeeccdcbbbaaa
-abbbccccceefffeeeccccccceeefeeccccccbbaaa
-abbbcccccceefffeeeccccceeeffeeccccccbbbaa
-abbbcdccccceefffeeeeeeeeffffeeccccccbbbaa
-abbcccckcccceeffffeeeeefffffeeccccccbbbaa
-abbcccccccccceeffffffffffffeeccccdccbbbaa
-abbccccccccccceeffeeeeeefffeecccccccbbbaa
-abbbccccdcccccceefeeeeeeeeeeckccccccbbbaa
-abbbcccccccccccceeecccdceeecccccccccbbaaa
-abbbcccccccccccccecccccccceccccdckccbbaaa
-abbbcccccccccckcccccccccccccccccccccbbaaa
-abbbbcccccckccccccccccccccckccccccccbbaaa
-abbbbbcccccccccccccccckccccccccckcccbbaaa
-aabbbbbccccccccccccccccccccccccccccbbbaaa
-aabbbbbccccccccccccdccccccccccccccbbbbaaa
-aabbbbbcccccdccccccccccccccccccccbbbbbaaa
-aabbbbbccccccccccckccccccccdcccccbbbbaaaa
-aabbbbbbbccccccccccccccccccccccccbbbbaaaa
-aaabbbbbbbcccccccccccccccdccccccbbbbaaaaa
-aaaabbbbbbcckcccccdcccccccccccccbbbbaaaaa
-aaaaabbbbbcccccccccccccccccccccbbbbbaaaaa
-aaaaabbbbbccccccccccccccccccccbbbbbaaaaaa
-aaaaaabbbbbcccdccccccccccccccbbbbbaaaaaaa
-aaaaaaabbbbbcccccccckccccckcbbbbbbaaaaaaa
-aaaaaaabbbbbbcccccccccccccccbbbbbaaaaaaaa
-aaaaaaabbbbbbbbbbbbccccccccccbbbaaaaaaaaa
-aaaaaaaaabbbbbbbbbbbccccccccccbaaaaaaaaaa
-aaaaaaaaaaabbbbbbbbbbccccccccccaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaacccdccccaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaccccccaaaaaaaaaaaa
-"}
+"a" = (/turf/template_noop,/area/template_noop)
+"b" = (/turf/simulated/mineral,/area/submap/cave/swordcave)
+"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"d" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"e" = (/turf/simulated/floor/water,/area/submap/cave/swordcave)
+"f" = (/turf/simulated/floor/water/deep,/area/submap/cave/swordcave)
+"g" = (/obj/structure/ghost_pod/manual/cursedblade,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"h" = (/mob/living/simple_mob/faithless/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"i" = (/obj/item/device/gps/explorer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"j" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+"k" = (/mob/living/simple_mob/animal/space/bats,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave)
+
+(1,1,1) = {"
+aaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaa
+aaaaabbbbbbbbbbbcccdccccbbbbbbbbbbbbaaaaa
+aaaabbbbbbcccccccccccccccccccccbbbbbbaaaa
+aaabbbbbbcccccccccccccccccccccccdbbbbbaaa
+aabbbbccccccceeeeeeeeeeeeeccccccccbbbbbaa
+aabbbccccccceeeeeeeeeeeeeeeccccccccbbbbaa
+aabbbcdcccceeeffffffffffffeeeccccccbbbbaa
+aabbbccccceefeeeeeeefeeeeeeeeecccccbbbbaa
+aabbbccccceefeeccceeeeeeeefffeeccccbbbaaa
+aabbbcccceeffeecccccecccceefffeecccbbbaaa
+aabbbcccceeffeeeccgcccchcceeffeecccbbbaaa
+aabbbcccdeeffeeccijcdccccceefeeccdcbbbaaa
+abbbccccceefffeeeccccccceeefeeccccccbbaaa
+abbbcccccceefffeeeccccceeeffeeccccccbbbaa
+abbbcdccccceefffeeeeeeeeffffeeccccccbbbaa
+abbcccckcccceeffffeeeeefffffeeccccccbbbaa
+abbcccccccccceeffffffffffffeeccccdccbbbaa
+abbccccccccccceeffeeeeeefffeecccccccbbbaa
+abbbccccdcccccceefeeeeeeeeeeckccccccbbbaa
+abbbcccccccccccceeecccdceeecccccccccbbaaa
+abbbcccccccccccccecccccccceccccdckccbbaaa
+abbbcccccccccckcccccccccccccccccccccbbaaa
+abbbbcccccckccccccccccccccckccccccccbbaaa
+abbbbbcccccccccccccccckccccccccckcccbbaaa
+aabbbbbccccccccccccccccccccccccccccbbbaaa
+aabbbbbccccccccccccdccccccccccccccbbbbaaa
+aabbbbbcccccdccccccccccccccccccccbbbbbaaa
+aabbbbbccccccccccckccccccccdcccccbbbbaaaa
+aabbbbbbbccccccccccccccccccccccccbbbbaaaa
+aaabbbbbbbcccccccccccccccdccccccbbbbaaaaa
+aaaabbbbbbcckcccccdcccccccccccccbbbbaaaaa
+aaaaabbbbbcccccccccccccccccccccbbbbbaaaaa
+aaaaabbbbbccccccccccccccccccccbbbbbaaaaaa
+aaaaaabbbbbcccdccccccccccccccbbbbbaaaaaaa
+aaaaaaabbbbbcccccccckccccckcbbbbbbaaaaaaa
+aaaaaaabbbbbbcccccccccccccccbbbbbaaaaaaaa
+aaaaaaabbbbbbbbbbbbccccccccccbbbaaaaaaaaa
+aaaaaaaaabbbbbbbbbbbccccccccccbaaaaaaaaaa
+aaaaaaaaaaabbbbbbbbbbccccccccccaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaacccdccccaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaccccccaaaaaaaaaaaa
+"}
diff --git a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm
index 79440f618f..9b19efeea7 100644
--- a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm
+++ b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm
@@ -1,121 +1,121 @@
-"aa" = (/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"ab" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/submap/crashedcontainmentshuttle)
-"ac" = (/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
-"ad" = (/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"ae" = (/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"ai" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aj" = (/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"al" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"ap" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aq" = (/obj/item/weapon/material/shard,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"at" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"ax" = (/obj/item/frame/mirror,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
-"ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
-"aB" = (/obj/structure/largecrate/animal/crashedshuttle,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
-"aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"aG" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"aK" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"aL" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aM" = (/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle)
-"aQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"aV" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"aX" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aY" = (/obj/item/clothing/suit/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"aZ" = (/obj/effect/decal/remains/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"ba" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bd" = (/obj/item/clothing/head/helmet/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"be" = (/obj/item/weapon/material/knife/ritual,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bf" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bj" = (/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bk" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bl" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bm" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"bn" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bo" = (/obj/effect/decal/cleanable/blood/drip,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
-"bp" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"bt" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bu" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle)
-"by" = (/obj/random/landmine,/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/cult,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bG" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
-"bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
-"bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
-"bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
-"bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
-"bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aa" = (/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"ab" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/submap/crashedcontainmentshuttle)
+"ac" = (/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"ad" = (/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"ae" = (/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ai" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aj" = (/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"al" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ap" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aq" = (/obj/item/weapon/material/shard,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"at" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"ax" = (/obj/item/frame/mirror,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aG" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aK" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aL" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aM" = (/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle)
+"aQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"aV" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aX" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aY" = (/obj/item/clothing/suit/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"aZ" = (/obj/effect/decal/remains/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"ba" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bd" = (/obj/item/clothing/head/helmet/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"be" = (/obj/item/weapon/material/knife/ritual,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bf" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bj" = (/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bk" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bl" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bm" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bn" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bo" = (/obj/effect/decal/cleanable/blood/drip,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bp" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bt" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bu" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle)
+"by" = (/obj/random/landmine,/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/cult,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bG" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
+"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle)
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaiaaaaaaajanaaaaaaaaaaaaaaalaaaaaaaa
-aaaaabacaaaaaaaaaaaaaaaaapaaaPaPaaaqaaaaaaaaaaaaaa
-aaaaacaaaaadaaaaaaaaajapaPaPaPadaPaaaaaaataaaaaaaa
-aaaCaaaaauaDakaracacaGaQacacananacabaaaaaaaaaaaaaa
-aaaVaXaaadaoaaadadajaXbHbyayadadaWacabaaaaaaaaaaaa
-aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa
-aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa
-acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa
-aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa
-aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoapaaaa
-aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa
-aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa
-aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa
-adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa
-aPacaaaaamapadaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa
-aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa
-aaaaaXbtaaacbuapaoaKanananacacaranabaPaPaabgaaaaaa
-acaaaaaaaPaPaaaoaaaaapapaPaPaPapaPaPaaaaaaaaaaaaaa
-aaaXaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa
-aabDaabgaaaGaaaaaaaabGbmboaabmbgaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa
-aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa
-aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa
-"}
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaiaaaaaaajanaaaaaaaaaaaaaaalaaaaaaaa
+aaaaabacaaaaaaaaaaaaaaaaapaaaPaPaaaqaaaaaaaaaaaaaa
+aaaaacaaaaadaaaaaaaaajapaPaPaPadaPaaaaaaataaaaaaaa
+aaaCaaaaauaDakaracacaGaQacacananacabaaaaaaaaaaaaaa
+aaaVaXaaadaoaaadadajaXbHbyayadadaWacabaaaaaaaaaaaa
+aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa
+aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa
+acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa
+aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa
+aaaPadaaacaMadbkadbbacbvafbwacaLadaSbKbqaHaoapaaaa
+aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa
+aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa
+aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa
+adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa
+aPacaaaaamapadaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa
+aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa
+aaaaaXbtaaacbuapaoaKanananacacaranabaPaPaabgaaaaaa
+acaaaaaaaPaPaaaoaaaaapapaPaPaPapaPaPaaaaaaaaaaaaaa
+aaaXaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa
+aabDaabgaaaGaaaaaaaabGbmboaabmbgaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa
+aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa
+aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
diff --git a/maps/submaps/surface_submaps/mountains/digsite.dmm b/maps/submaps/surface_submaps/mountains/digsite.dmm
index f97910d431..3c777b71f6 100644
--- a/maps/submaps/surface_submaps/mountains/digsite.dmm
+++ b/maps/submaps/surface_submaps/mountains/digsite.dmm
@@ -1,63 +1,64 @@
-"a" = (/turf/template_noop,/area/template_noop)
-"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite)
-"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite)
-"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"n" = (/mob/living/simple_animal/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
-"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"s" = (/turf/simulated/wall,/area/submap/cave/digsite)
-"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"a" = (/turf/template_noop,/area/template_noop)
+"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite)
+"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite)
+"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"n" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite)
+"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"s" = (/turf/simulated/wall,/area/submap/cave/digsite)
+"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
+"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaa
-aaabbbbbbbbbbbbbbbaa
-aabccccccccdccccceea
-abccffcfffghgcficcea
-abcfffcffjggfcfffcea
-abcfkflffggfffffmcea
-abcfffcffffffgfffcea
-abccffcffffffgnfccea
-abbccccclccfhccggeea
-abbbbboeffffepqeeeea
-abbbbbbeeeeeeeeeeeea
-abbbbbbpeeeeeqereeea
-abbbbsteeuveeeerbeea
-abbbbwxeyzAeqeBbbbea
-abbbbCgeyDEeeeeFbbba
-abeeGHgeqIJeeeqbbbba
-aeeeKeeeeLMeeeNbbeaa
-aaeeeeeeeeeeeeNeeeaa
-aaaaaeeeeeeeeeeeeaaa
-aaaaaaaaaaaaaaaaaaaa
-"}
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaa
+aaabbbbbbbbbbbbbbbaa
+aabccccccccdccccceea
+abccffcfffghgcficcea
+abcfffcffjggfcfffcea
+abcfkflffggfffffmcea
+abcfffcffffffgfffcea
+abccffcffffffgnfccea
+abbccccclccfhccggeea
+abbbbboeffffepqeeeea
+abbbbbbeeeeeeeeeeeea
+abbbbbbpeeeeeqereeea
+abbbbsteeuveeeerbeea
+abbbbwxeyzAeqeBbbbea
+abbbbCgeyDEeeeeFbbba
+abeeGHgeqIJeeeqbbbba
+aeeeKeeeeLMeeeNbbeaa
+aaeeeeeeeeeeeeNeeeaa
+aaaaaeeeeeeeeeeeeaaa
+aaaaaaaaaaaaaaaaaaaa
+"}
+
diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
index ab2a36f75b..5d0739cbcf 100644
--- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
+++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
@@ -1,146 +1,147 @@
-"aa" = (/turf/template_noop,/area/template_noop)
-"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
-"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
-"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
-"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
-"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aA" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
-"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aL" = (/obj/structure/table/standard,/obj/item/clothing/head/helmet/space/emergency,/obj/item/weapon/paper{desc = "It looks old."; icon_state = "paper_words"; info = "Pilot's Log for Major Bill's Transportation Shuttle MBT-540
Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
Captain Willis 06:06:33: You too, control. Departing route Charlie.
Captain Willis 06:06:48: ...Damn it.
**
Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
06:12:31: A loud thud is heard.
Captain Adisu 06:12:34: What the (Expletives)?
Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
**
V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
Captain Adisu 06:16:10: Understood.
**
V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
**
Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
06:36:50: (Sound of emergency shutters closing)
Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
** Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming."; item_state = "paper"; name = "Black Box Transcript MBT-540"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
-"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
-"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
-"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
-"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
-"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
-"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
-"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
-"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
-"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"aa" = (/turf/template_noop,/area/template_noop)
+"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
+"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
+"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
+"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
+"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aA" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
+"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aL" = (/obj/structure/table/standard,/obj/item/clothing/head/helmet/space/emergency,/obj/item/weapon/paper{desc = "It looks old."; icon_state = "paper_words"; info = "Pilot's Log for Major Bill's Transportation Shuttle MBT-540
Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
Captain Willis 06:06:33: You too, control. Departing route Charlie.
Captain Willis 06:06:48: ...Damn it.
**
Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
06:12:31: A loud thud is heard.
Captain Adisu 06:12:34: What the (Expletives)?
Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
**
V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
Captain Adisu 06:16:10: Understood.
**
V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
**
Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
06:36:50: (Sound of emergency shutters closing)
Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
** Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming."; item_state = "paper"; name = "Black Box Transcript MBT-540"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle)
+"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
+"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
+"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
+"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
+"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
+"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
+"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
+"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
+"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa
-aaabababababaeafaeaeabaaaaabababababababadagahabaa
-aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa
-aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa
-aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa
-aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa
-aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa
-aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa
-aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa
-aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa
-ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa
-ababababbTabaeaeafaeababababbUabababababadagahaaaa
-aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa
-aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa
-aaaaacababcgchcicjckclababcmabcbcbababababababaaaa
-aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-"}
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa
+aaabababababaeafaeaeabaaaaabababababababadagahabaa
+aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa
+aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa
+aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa
+aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa
+aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa
+aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa
+aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa
+aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa
+ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa
+ababababbTabaeaeafaeababababbUabababababadagahaaaa
+aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa
+aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa
+aaaaacababcgchcicjckclababcmabcbcbababababababaaaa
+aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
diff --git a/maps/submaps/surface_submaps/mountains/vault3.dmm b/maps/submaps/surface_submaps/mountains/vault3.dmm
index b517d1cdee..bd93aba096 100644
--- a/maps/submaps/surface_submaps/mountains/vault3.dmm
+++ b/maps/submaps/surface_submaps/mountains/vault3.dmm
@@ -2,7 +2,7 @@
"b" = (/turf/simulated/wall,/area/submap/cave/vault3)
"c" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/floor/plating,/area/submap/cave/vault3)
"d" = (/obj/structure/loot_pile/maint/technical,/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3)
-"e" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien/drone,/turf/simulated/floor/plating,/area/submap/cave/vault3)
+"e" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/floor/plating,/area/submap/cave/vault3)
"f" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3)
"g" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3)
"h" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/turf/simulated/floor/plating,/area/submap/cave/vault3)
diff --git a/maps/submaps/surface_submaps/mountains/vault4.dmm b/maps/submaps/surface_submaps/mountains/vault4.dmm
index 7d5213916d..78ac6842d5 100644
--- a/maps/submaps/surface_submaps/mountains/vault4.dmm
+++ b/maps/submaps/surface_submaps/mountains/vault4.dmm
@@ -3,10 +3,10 @@
"c" = (/obj/structure/simple_door/resin,/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"d" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"e" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
-"f" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien/drone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
+"f" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"g" = (/obj/effect/alien/weeds/node,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
-"i" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
+"i" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"j" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
(1,1,1) = {"
diff --git a/maps/submaps/surface_submaps/mountains/vault5.dmm b/maps/submaps/surface_submaps/mountains/vault5.dmm
index 1d4befc167..9de959c715 100644
--- a/maps/submaps/surface_submaps/mountains/vault5.dmm
+++ b/maps/submaps/surface_submaps/mountains/vault5.dmm
@@ -5,9 +5,9 @@
"e" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"f" = (/obj/effect/alien/weeds,/obj/item/clothing/suit/storage/vest/tactical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"g" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
-"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_animal/hostile/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
+"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"i" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
-"j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_animal/hostile/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
+"j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_mob/animal/space/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"k" = (/obj/effect/alien/weeds,/obj/item/clothing/head/helmet/tac,/obj/item/weapon/gun/projectile/SVD,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
(1,1,1) = {"
diff --git a/maps/submaps/surface_submaps/plains/Oldhouse.dmm b/maps/submaps/surface_submaps/plains/Oldhouse.dmm
index 747a4b3ebd..20d8b41be3 100644
--- a/maps/submaps/surface_submaps/plains/Oldhouse.dmm
+++ b/maps/submaps/surface_submaps/plains/Oldhouse.dmm
@@ -37,7 +37,7 @@
"K" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/submap/Oldhouse)
"L" = (/obj/structure/table/woodentable,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/wood,/area/submap/Oldhouse)
"M" = (/obj/structure/frame,/turf/simulated/floor/wood,/area/submap/Oldhouse)
-"N" = (/mob/living/simple_animal/hostile/giant_spider{attack_armor_pen = 100; attacktext = list("lightly bonked"); desc = "Furry and brown, this spider is so goddamn fat you're surprised it even moves around."; faction = "neutral"; health = 400; melee_damage_lower = 1; melee_damage_upper = 3; melee_miss_chance = 30; move_speed = 5; name = "Mr. Tuddly"},/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse)
+"N" = (/mob/living/simple_mob/animal/giant_spider{attack_armor_pen = 100; attacktext = list("lightly bonked"); desc = "Furry and brown, this spider is so goddamn fat you're surprised it even moves around."; faction = "neutral"; health = 400; melee_damage_lower = 1; melee_damage_upper = 3; melee_miss_chance = 30; move_speed = 5; name = "Mr. Tuddly"},/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse)
"O" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse)
"P" = (/obj/item/weapon/circuitboard/papershredder,/turf/simulated/floor/wood,/area/submap/Oldhouse)
"Q" = (/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse)
diff --git a/maps/submaps/surface_submaps/plains/PooledR.dmm b/maps/submaps/surface_submaps/plains/PooledR.dmm
index 554c4cca8f..93d8a3f09f 100644
--- a/maps/submaps/surface_submaps/plains/PooledR.dmm
+++ b/maps/submaps/surface_submaps/plains/PooledR.dmm
@@ -11,10 +11,10 @@
"k" = (/obj/structure/flora/ausbushes,/turf/template_noop,/area/submap/PooledR)
"l" = (/turf/simulated/floor/water,/area/submap/PooledR)
"m" = (/obj/structure/flora/ausbushes/grassybush,/turf/template_noop,/area/submap/PooledR)
-"n" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water,/area/submap/PooledR)
-"o" = (/mob/living/simple_animal/fish/salmon,/turf/simulated/floor/water,/area/submap/PooledR)
+"n" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/PooledR)
+"o" = (/mob/living/simple_mob/animal/passive/fish/salmon,/turf/simulated/floor/water,/area/submap/PooledR)
"p" = (/turf/simulated/floor/water/deep,/area/submap/PooledR)
-"q" = (/mob/living/simple_animal/fish/bass,/turf/simulated/floor/water/deep,/area/submap/PooledR)
+"q" = (/mob/living/simple_mob/animal/passive/fish/bass,/turf/simulated/floor/water/deep,/area/submap/PooledR)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/submaps/surface_submaps/plains/RationCache.dmm b/maps/submaps/surface_submaps/plains/RationCache.dmm
index 600832aa18..0ddb58dd6f 100644
--- a/maps/submaps/surface_submaps/plains/RationCache.dmm
+++ b/maps/submaps/surface_submaps/plains/RationCache.dmm
@@ -1,7 +1,7 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/simulated/floor/outdoors/snow,/area/submap/RationCache)
-"c" = (/mob/living/simple_animal/retaliate/diyaab{returns_home = 1},/turf/simulated/floor/outdoors/snow,/area/submap/RationCache)
-"d" = (/mob/living/simple_animal/retaliate/diyaab{returns_home = 1},/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache)
+"c" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/floor/outdoors/snow,/area/submap/RationCache)
+"d" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache)
"e" = (/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache)
"f" = (/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/RationCache)
"g" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache)
diff --git a/maps/submaps/surface_submaps/plains/Shakden.dmm b/maps/submaps/surface_submaps/plains/Shakden.dmm
index 8720149d63..86f2057db1 100644
--- a/maps/submaps/surface_submaps/plains/Shakden.dmm
+++ b/maps/submaps/surface_submaps/plains/Shakden.dmm
@@ -4,9 +4,9 @@
"d" = (/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
"e" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
"f" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
-"g" = (/mob/living/simple_animal/hostile/shantak{hostile = 0},/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
+"g" = (/mob/living/simple_mob/animal/sif/shantak/retaliate,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
"h" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
-"i" = (/mob/living/simple_animal/hostile/shantak{hostile = 0},/turf/simulated/floor/outdoors/dirt,/area/submap/Shakden)
+"i" = (/mob/living/simple_mob/animal/sif/shantak/retaliate,/turf/simulated/floor/outdoors/dirt,/area/submap/Shakden)
"j" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
"k" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/material/knife/hook,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden)
diff --git a/maps/submaps/surface_submaps/plains/plains.dm b/maps/submaps/surface_submaps/plains/plains.dm
index c4e97e37d6..77ab822ed9 100644
--- a/maps/submaps/surface_submaps/plains/plains.dm
+++ b/maps/submaps/surface_submaps/plains/plains.dm
@@ -68,6 +68,7 @@
desc = "A bunch of marker beacons, scattered in a strange pattern."
mappath = 'maps/submaps/surface_submaps/plains/beacons.dmm'
cost = 5
+ fixed_orientation = TRUE
/datum/map_template/surface/plains/Epod
name = "Emergency Pod"
diff --git a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
index 54aa35cb70..743dc84caa 100644
--- a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
@@ -5,7 +5,7 @@
"ae" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/Blackshuttledown)
"af" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Blackshuttledown)
"ag" = (/obj/structure/table/steel,/turf/template_noop,/area/submap/Blackshuttledown)
-"ah" = (/mob/living/simple_animal/hostile/syndicate/ranged/poi,/turf/template_noop,/area/submap/Blackshuttledown)
+"ah" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/template_noop,/area/submap/Blackshuttledown)
"ai" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
"aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
"ak" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
@@ -32,13 +32,13 @@
"aF" = (/obj/machinery/organ_printer/flesh,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
"aG" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
"aH" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
-"aI" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"aI" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"aJ" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"aK" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"aL" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"aM" = (/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"aN" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
-"aO" = (/mob/living/simple_animal/hostile/syndicate/melee/poi,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aO" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
"aP" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
"aQ" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor/full,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"aR" = (/obj/structure/table/steel,/obj/item/weapon/grenade/smokebomb,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
@@ -63,7 +63,7 @@
"bk" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bl" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bm" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bn" = (/mob/living/simple_animal/hostile/syndicate/ranged/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bn" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bo" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
"bp" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
"bq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
@@ -84,9 +84,9 @@
"bF" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
"bH" = (/obj/machinery/power/apc{dir = 8; name = "BSD APC"; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
-"bI" = (/mob/living/simple_animal/hostile/syndicate/melee/poi,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bI" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
"bJ" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bK" = (/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi,/turf/template_noop,/area/submap/Blackshuttledown)
+"bK" = (/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/template_noop,/area/submap/Blackshuttledown)
"bL" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bN" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
@@ -103,12 +103,12 @@
"bY" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"bZ" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
"ca" = (/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
-"cb" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"cb" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"cc" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"cd" = (/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"ce" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"cf" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
-"cg" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"cg" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"ch" = (/obj/structure/table/steel,/obj/random/energy,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
"ci" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
"cj" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
@@ -119,8 +119,8 @@
"co" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
"cp" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
"cq" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown)
-"cr" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_animal/hostile/syndicate/melee/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"cs" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"cr" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"cs" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/submaps/surface_submaps/wilderness/Boombase.dmm b/maps/submaps/surface_submaps/wilderness/Boombase.dmm
index e8acd62473..438cd0a713 100644
--- a/maps/submaps/surface_submaps/wilderness/Boombase.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Boombase.dmm
@@ -13,7 +13,7 @@
"am" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
"an" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
"ao" = (/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
-"ap" = (/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
+"ap" = (/mob/living/simple_mob/animal/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
"aq" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor/tiled/steel{ icon_state = "steel_dirty"},/area/submap/BoomBase)
"ar" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel{ icon_state = "steel_dirty"},/area/submap/BoomBase)
"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/BoomBase)
@@ -34,7 +34,7 @@
"aH" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/outdoors/dirt,/area/submap/BoomBase)
"aI" = (/obj/random/mob/spider/mutant,/turf/simulated/floor/outdoors/dirt,/area/submap/BoomBase)
"aJ" = (/obj/structure/table,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
-"aK" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
+"aK" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/animal/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
"aL" = (/turf/simulated/floor/tiled/steel{ icon_state = "burned2"},/area/submap/BoomBase)
"aM" = (/turf/simulated/floor/outdoors/rocks,/area/submap/BoomBase)
"aN" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/standard,/obj/item/weapon/tank/phoron,/obj/item/weapon/fuel_assembly/phoron,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase)
diff --git a/maps/submaps/surface_submaps/wilderness/CaveS.dmm b/maps/submaps/surface_submaps/wilderness/CaveS.dmm
index 5a2085080b..62d6587224 100644
--- a/maps/submaps/surface_submaps/wilderness/CaveS.dmm
+++ b/maps/submaps/surface_submaps/wilderness/CaveS.dmm
@@ -12,16 +12,16 @@
"l" = (/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,/turf/template_noop,/area/submap/CaveS)
"m" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/dirt,/area/submap/CaveS)
"n" = (/obj/item/clothing/accessory/storage/webbing,/obj/item/weapon/material/knife/tacknife/combatknife,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
-"o" = (/mob/living/simple_animal/hostile/giant_spider,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
+"o" = (/mob/living/simple_mob/animal/giant_spider,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
"p" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
"q" = (/obj/random/mob/spider,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
-"r" = (/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
+"r" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
"s" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
-"t" = (/mob/living/simple_animal/hostile/giant_spider/webslinger,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
-"u" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
+"t" = (/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
+"u" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
"v" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS)
"w" = (/obj/random/mob/spider/mutant,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
-"x" = (/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt,/area/submap/CaveS)
+"x" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt,/area/submap/CaveS)
"y" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS)
"z" = (/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS)
"A" = (/turf/simulated/floor,/area/submap/CaveS)
@@ -33,7 +33,7 @@
"G" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/paracetamol,/obj/random/firstaid,/turf/simulated/floor,/area/submap/CaveS)
"H" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/submap/CaveS)
"I" = (/obj/structure/closet/crate,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/energy,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/turf/simulated/floor,/area/submap/CaveS)
-"J" = (/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
+"J" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS)
"K" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/submap/CaveS)
"L" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/submap/CaveS)
"M" = (/obj/machinery/computer/communications,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/submap/CaveS)
diff --git a/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm b/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm
index c7440cdaa1..6b85ef347a 100644
--- a/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm
@@ -6,7 +6,7 @@
"f" = (/obj/machinery/telecomms/relay/preset/ruskie,/turf/simulated/floor/wood,/area/submap/DJOutpost1)
"g" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/wood,/area/submap/DJOutpost1)
"h" = (/obj/structure/sign/goldenplaque{desc = "An award given to Sif Free Radio for media excellency. It looks fake."; name = "Best Radio Station 2558"; pixel_y = 30},/turf/simulated/floor/wood,/area/submap/DJOutpost1)
-"i" = (/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/simulated/floor/wood,/area/submap/DJOutpost1)
+"i" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/floor/wood,/area/submap/DJOutpost1)
"j" = (/obj/effect/decal/remains,/obj/effect/decal/cleanable/blood,/obj/item/clothing/under/frontier,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/random_multi/single_item/sfr_headset,/turf/simulated/floor/wood,/area/submap/DJOutpost1)
"k" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/wood,/area/submap/DJOutpost1)
"l" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/intercom{ icon_state = "intercom"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1)
diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm
index df059b55df..5dbf46a254 100644
--- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm
+++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm
@@ -2,11 +2,11 @@
"ab" = (/turf/template_noop,/area/submap/DoomP)
"ac" = (/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP)
"ad" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"ae" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/DoomP)
+"ae" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/submap/DoomP)
"af" = (/turf/simulated/floor/water,/area/submap/DoomP)
"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP)
"ah" = (/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"ai" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"ai" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
"aj" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
"ak" = (/turf/simulated/floor/water/deep,/area/submap/DoomP)
"al" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
@@ -24,7 +24,7 @@
"ax" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled,/area/submap/DoomP)
"ay" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
"az" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/mob/living/simple_animal/hostile/syndicate/ranged/poi,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled,/area/submap/DoomP)
"aB" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
"aC" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled,/area/submap/DoomP)
"aD" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP)
@@ -43,7 +43,7 @@
"aQ" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled,/area/submap/DoomP)
"aR" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
"aS" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
-"aT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_animal/hostile/syndicate/melee/poi,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
+"aT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
"aU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
"aV" = (/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
"aW" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP)
@@ -56,7 +56,7 @@
"bd" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled,/area/submap/DoomP)
"be" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP)
"bf" = (/obj/machinery/light/small,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bg" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bg" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/simulated/floor/tiled,/area/submap/DoomP)
"bh" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP)
"bi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
"bj" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP)
@@ -87,7 +87,7 @@
"bI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
"bJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
"bK" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"bL" = (/mob/living/simple_animal/hostile/syndicate/melee/poi,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP)
+"bL" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/submaps/surface_submaps/wilderness/Drugden.dmm b/maps/submaps/surface_submaps/wilderness/Drugden.dmm
index a3f567a6ef..1ff5bc62f0 100644
--- a/maps/submaps/surface_submaps/wilderness/Drugden.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Drugden.dmm
@@ -13,7 +13,7 @@
"m" = (/obj/structure/curtain/black,/turf/simulated/floor,/area/submap/Drugd)
"n" = (/obj/random/trash,/turf/simulated/floor/carpet,/area/submap/Drugd)
"o" = (/turf/simulated/floor/carpet,/area/submap/Drugd)
-"p" = (/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/submap/Drugd)
+"p" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor,/area/submap/Drugd)
"q" = (/obj/structure/closet/cabinet,/turf/simulated/floor/carpet,/area/submap/Drugd)
"r" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/pill/methylphenidate{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd)
"s" = (/obj/structure/bed/chair/comfy/beige{icon_state = "armchair_preview"; dir = 1},/turf/simulated/floor/carpet,/area/submap/Drugd)
@@ -40,7 +40,7 @@
"N" = (/obj/effect/floor_decal/rust,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Drugd)
"O" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/pill/zoom,/obj/item/weapon/reagent_containers/pill/zoom,/turf/simulated/floor,/area/submap/Drugd)
"P" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/pill/tramadol{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd)
-"Q" = (/mob/living/simple_animal/hostile/hivebot/range/guard,/turf/simulated/floor,/area/submap/Drugd)
+"Q" = (/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard,/turf/simulated/floor,/area/submap/Drugd)
"R" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Drugd)
"S" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Drugd)
"T" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/carpet,/area/submap/Drugd)
diff --git a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
index 07a41d7988..35db3777dc 100644
--- a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
@@ -14,18 +14,18 @@
"n" = (/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"o" = (/turf/simulated/floor,/area/submap/MilitaryCamp1)
"p" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/MilitaryCamp1)
-"q" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"q" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"r" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"s" = (/obj/machinery/computer/communications,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"t" = (/obj/structure/table/standard,/obj/random/energy,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"s" = (/obj/machinery/computer/communications,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"t" = (/obj/structure/table/standard,/obj/random/energy,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"u" = (/obj/effect/mine,/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"v" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"w" = (/obj/machinery/computer/security,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"w" = (/obj/machinery/computer/security,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"x" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"y" = (/obj/item/weapon/material/shard,/obj/random/landmine,/turf/template_noop,/area/submap/MilitaryCamp1)
"z" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"A" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"B" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/MilitaryCamp1)
+"A" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"B" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/submap/MilitaryCamp1)
"C" = (/obj/structure/table,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"D" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor,/area/submap/MilitaryCamp1)
"E" = (/obj/effect/decal/cleanable/dirt,/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
diff --git a/maps/submaps/surface_submaps/wilderness/MHR.dmm b/maps/submaps/surface_submaps/wilderness/MHR.dmm
index 7b62764b45..8c03a44867 100644
--- a/maps/submaps/surface_submaps/wilderness/MHR.dmm
+++ b/maps/submaps/surface_submaps/wilderness/MHR.dmm
@@ -9,14 +9,14 @@
"i" = (/obj/structure/table/standard,/turf/template_noop,/area/submap/MHR)
"j" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Do not enter the cave. The estimated active time of the Vicerators is much longer due to the improvements on the rotor bearings. It's estimated to be roughly a few months before we start to see any chancces of mechanical failure. "; name = "NOTICE: DO NOT ENTER"},/turf/template_noop,/area/submap/MHR)
"k" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
-"l" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
+"l" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
"m" = (/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
-"n" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
+"n" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
"o" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
"p" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
"q" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
"r" = (/obj/effect/decal/remains,/obj/item/clothing/mask/gas/explorer,/obj/item/weapon/material/twohanded/fireaxe,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
-"s" = (/obj/effect/decal/cleanable/spiderling_remains,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
+"s" = (/obj/effect/decal/cleanable/spiderling_remains,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm
index 254316056f..62b8cee28b 100644
--- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm
@@ -25,7 +25,7 @@
"ay" = (/obj/effect/decal/cleanable/blood/gibs/robot/limb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"az" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aA" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
-"aB" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aB" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/maglight,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aD" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aE" = (/obj/structure/closet/cabinet,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
@@ -33,10 +33,10 @@
"aG" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aH" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aI" = (/obj/structure/flora/pottedplant/dead,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
-"aJ" = (/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aJ" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aK" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aL" = (/obj/structure/fireplace,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
-"aM" = (/mob/living/simple_animal/hostile/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aM" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aN" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aO" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
"aP" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
diff --git a/maps/submaps/surface_submaps/wilderness/Mudpit.dmm b/maps/submaps/surface_submaps/wilderness/Mudpit.dmm
index 5548d2bdb2..5df2b9d04f 100644
--- a/maps/submaps/surface_submaps/wilderness/Mudpit.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Mudpit.dmm
@@ -11,7 +11,7 @@
"k" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
"l" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
"m" = (/obj/effect/decal/remains,/obj/item/clothing/suit/space/void/merc/fire,/obj/item/clothing/head/helmet/space/void/merc/fire,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
-"n" = (/mob/living/simple_animal/hostile/giant_spider/thermic{returns_home = 1},/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
+"n" = (/mob/living/simple_mob/animal/giant_spider/thermic,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
"o" = (/obj/effect/decal/mecha_wreckage/ripley/firefighter,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit)
(1,1,1) = {"
diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
index f8eec63f26..df8a237ac1 100644
--- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
@@ -1,227 +1,227 @@
-"aa" = (/turf/template_noop,/area/template_noop)
-"ab" = (/obj/effect/decal/remains,/turf/template_noop,/area/template_noop)
-"ac" = (/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/template_noop,/area/template_noop)
-"ad" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/template_noop)
-"ae" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/Rockybase)
-"af" = (/turf/template_noop,/area/submap/Rockybase)
-"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Rockybase)
-"ah" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/submap/Rockybase)
-"ai" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase)
-"aj" = (/obj/effect/decal/remains/robot,/turf/template_noop,/area/template_noop)
-"ak" = (/mob/living/simple_animal/hostile/malf_drone/lesser,/turf/template_noop,/area/submap/Rockybase)
-"al" = (/turf/simulated/floor,/area/submap/Rockybase)
-"am" = (/obj/effect/decal/remains/posi,/turf/simulated/floor,/area/submap/Rockybase)
-"an" = (/obj/machinery/porta_turret/poi,/turf/simulated/floor,/area/submap/Rockybase)
-"ao" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
-"ap" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/template_noop)
-"aq" = (/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
-"ar" = (/obj/machinery/light,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
-"as" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
-"at" = (/turf/simulated/wall/r_wall,/area/submap/Rockybase)
-"au" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/submap/Rockybase)
-"av" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aw" = (/obj/effect/decal/remains/deer,/turf/template_noop,/area/template_noop)
-"ax" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"ay" = (/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"az" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/item/weapon/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"aA" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aB" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aD" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/pickaxe/plasmacutter,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aE" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aF" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aG" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aH" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aI" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aJ" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aK" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aL" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aM" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aN" = (/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aO" = (/obj/structure/table/standard,/obj/item/device/laptop,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aP" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aQ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aR" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aS" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aT" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aU" = (/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"aV" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"aW" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aX" = (/obj/structure/closet/crate/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aY" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"aZ" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"ba" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bb" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"be" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bf" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bg" = (/obj/machinery/vending/security,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bh" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"bi" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bj" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bk" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bl" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"bm" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"bn" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"bo" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bp" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bq" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"br" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bs" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bt" = (/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bu" = (/obj/effect/floor_decal/corner/red/border,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bv" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"bw" = (/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"bx" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle/pistol,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
-"by" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bz" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bA" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/mob/living/bot/farmbot{faction = "malf_drone"; name = "Mr. Weddleton"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bB" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bC" = (/obj/effect/decal/remains/posi,/turf/template_noop,/area/template_noop)
-"bD" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bE" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bF" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bG" = (/obj/structure/door_assembly,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bH" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bI" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb2,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bJ" = (/obj/effect/decal/mecha_wreckage/hoverpod,/turf/template_noop,/area/template_noop)
-"bK" = (/mob/living/simple_animal/hostile/malf_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bL" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bM" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bN" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bO" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bP" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bQ" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bR" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bS" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bT" = (/obj/effect/decal/remains,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bU" = (/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bV" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bW" = (/obj/item/mecha_parts/part/gygax_right_arm,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bY" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bZ" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ca" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cb" = (/turf/simulated/wall,/area/submap/Rockybase)
-"cc" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ce" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cf" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cg" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ch" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ci" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cj" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ck" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cl" = (/obj/structure/door_assembly,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cm" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
-"cn" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"co" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cp" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cq" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cr" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cs" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ct" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cu" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cv" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cw" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cx" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"cy" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"cz" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/obj/item/weapon/stock_parts/capacitor/adv,/obj/item/weapon/stock_parts/scanning_module/adv,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cC" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor,/area/submap/Rockybase)
-"cD" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cE" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cF" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
-"cG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
-"cH" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase)
-"cI" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
-"cJ" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cK" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"cM" = (/obj/machinery/drone_fabricator{fabricator_tag = "Unknown"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cN" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cO" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cP" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/mob/living/simple_animal/hostile/malf_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cS" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cT" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/submap/Rockybase)
-"cU" = (/obj/machinery/vending/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cV" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
-"cX" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
-"cY" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
-"cZ" = (/obj/item/mecha_parts/part/gygax_armour,/turf/simulated/floor,/area/submap/Rockybase)
-"da" = (/obj/item/mecha_parts/chassis/gygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"db" = (/mob/living/simple_animal/hostile/mecha/malf_drone{name = "Autonomous Mechanized Drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dc" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dd" = (/obj/machinery/vending/robotics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"de" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "Unknown APC"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"df" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dg" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dh" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"di" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
-"dj" = (/obj/item/mecha_parts/part/gygax_right_leg,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dk" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/mecha_parts/part/gygax_left_arm,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"dl" = (/obj/machinery/vending,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dn" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green,/turf/simulated/floor,/area/submap/Rockybase)
-"do" = (/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dp" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/malf_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dq" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dr" = (/obj/effect/decal/cleanable/blood/oil,/turf/template_noop,/area/template_noop)
-"ds" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dt" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"du" = (/obj/structure/table/standard,/obj/item/stack/material/plasteel,/obj/item/stack/material/glass/reinforced,/obj/item/stack/material/phoron{amount = 25},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dv" = (/obj/structure/table/standard,/obj/item/stack/material/glass,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dw" = (/obj/structure/table/standard,/obj/item/mecha_parts/part/gygax_head,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dx" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dy" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dz" = (/obj/item/weapon/surgical/surgicaldrill,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dA" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dB" = (/obj/effect/decal/cleanable/dirt,/mob/living/bot/medbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dC" = (/obj/machinery/vending/hydroseeds,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dD" = (/obj/structure/closet/crate/secure/hydrosec,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 6},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"dE" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/gravemarker{dir = 1},/turf/template_noop,/area/template_noop)
-"dF" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/template_noop)
-"dG" = (/obj/effect/gibspawner/human,/turf/template_noop,/area/template_noop)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaa
-aaaaaaaaaeafafafagafafafafagafafafafafaeafafafafafafafafafafafafafagafafafafafafafafafafafafaeafafafafafaaaaaaaa
-aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahafafafafafafafafafafafafafaaaaaaaa
-aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa
-aaaaaaaaafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafaaaaaaaa
-abaaaaaaafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafaaaaajaa
-aaaaaaaaafafaiaiaiaiaiaiakafafafaiaiaiaiaiafafafafafafafafalalamalalalafafafafafafafafafaiaiaiakafafafafaaaaaaaa
-aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafanalalaoalalalalalanafafafafafaiaiaiaiaiaiaiaiaiafaaaaaaaa
-aaaaaaapafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaqaqaraqaqaqaqaqasaraqaqaiaiaiaiaiaiaiaiaiaiaiaiaiafaaaaaaaa
-aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatauavavauatatatatatatatatatatatatataiaiaiaiafaaawaaaa
-aaaaaaaaafaiatataxayazataAaBaCaDaEaEaBaFaGaHaBaIatataJaKaLaMataNaNataOaPaQaRaSaTataUaVataWaXatataiaiaiafaaaaaaaa
-aaaaaaaaaiaiatataYayaZataEaEaEaEaEaEaEaEaEaEaEaEatatbaaNaNbbatbcaNatbdbebfaNaNbgataUbhatbibjatataiaiaiafaaaaaaaa
-aaaaaaaaaiaiatataYaybkataEblaEaEbmaEaBbnaBaHaBaFatatboaNbpbqataNaNatbrbsbtbtbubtbvbwbxatbibyatataiaiaiafaaaaaaaa
-aaaaaaabaiaiatatayayayatatatbzatatatatatatatatatatatatbzatatatavavatatatatatbzatatatatatbAbBatataiaiaiafaaaaaabC
-aaaaaaaaaiaiatatatbzatatbDbEbEbEbEbFbEbEbEbEbGbEbFbEbEbEbEbEbEbEbEbEbEbFbEbEbEbEbHbHbIatbibyatataiaiaiafaaaabJaa
-aaaaaaaaaiaiatatbcaNaNaNaNaNaNbKbLbLaNbMbNaNaNaNaNaNaNaNaNaNaNbLaNaNaNaNaNaNaNaNbKbLbLbzbibyatataiaiaiafaaaaaaaa
-aaaaaaaaafaiatatatbOatatbPbQbQbRbRbRbQbQbQbSaNalbTbUbQbVbQbRbRbRbQbQbQbQbQbUbQbQbQbQbWatbibBatataiaiaiafaaaaaaaa
-aaaaaaaaafaiatatbXaybYatatatatatatatatatatatalalatatatatbZatatatatcaatatatatatatatatatatbibyatataiaiaiafaaaaaaaa
-aaaaaaaaafaiatatcbcbayatcccdcecfcgchcicjckclalcmcnatcocpaNcqcratcscaaNctcucvbLaNaNaNcwatbibyatataiaiaiafaaaaaaaa
-aaaaaaaaafaiatatcxbOcyataNaNaNaNaNaNaNaNaNcacaalczataNaNcAcBcCatcDaNbLbLcEcFcGcHcIaNcJatbibBatataiaiaiagaaaaaaaa
-aaaaaaaaafaiatatcbcbcKataNcMaNaNcMaNaNcNaNcOcaalcPatcQbLcRcScTatcUaNbLcVcWcXcYcWcZalaNatbibyatataiaiafafaaaaaaaa
-aaaaaaaaafaiatatcxbOayatcQaNaNdaaNdbaNdcbLdccacaddatdedfdgdfdhataNaNbLdicYcYcWcHalcmaNatbidjatataiaiafafaaaaaaaa
-aaaaabaaafaiatatcbcbdkataNcMaNaNalalbLbLbLbLaNaNdlataNaNdmcSdnatdoaNaNdpcWcGcGcGcGalbLatbidqatataiakafafaaaadraa
-aaaaaaaaafaiatatcxbOayataNaNaNaNaNaNdsdtaNdtaNaNcpatdudvdwaNdxatdyaNdzaNaNdAcIdAbLbLdBatdCdDatataiaiafafaaaabCaa
-aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatataiaiafafafaaaaaaaa
-aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaa
-aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafaiaiaiafafafaiaiaiaiaiaiaiafafafafaaaaaaaa
-aaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiakafafafaiaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafaaaadraa
-aaaaaaaaafagafafafafafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa
-aaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaapaaaaaaaaaaaaabaaapaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaadFaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaadFaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGaaaaaaaaaaaaabaa
-"}
+"aa" = (/turf/template_noop,/area/template_noop)
+"ab" = (/obj/effect/decal/remains,/turf/template_noop,/area/template_noop)
+"ac" = (/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/template_noop,/area/template_noop)
+"ad" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/template_noop)
+"ae" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/Rockybase)
+"af" = (/turf/template_noop,/area/submap/Rockybase)
+"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Rockybase)
+"ah" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/submap/Rockybase)
+"ai" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase)
+"aj" = (/obj/effect/decal/remains/robot,/turf/template_noop,/area/template_noop)
+"ak" = (/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/template_noop,/area/submap/Rockybase)
+"al" = (/turf/simulated/floor,/area/submap/Rockybase)
+"am" = (/obj/effect/decal/remains/posi,/turf/simulated/floor,/area/submap/Rockybase)
+"an" = (/obj/machinery/porta_turret/poi,/turf/simulated/floor,/area/submap/Rockybase)
+"ao" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
+"ap" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/template_noop)
+"aq" = (/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
+"ar" = (/obj/machinery/light,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
+"as" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase)
+"at" = (/turf/simulated/wall/r_wall,/area/submap/Rockybase)
+"au" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/submap/Rockybase)
+"av" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aw" = (/obj/effect/decal/remains/deer,/turf/template_noop,/area/template_noop)
+"ax" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"ay" = (/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"az" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/item/weapon/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"aA" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aB" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aD" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/pickaxe/plasmacutter,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aE" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aF" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aG" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aH" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aI" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aJ" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aK" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aL" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aM" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aN" = (/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aO" = (/obj/structure/table/standard,/obj/item/device/laptop,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aP" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aQ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aR" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aS" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aT" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aU" = (/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"aV" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"aW" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aX" = (/obj/structure/closet/crate/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aY" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"aZ" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"ba" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bb" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"be" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bf" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bg" = (/obj/machinery/vending/security,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bh" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"bi" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bj" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bk" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bl" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"bm" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"bn" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"bo" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bp" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bq" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"br" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bs" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bt" = (/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bu" = (/obj/effect/floor_decal/corner/red/border,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bv" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"bw" = (/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"bx" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle/pistol,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase)
+"by" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bz" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bA" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/mob/living/bot/farmbot{faction = "malf_drone"; name = "Mr. Weddleton"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bB" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bC" = (/obj/effect/decal/remains/posi,/turf/template_noop,/area/template_noop)
+"bD" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bE" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bF" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bG" = (/obj/structure/door_assembly,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bH" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bI" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb2,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bJ" = (/obj/effect/decal/mecha_wreckage/hoverpod,/turf/template_noop,/area/template_noop)
+"bK" = (/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bL" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bM" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bN" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bO" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bP" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bQ" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bR" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bS" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bT" = (/obj/effect/decal/remains,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bU" = (/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bV" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bW" = (/obj/item/mecha_parts/part/gygax_right_arm,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bY" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bZ" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ca" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cb" = (/turf/simulated/wall,/area/submap/Rockybase)
+"cc" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ce" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cf" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cg" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ch" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ci" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cj" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ck" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cl" = (/obj/structure/door_assembly,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cm" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
+"cn" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"co" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cp" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cq" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cr" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cs" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ct" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cu" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cv" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cw" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cx" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"cy" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"cz" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/obj/item/weapon/stock_parts/capacitor/adv,/obj/item/weapon/stock_parts/scanning_module/adv,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cC" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor,/area/submap/Rockybase)
+"cD" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cE" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cF" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
+"cG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
+"cH" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase)
+"cI" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
+"cJ" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cK" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"cL" = (/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cM" = (/obj/machinery/drone_fabricator{fabricator_tag = "Unknown"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cN" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cO" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cP" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cS" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cT" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/submap/Rockybase)
+"cU" = (/obj/machinery/vending/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cV" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
+"cX" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
+"cY" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
+"cZ" = (/obj/item/mecha_parts/part/gygax_armour,/turf/simulated/floor,/area/submap/Rockybase)
+"da" = (/obj/item/mecha_parts/chassis/gygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dc" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dd" = (/obj/machinery/vending/robotics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"de" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "Unknown APC"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"df" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dg" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dh" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"di" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
+"dj" = (/obj/item/mecha_parts/part/gygax_right_leg,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dk" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/mecha_parts/part/gygax_left_arm,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"dl" = (/obj/machinery/vending,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dn" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green,/turf/simulated/floor,/area/submap/Rockybase)
+"do" = (/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dp" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dq" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dr" = (/obj/effect/decal/cleanable/blood/oil,/turf/template_noop,/area/template_noop)
+"ds" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dt" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"du" = (/obj/structure/table/standard,/obj/item/stack/material/plasteel,/obj/item/stack/material/glass/reinforced,/obj/item/stack/material/phoron{amount = 25},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dv" = (/obj/structure/table/standard,/obj/item/stack/material/glass,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dw" = (/obj/structure/table/standard,/obj/item/mecha_parts/part/gygax_head,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dx" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dy" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dz" = (/obj/item/weapon/surgical/surgicaldrill,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dA" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dB" = (/obj/effect/decal/cleanable/dirt,/mob/living/bot/medbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dC" = (/obj/machinery/vending/hydroseeds,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dD" = (/obj/structure/closet/crate/secure/hydrosec,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 6},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"dE" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/gravemarker{dir = 1},/turf/template_noop,/area/template_noop)
+"dF" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/template_noop)
+"dG" = (/obj/effect/gibspawner/human,/turf/template_noop,/area/template_noop)
+
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaa
+aaaaaaaaaeafafafagafafafafagafafafafafaeafafafafafafafafafafafafafagafafafafafafafafafafafafaeafafafafafaaaaaaaa
+aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahafafafafafafafafafafafafafaaaaaaaa
+aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa
+aaaaaaaaafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafaaaaaaaa
+abaaaaaaafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafaaaaajaa
+aaaaaaaaafafaiaiaiaiaiaiakafafafaiaiaiaiaiafafafafafafafafalalamalalalafafafafafafafafafaiaiaiakafafafafaaaaaaaa
+aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafanalalaoalalalalalanafafafafafaiaiaiaiaiaiaiaiaiafaaaaaaaa
+aaaaaaapafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaqaqaraqaqaqaqaqasaraqaqaiaiaiaiaiaiaiaiaiaiaiaiaiafaaaaaaaa
+aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatauavavauatatatatatatatatatatatatataiaiaiaiafaaawaaaa
+aaaaaaaaafaiatataxayazataAaBaCaDaEaEaBaFaGaHaBaIatataJaKaLaMataNaNataOaPaQaRaSaTataUaVataWaXatataiaiaiafaaaaaaaa
+aaaaaaaaaiaiatataYayaZataEaEaEaEaEaEaEaEaEaEaEaEatatbaaNaNbbatbcaNatbdbebfaNaNbgataUbhatbibjatataiaiaiafaaaaaaaa
+aaaaaaaaaiaiatataYaybkataEblaEaEbmaEaBbnaBaHaBaFatatboaNbpbqataNaNatbrbsbtbtbubtbvbwbxatbibyatataiaiaiafaaaaaaaa
+aaaaaaabaiaiatatayayayatatatbzatatatatatatatatatatatatbzatatatavavatatatatatbzatatatatatbAbBatataiaiaiafaaaaaabC
+aaaaaaaaaiaiatatatbzatatbDbEbEbEbEbFbEbEbEbEbGbEbFbEbEbEbEbEbEbEbEbEbEbFbEbEbEbEbHbHbIatbibyatataiaiaiafaaaabJaa
+aaaaaaaaaiaiatatbcaNaNaNaNaNaNbKbLbLaNbMbNaNaNaNaNaNaNaNaNaNaNbLaNaNaNaNaNaNaNaNbKbLbLbzbibyatataiaiaiafaaaaaaaa
+aaaaaaaaafaiatatatbOatatbPbQbQbRbRbRbQbQbQbSaNalbTbUbQbVbQbRbRbRbQbQbQbQbQbUbQbQbQbQbWatbibBatataiaiaiafaaaaaaaa
+aaaaaaaaafaiatatbXaybYatatatatatatatatatatatalalatatatatbZatatatatcaatatatatatatatatatatbibyatataiaiaiafaaaaaaaa
+aaaaaaaaafaiatatcbcbayatcccdcecfcgchcicjckclalcmcnatcocpaNcqcratcscaaNctcucvbLaNaNaNcwatbibyatataiaiaiafaaaaaaaa
+aaaaaaaaafaiatatcxbOcyataNaNaNaNaNaNaNaNaNcacaalczataNaNcAcBcCatcDaNbLbLcEcFcGcHcIaNcJatbibBatataiaiaiagaaaaaaaa
+aaaaaaaaafaiatatcbcbcKataNcMaNaNcMaNaNcNaNcOcaalcPatcQbLcRcScTatcUaNbLcVcWcXcYcWcZalaNatbibyatataiaiafafaaaaaaaa
+aaaaaaaaafaiatatcxbOayatcQaNaNdaaNcLaNdcbLdccacaddatdedfdgdfdhataNaNbLdicYcYcWcHalcmaNatbidjatataiaiafafaaaaaaaa
+aaaaabaaafaiatatcbcbdkataNcMaNaNalalbLbLbLbLaNaNdlataNaNdmcSdnatdoaNaNdpcWcGcGcGcGalbLatbidqatataiakafafaaaadraa
+aaaaaaaaafaiatatcxbOayataNaNaNaNaNaNdsdtaNdtaNaNcpatdudvdwaNdxatdyaNdzaNaNdAcIdAbLbLdBatdCdDatataiaiafafaaaabCaa
+aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatataiaiafafafaaaaaaaa
+aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaa
+aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafaiaiaiafafafaiaiaiaiaiaiaiafafafafaaaaaaaa
+aaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiakafafafaiaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafaaaadraa
+aaaaaaaaafagafafafafafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa
+aaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaapaaaaaaaaaaaaabaaapaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaadFaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaadFaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGaaaaaaaaaaaaabaa
+"}
diff --git a/maps/submaps/surface_submaps/wilderness/spider1.dmm b/maps/submaps/surface_submaps/wilderness/spider1.dmm
index deb222d9de..1cd1705490 100644
--- a/maps/submaps/surface_submaps/wilderness/spider1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/spider1.dmm
@@ -3,10 +3,10 @@
"c" = (/turf/template_noop,/area/submap/spider1)
"d" = (/obj/structure/flora/tree/pine,/turf/template_noop,/area/submap/spider1)
"e" = (/obj/effect/spider/eggcluster/small/frost,/turf/template_noop,/area/submap/spider1)
-"f" = (/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/template_noop,/area/submap/spider1)
-"g" = (/mob/living/simple_animal/hostile/giant_spider/nurse,/turf/template_noop,/area/submap/spider1)
+"f" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/template_noop,/area/submap/spider1)
+"g" = (/mob/living/simple_mob/animal/giant_spider/nurse,/turf/template_noop,/area/submap/spider1)
"h" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/spider1)
-"i" = (/obj/effect/spider/cocoon,/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/template_noop,/area/submap/spider1)
+"i" = (/obj/effect/spider/cocoon,/mob/living/simple_mob/animal/giant_spider/frost,/turf/template_noop,/area/submap/spider1)
(1,1,1) = {"
aaaaaaaaaa
diff --git a/nano/templates/chem_master.tmpl b/nano/templates/chem_master.tmpl
index 8799bb05e0..b8b8300b4a 100644
--- a/nano/templates/chem_master.tmpl
+++ b/nano/templates/chem_master.tmpl
@@ -76,6 +76,7 @@
{{:helper.link('Create bottle (50 units max)', null, {'createbottle' : 1})}}
+ {{:helper.link('Create bouillon cube (60 units max)', null, {'createpill' : 1})}}
{{/if}}
{{/if}}
diff --git a/polaris.dme b/polaris.dme
index 91998cc4cd..4614a7bb9b 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -46,6 +46,7 @@
#include "code\__defines\MC.dm"
#include "code\__defines\misc.dm"
#include "code\__defines\mobs.dm"
+#include "code\__defines\objects.dm"
#include "code\__defines\planets.dm"
#include "code\__defines\process_scheduler.dm"
#include "code\__defines\qdel.dm"
@@ -180,28 +181,29 @@
#include "code\controllers\Processes\emergencyShuttle.dm"
#include "code\controllers\Processes\event.dm"
#include "code\controllers\Processes\game_master.dm"
-#include "code\controllers\Processes\inactivity.dm"
#include "code\controllers\Processes\mob.dm"
#include "code\controllers\Processes\nanoui.dm"
#include "code\controllers\Processes\radiation.dm"
-#include "code\controllers\Processes\sun.dm"
#include "code\controllers\Processes\supply.dm"
#include "code\controllers\Processes\ticker.dm"
#include "code\controllers\Processes\turf.dm"
#include "code\controllers\ProcessScheduler\core\process.dm"
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
+#include "code\controllers\subsystems\ai.dm"
#include "code\controllers\subsystems\air.dm"
#include "code\controllers\subsystems\airflow.dm"
#include "code\controllers\subsystems\atoms.dm"
#include "code\controllers\subsystems\circuits.dm"
#include "code\controllers\subsystems\garbage.dm"
#include "code\controllers\subsystems\holomaps.dm"
+#include "code\controllers\subsystems\inactivity.dm"
#include "code\controllers\subsystems\lighting.dm"
#include "code\controllers\subsystems\machines.dm"
#include "code\controllers\subsystems\orbits.dm"
#include "code\controllers\subsystems\overlays.dm"
#include "code\controllers\subsystems\planets.dm"
#include "code\controllers\subsystems\shuttles.dm"
+#include "code\controllers\subsystems\sun.dm"
#include "code\controllers\subsystems\time_track.dm"
#include "code\controllers\subsystems\timer.dm"
#include "code\controllers\subsystems\vote.dm"
@@ -470,6 +472,7 @@
#include "code\game\gamemodes\cult\narsie.dm"
#include "code\game\gamemodes\cult\ritual.dm"
#include "code\game\gamemodes\cult\runes.dm"
+#include "code\game\gamemodes\cult\soulstone.dm"
#include "code\game\gamemodes\cult\talisman.dm"
#include "code\game\gamemodes\cult\cultify\mob.dm"
#include "code\game\gamemodes\cult\cultify\obj.dm"
@@ -524,7 +527,6 @@
#include "code\game\gamemodes\technomancer\spell_objs_helpers.dm"
#include "code\game\gamemodes\technomancer\technomancer.dm"
#include "code\game\gamemodes\technomancer\assistance\assistance.dm"
-#include "code\game\gamemodes\technomancer\assistance\golem.dm"
#include "code\game\gamemodes\technomancer\devices\boots_of_speed.dm"
#include "code\game\gamemodes\technomancer\devices\disposable_teleporter.dm"
#include "code\game\gamemodes\technomancer\devices\gloves_of_regen.dm"
@@ -1282,6 +1284,22 @@
#include "code\modules\admin\view_variables\helpers.dm"
#include "code\modules\admin\view_variables\topic.dm"
#include "code\modules\admin\view_variables\view_variables.dm"
+#include "code\modules\ai\_defines.dm"
+#include "code\modules\ai\ai_holder.dm"
+#include "code\modules\ai\ai_holder_combat.dm"
+#include "code\modules\ai\ai_holder_communication.dm"
+#include "code\modules\ai\ai_holder_cooperation.dm"
+#include "code\modules\ai\ai_holder_debug.dm"
+#include "code\modules\ai\ai_holder_disabled.dm"
+#include "code\modules\ai\ai_holder_fleeing.dm"
+#include "code\modules\ai\ai_holder_follow.dm"
+#include "code\modules\ai\ai_holder_movement.dm"
+#include "code\modules\ai\ai_holder_pathfinding.dm"
+#include "code\modules\ai\ai_holder_targeting.dm"
+#include "code\modules\ai\interfaces.dm"
+#include "code\modules\ai\say_list.dm"
+#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm"
+#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm"
#include "code\modules\alarm\alarm.dm"
#include "code\modules\alarm\alarm_handler.dm"
#include "code\modules\alarm\atmosphere_alarm.dm"
@@ -1318,8 +1336,6 @@
#include "code\modules\blob2\blobs\normal.dm"
#include "code\modules\blob2\blobs\resource.dm"
#include "code\modules\blob2\blobs\shield.dm"
-#include "code\modules\blob2\mobs\blob_mob.dm"
-#include "code\modules\blob2\mobs\spore.dm"
#include "code\modules\blob2\overmind\overmind.dm"
#include "code\modules\blob2\overmind\powers.dm"
#include "code\modules\blob2\overmind\types.dm"
@@ -1959,56 +1975,101 @@
#include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm"
#include "code\modules\mob\living\silicon\robot\subtypes\syndicate.dm"
#include "code\modules\mob\living\simple_animal\corpse.dm"
-#include "code\modules\mob\living\simple_animal\simple_animal.dm"
-#include "code\modules\mob\living\simple_animal\simple_hud.dm"
-#include "code\modules\mob\living\simple_animal\aliens\alien.dm"
-#include "code\modules\mob\living\simple_animal\aliens\creature.dm"
-#include "code\modules\mob\living\simple_animal\aliens\drone.dm"
-#include "code\modules\mob\living\simple_animal\aliens\faithless.dm"
-#include "code\modules\mob\living\simple_animal\aliens\hivebot.dm"
-#include "code\modules\mob\living\simple_animal\aliens\mimic.dm"
-#include "code\modules\mob\living\simple_animal\aliens\shade.dm"
-#include "code\modules\mob\living\simple_animal\aliens\statue.dm"
-#include "code\modules\mob\living\simple_animal\animals\bat.dm"
-#include "code\modules\mob\living\simple_animal\animals\bear.dm"
-#include "code\modules\mob\living\simple_animal\animals\carp.dm"
-#include "code\modules\mob\living\simple_animal\animals\cat.dm"
-#include "code\modules\mob\living\simple_animal\animals\corgi.dm"
-#include "code\modules\mob\living\simple_animal\animals\crab.dm"
-#include "code\modules\mob\living\simple_animal\animals\farm_animals.dm"
-#include "code\modules\mob\living\simple_animal\animals\fish.dm"
-#include "code\modules\mob\living\simple_animal\animals\giant_spider.dm"
-#include "code\modules\mob\living\simple_animal\animals\goose.dm"
-#include "code\modules\mob\living\simple_animal\animals\lizard.dm"
-#include "code\modules\mob\living\simple_animal\animals\miscellaneous.dm"
-#include "code\modules\mob\living\simple_animal\animals\mouse.dm"
-#include "code\modules\mob\living\simple_animal\animals\parrot.dm"
-#include "code\modules\mob\living\simple_animal\animals\penguin.dm"
-#include "code\modules\mob\living\simple_animal\animals\spiderbot.dm"
-#include "code\modules\mob\living\simple_animal\animals\tomato.dm"
-#include "code\modules\mob\living\simple_animal\animals\tree.dm"
-#include "code\modules\mob\living\simple_animal\animals\worm.dm"
-#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\diyaab.dm"
-#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\savik.dm"
-#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\shantak.dm"
-#include "code\modules\mob\living\simple_animal\borer\borer.dm"
-#include "code\modules\mob\living\simple_animal\borer\borer_captive.dm"
-#include "code\modules\mob\living\simple_animal\borer\borer_powers.dm"
-#include "code\modules\mob\living\simple_animal\borer\say.dm"
-#include "code\modules\mob\living\simple_animal\constructs\constructs.dm"
-#include "code\modules\mob\living\simple_animal\constructs\soulstone.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\clown.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\head.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\mechamobs.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\pirate.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\russian.dm"
-#include "code\modules\mob\living\simple_animal\humanoids\syndicate.dm"
-#include "code\modules\mob\living\simple_animal\slime\ai.dm"
-#include "code\modules\mob\living\simple_animal\slime\combat.dm"
-#include "code\modules\mob\living\simple_animal\slime\death.dm"
-#include "code\modules\mob\living\simple_animal\slime\life.dm"
-#include "code\modules\mob\living\simple_animal\slime\slime.dm"
-#include "code\modules\mob\living\simple_animal\slime\subtypes.dm"
+#include "code\modules\mob\living\simple_mob\appearance.dm"
+#include "code\modules\mob\living\simple_mob\combat.dm"
+#include "code\modules\mob\living\simple_mob\defense.dm"
+#include "code\modules\mob\living\simple_mob\hands.dm"
+#include "code\modules\mob\living\simple_mob\life.dm"
+#include "code\modules\mob\living\simple_mob\on_click.dm"
+#include "code\modules\mob\living\simple_mob\simple_hud.dm"
+#include "code\modules\mob\living\simple_mob\simple_mob.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_powers.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\chicken.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\hunter.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lurker.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\nurse.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\pepper.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\phorogenic.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\thermic.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\tunneler.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\webslinger.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\crab.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\fish.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\lizard.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\misc.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\parrot.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\shantak.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\sif.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bats.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bear.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\combat_drone.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\golem.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\support.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\tank.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\combat_mecha.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\durand.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\hoverpod.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\marauder.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\mecha.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\odysseus.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\phazon.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\ripley.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\monitor_ward.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\ward.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\creature.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\faithless.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\_construct.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\artificer.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\harvester.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\shade.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\wraith.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\plant\tomato.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\plant\tree.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\slime.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\feral\feral.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\combat.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\consumption.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\defense.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\discipline.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm"
#include "code\modules\mob\living\voice\voice.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"
@@ -2213,7 +2274,6 @@
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
#include "code\modules\projectiles\guns\projectile\sniper.dm"
#include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm"
-#include "code\modules\projectiles\projectile\animate.dm"
#include "code\modules\projectiles\projectile\arc.dm"
#include "code\modules\projectiles\projectile\beams.dm"
#include "code\modules\projectiles\projectile\blob.dm"
diff --git a/sound/effects/break_stone.ogg b/sound/effects/break_stone.ogg
new file mode 100644
index 0000000000..711fd50d48
Binary files /dev/null and b/sound/effects/break_stone.ogg differ
diff --git a/sound/effects/servostep.ogg b/sound/effects/servostep.ogg
new file mode 100644
index 0000000000..9999b99ccb
Binary files /dev/null and b/sound/effects/servostep.ogg differ
diff --git a/sound/effects/suitstep1.ogg b/sound/effects/suitstep1.ogg
new file mode 100644
index 0000000000..fdc56bb9e4
Binary files /dev/null and b/sound/effects/suitstep1.ogg differ
diff --git a/sound/effects/suitstep2.ogg b/sound/effects/suitstep2.ogg
new file mode 100644
index 0000000000..17a528feeb
Binary files /dev/null and b/sound/effects/suitstep2.ogg differ
diff --git a/sound/machines/biogenerator_end.ogg b/sound/machines/biogenerator_end.ogg
new file mode 100644
index 0000000000..91ec8313fe
Binary files /dev/null and b/sound/machines/biogenerator_end.ogg differ
diff --git a/sound/machines/button.ogg b/sound/machines/button.ogg
new file mode 100644
index 0000000000..79b458317a
Binary files /dev/null and b/sound/machines/button.ogg differ
diff --git a/sound/machines/button1.ogg b/sound/machines/button1.ogg
new file mode 100644
index 0000000000..3499e2d172
Binary files /dev/null and b/sound/machines/button1.ogg differ
diff --git a/sound/machines/button2.ogg b/sound/machines/button2.ogg
new file mode 100644
index 0000000000..83970986e3
Binary files /dev/null and b/sound/machines/button2.ogg differ
diff --git a/sound/machines/button3.ogg b/sound/machines/button3.ogg
new file mode 100644
index 0000000000..a28da269ad
Binary files /dev/null and b/sound/machines/button3.ogg differ
diff --git a/sound/machines/button4.ogg b/sound/machines/button4.ogg
new file mode 100644
index 0000000000..9fceed1611
Binary files /dev/null and b/sound/machines/button4.ogg differ
diff --git a/sound/machines/switch1.ogg b/sound/machines/switch1.ogg
new file mode 100644
index 0000000000..96f2a0e19c
Binary files /dev/null and b/sound/machines/switch1.ogg differ
diff --git a/sound/machines/switch2.ogg b/sound/machines/switch2.ogg
new file mode 100644
index 0000000000..346ab69a32
Binary files /dev/null and b/sound/machines/switch2.ogg differ
diff --git a/sound/machines/switch3.ogg b/sound/machines/switch3.ogg
new file mode 100644
index 0000000000..1529b0009a
Binary files /dev/null and b/sound/machines/switch3.ogg differ
diff --git a/sound/machines/switch4.ogg b/sound/machines/switch4.ogg
new file mode 100644
index 0000000000..cd51d4deb0
Binary files /dev/null and b/sound/machines/switch4.ogg differ
diff --git a/sound/mecha/duranddefencemode.ogg b/sound/mecha/duranddefencemode.ogg
new file mode 100644
index 0000000000..5ae1ea60da
Binary files /dev/null and b/sound/mecha/duranddefencemode.ogg differ
diff --git a/sound/mecha/gasconnected.ogg b/sound/mecha/gasconnected.ogg
new file mode 100644
index 0000000000..c1eb9f3d73
Binary files /dev/null and b/sound/mecha/gasconnected.ogg differ
diff --git a/sound/mecha/gasdisconnected.ogg b/sound/mecha/gasdisconnected.ogg
new file mode 100644
index 0000000000..62fa87fdee
Binary files /dev/null and b/sound/mecha/gasdisconnected.ogg differ
diff --git a/sound/mecha/heavylightswitch.ogg b/sound/mecha/heavylightswitch.ogg
new file mode 100644
index 0000000000..aa54dc3a29
Binary files /dev/null and b/sound/mecha/heavylightswitch.ogg differ
diff --git a/sound/mecha/mech_reload_default.ogg b/sound/mecha/mech_reload_default.ogg
new file mode 100644
index 0000000000..74a07d285b
Binary files /dev/null and b/sound/mecha/mech_reload_default.ogg differ
diff --git a/sound/mecha/mechanical_toggle.ogg b/sound/mecha/mechanical_toggle.ogg
new file mode 100644
index 0000000000..707ae24952
Binary files /dev/null and b/sound/mecha/mechanical_toggle.ogg differ