Merge pull request #7 from ParadiseSS13/master

Merge from Master
This commit is contained in:
Fox-McCloud
2014-12-02 23:22:10 -05:00
44 changed files with 3268 additions and 3104 deletions
@@ -66,6 +66,8 @@
continue
if(!alarm.remote_control)
continue
if(alarm.hidden)
continue
var/turf/pos = get_turf(alarm)
var/list/alarm_data=list()
alarm_data["ID"]="\ref[alarm]"
+4
View File
@@ -64,6 +64,10 @@
aiCamera.captureimage(A, usr)
return
if(waypoint_mode)
set_waypoint(A)
waypoint_mode = 0
return
/*
AI restrained() currently does nothing
if(restrained())
+18 -1
View File
@@ -21,6 +21,7 @@ datum/controller/game_controller
var/mobs_cost = 0
var/diseases_cost = 0
var/machines_cost = 0
var/aibots_cost = 0
var/objects_cost = 0
var/networks_cost = 0
var/powernets_cost = 0
@@ -188,6 +189,13 @@ datum/controller/game_controller/proc/process()
processMachines()
machines_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
//BOTS
timer = world.timeofday
process_bots()
aibots_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
//OBJECTS
@@ -244,7 +252,7 @@ datum/controller/game_controller/proc/process()
gc_cost = (world.timeofday - timer) / 10
//TIMING
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + puddles_cost + ticker_cost + gc_cost
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + aibots_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + puddles_cost + ticker_cost + gc_cost
var/end_time = world.timeofday
if(end_time < start_time) //why not just use world.time instead?
@@ -278,6 +286,15 @@ datum/controller/game_controller/proc/process()
Machinery.removeAtProcessing()
/datum/controller/game_controller/proc/process_bots()
for(var/obj/machinery/bot/Bot in aibots)
if(!Bot.gc_destroyed)
last_thing_processed = Bot.type
spawn(0)
Bot.bot_process()
continue
aibots -= Bot
/datum/controller/game_controller/proc/processObjects()
for (var/obj/Object in processing_objects)
if (Object && Object.loc)
+1
View File
@@ -870,6 +870,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/storage/pill_bottle/happy,
/obj/item/weapon/storage/pill_bottle/random_drug_bottle,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,
/obj/item/weapon/grenade/smokebomb,
/obj/item/clothing/mask/cigarette/cigar/cohiba,
/obj/item/weapon/reagent_containers/food/drinks/cans/ale,
+8 -1
View File
@@ -172,7 +172,7 @@ proc/AStar(start,end,adjacent,dist,maxnodes,maxnodedepth = 30,mintargetdist,minn
//then run the main loop
while(!open.IsEmpty() && !path)
{
//get the lower f node on the open list
//get the lower f node on the open list
cur = open.Dequeue() //get the lower f turf in the open list
closed.Add(cur.source) //and tell we've processed it
@@ -236,3 +236,10 @@ proc/AStar(start,end,adjacent,dist,maxnodes,maxnodedepth = 30,mintargetdist,minn
path.Swap(i,path.len-i+1)
return path
//wrapper that returns an empty list if A* failed to find a path
/proc/get_path_to(var/start,var/end,var/adjacent,var/dist,var/maxnodes,var/maxnodedepth = 30,var/mintargetdist,var/minnodedist,id=null, var/turf/exclude=null)
var/list/path = AStar(start, end, adjacent, dist, maxnodes, maxnodedepth, mintargetdist, minnodedist,id, exclude)
if(!path)
path = list()
return path
+36 -2
View File
@@ -61,6 +61,33 @@
*/
/* the radio controller is a confusing piece of shit and didnt work
so i made radios not use the radio controller.
*/
var/list/all_radios = list()
/proc/add_radio(var/obj/item/radio, freq)
if(!freq || !radio)
return
if(!all_radios["[freq]"])
all_radios["[freq]"] = list(radio)
return freq
all_radios["[freq]"] |= radio
return freq
/proc/remove_radio(var/obj/item/radio, freq)
if(!freq || !radio)
return
if(!all_radios["[freq]"])
return
all_radios["[freq]"] -= radio
/proc/remove_radio_all(var/obj/item/radio)
for(var/freq in all_radios)
all_radios["[freq]"] -= radio
/*
Frequency range: 1200 to 1600
Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking)
@@ -108,7 +135,8 @@ var/list/radiochannels = list(
"Deathsquad" = 1441,
"Syndicate" = 1213,
"Supply" = 1347,
"Service" = 1349
"Service" = 1349,
"AI Private" = 1447
)
//depenging helpers
var/list/DEPT_FREQS = list(1351, 1355, 1357, 1359, 1213, 1443, 1441, 1347, 1349)
@@ -127,6 +155,9 @@ var/const/MED_FREQ = 1355
var/const/SUP_FREQ = 1347
var/const/SRV_FREQ = 1349
// other channels
var/const/AIPRIV_FREQ = 1447
#define TRANSMISSION_WIRE 0
#define TRANSMISSION_RADIO 1
@@ -140,6 +171,9 @@ var/const/RADIO_AIRLOCK = "6"
var/const/RADIO_SECBOT = "7"
var/const/RADIO_MULEBOT = "8"
var/const/RADIO_MAGNETS = "9"
var/const/RADIO_CLEANBOT = "10"
var/const/RADIO_FLOORBOT = "11"
var/const/RADIO_MEDBOT = "12"
var/global/datum/controller/radio/radio_controller
@@ -150,7 +184,7 @@ var/global/datum/controller/radio/radio_controller
datum/controller/radio
var/list/datum/radio_frequency/frequencies = list()
proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null)
proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null)
var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text]
+3 -1
View File
@@ -82,7 +82,7 @@
var/datum/radio_frequency/radio_connection
var/list/TLV = list()
var/hidden = 0
/obj/machinery/alarm/server
preset = AALARM_PRESET_SERVER
@@ -626,6 +626,8 @@
// Not sent from atmos console AND
// Not silicon AND locked.
data["locked"]=!fromAtmosConsole && (!(istype(user, /mob/living/silicon)) && locked)
if(fromAtmosConsole && remote_control < 2)
data["locked"] = 1
data["rcon"]=rcon_setting
data["target_temp"] = target_temperature - T0C
data["atmos_alarm"] = alarm_area.atmosalm
+681 -59
View File
@@ -1,11 +1,11 @@
// AI (i.e. game AI, not the AI player) controlled bots
/obj/machinery/bot
icon = 'icons/obj/aibots.dmi'
layer = MOB_LAYER
luminosity = 3
use_power = 0
var/obj/item/weapon/card/id/botcard // the ID card that the bot "holds"
var/list/prev_access = list()
var/on = 1
var/health = 0 //do not forget to set health for your bot!
var/maxhealth = 0
@@ -14,8 +14,74 @@
var/open = 0//Maint panel
var/locked = 1
var/hacked = 0 //Used to differentiate between being hacked by silicons and emagged by humans.
var/text_hack = "" //Custom text returned to a silicon upon hacking a bot.
var/text_dehack = "" //Text shown when resetting a bots hacked status to normal.
var/text_dehack_fail = "" //Shown when a silicon tries to reset a bot emagged with the emag item, which cannot be reset.
var/declare_message = "" //What the bot will display to the HUD user.
var/frustration = 0 //Used by some bots for tracking failures to reach their target.
var/speed = 2 //The speed at which the bot moves, or the number of times it moves per process() tick.
var/turf/ai_waypoint //The end point of a bot's path, or the target location.
var/list/path = list() //List of turfs through which a bot 'steps' to reach the waypoint.
var/pathset = 0
var/list/ignore_list = list() //List of unreachable targets for an ignore-list enabled bot to ignore.
var/mode = 0 //Standardizes the vars that indicate the bot is busy with its function.
var/tries = 0 //Number of times the bot tried and failed to move.
var/remote_disabled = 0 //If enabled, the AI cannot *Remotely* control a bot. It can still control it through cameras.
var/mob/living/silicon/ai/calling_ai //Links a bot to the AI calling it.
var/obj/item/device/radio/Radio //The bot's radio, for speaking to people.
var/radio_frequency //The bot's default radio speaking freqency. Recommended to be on a department frequency.
//var/emagged = 0 //Urist: Moving that var to the general /bot tree as it's used by most bots
var/auto_patrol = 0// set to make bot automatically patrol
var/turf/patrol_target // this is turf to navigate to (location of beacon)
var/turf/summon_target // The turf of a user summoning a bot.
var/new_destination // pending new destination (waiting for beacon response)
var/destination // destination description tag
var/next_destination // the next destination in the patrol route
var/blockcount = 0 //number of times retried a blocked path
var/awaiting_beacon = 0 // count of pticks awaiting a beacon response
var/nearest_beacon // the nearest beacon's tag
var/turf/nearest_beacon_loc // the nearest beacon's location
var/beacon_freq = 1445 // navigation beacon frequency
var/control_freq = 1447 // bot control frequency
var/bot_filter // The radio filter the bot uses to identify itself on the network.
var/bot_type = 0 //The type of bot it is, for radio control.
#define SEC_BOT 1 // Secutritrons (Beepsky) and ED-209s
#define MULE_BOT 2 // MULEbots
#define FLOOR_BOT 3 // Floorbots
#define CLEAN_BOT 4 // Cleanbots
#define MED_BOT 5 // Medibots
#define DEFAULT_SCAN_RANGE 7 //default view range for finding targets.
//Mode defines
#define BOT_IDLE 0 // idle
#define BOT_HUNT 1 // found target, hunting
#define BOT_PREP_ARREST 2 // at target, preparing to arrest
#define BOT_ARREST 3 // arresting target
#define BOT_START_PATROL 4 // start patrol
#define BOT_PATROL 5 // patrolling
#define BOT_SUMMON 6 // summoned by PDA
#define BOT_CLEANING 7 // cleaning (cleanbots)
#define BOT_REPAIRING 8 // repairing hull breaches (floorbots)
#define BOT_MOVING 9 // for clean/floor bots, when moving.
#define BOT_HEALING 10 // healing people (medbots)
#define BOT_RESPONDING 11 // responding to a call from the AI
#define BOT_LOADING 12 // loading/unloading
#define BOT_DELIVER 13 // moving to deliver
#define BOT_GO_HOME 14 // returning to home
#define BOT_BLOCKED 15 // blocked
#define BOT_NAV 16 // computing navigation
#define BOT_WAIT_FOR_NAV 17 // waiting for nav computation
#define BOT_NO_ROUTE 18 // no destination beacon found (or no route)
var/list/mode_name = list("In Pursuit","Preparing to Arrest","Arresting","Beginning Patrol","Patrolling","Summoned by PDA", \
"Cleaning", "Repairing", "Proceeding to work site","Healing","Responding","Loading/Unloading","Navigating to Delivery Location","Navigating to Home", \
"Waiting for clear path","Calculating navigation path","Pinging beacon network","Unable to reach destination")
//This holds text for what the bot is mode doing, reported on the AI's bot control interface.
/obj/machinery/bot/proc/turn_on()
if(stat) return 0
@@ -26,109 +92,209 @@
/obj/machinery/bot/proc/turn_off()
on = 0
SetLuminosity(0)
bot_reset() //Resets an AI's call, should it exist.
/obj/machinery/bot/New()
..()
aibots += src //Global bot list
botcard = new /obj/item/weapon/card/id(src)
set_custom_texts()
Radio = new /obj/item/device/radio(src)
Radio.listening = 0 //Makes bot radios transmit only so no one hears things while adjacent to one.
/obj/machinery/bot/proc/add_to_beacons(bot_filter) //Master filter control for bots. Must be placed in the bot's local New() to support map spawned bots.
spawn(20)
if(radio_controller)
radio_controller.add_object(src, beacon_freq, RADIO_NAVBEACONS)
if(bot_filter)
radio_controller.add_object(src, control_freq, bot_filter)
/obj/machinery/bot/proc/explode()
aibots -= src
qdel(src)
/obj/machinery/bot/proc/healthcheck()
if (src.health <= 0)
src.explode()
if (health <= 0)
explode()
/obj/machinery/bot/proc/Emag(mob/user as mob)
if(locked && user)
/obj/machinery/bot/proc/Emag(mob/user as mob) //Master Emag proc. Ensure this is called in your bot before setting unique functions.
if(locked) //First emag application unlocks the bot's interface. Apply a screwdriver to use the emag again.
locked = 0
emagged = 1
user << "<span class='warning'>You bypass [src]'s controls.</span>"
if((!locked && open) || !user) //Ion storm does not require unlocking for emagging
if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging.
emagged = 2
remote_disabled = 1 //Manually emagging the bot locks out the AI built in panel.
locked = 1 //Access denied forever!
bot_reset()
turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP.
else //Bot is unlocked, but the maint panel has not been opened with a screwdriver yet.
user << "<span class='notice'>You need to open maintenance panel first.</span>"
/obj/machinery/bot/examine()
set src in view()
/obj/machinery/bot/examine(mob/user)
..()
if (src.health < maxhealth)
if (src.health > maxhealth/3)
usr << "<span class='warning'>[src]'s parts look loose.</span>"
if (health < maxhealth)
if (health > maxhealth/3)
user << "<span class='danger'>[src]'s parts look loose.</span>"
else
usr << "<span class='danger'>[src]'s parts look very loose!</span>"
return
user << "<span class='danger'>[src]'s parts look very loose.</span>"
else
user << "[src] is in pristine condition."
/obj/machinery/bot/attack_alien(var/mob/living/carbon/alien/user as mob)
src.health -= rand(15,30)*brute_dam_coeff
src.visible_message("\red <B>[user] has slashed [src]!</B>")
playsound(src.loc, 'sound/weapons/slice.ogg', 25, 1, -1)
health -= rand(15,30)*brute_dam_coeff
visible_message("<span class='userdanger'>[user] has slashed [src]!</span>")
playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
if(prob(10))
new /obj/effect/decal/cleanable/oil(src.loc)
new /obj/effect/decal/cleanable/oil(loc)
healthcheck()
/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0) return
src.health -= M.melee_damage_upper
src.visible_message("\red <B>[M] has [M.attacktext] [src]!</B>")
add_logs(M, src, "attacked")
if(M.melee_damage_upper == 0)
return
health -= M.melee_damage_upper
visible_message("<span class='userdanger'>[M] has [M.attacktext] [src]!</span>")
add_logs(M, src, "attacked", admin=0)
if(prob(10))
new /obj/effect/decal/cleanable/oil(src.loc)
new /obj/effect/decal/cleanable/oil(loc)
healthcheck()
/obj/machinery/bot/Topic(href, href_list) //Master Topic to handle common functions.
. = ..()
if (.)
return
if(topic_denied(usr))
usr << "<span class='warning'>[src]'s interface is not responding!</span>"
href_list = list()
return
usr.set_machine(src)
add_fingerprint(usr)
if((href_list["power"]) && (allowed(usr) || !locked))
if (on)
turn_off()
else
turn_on()
switch(href_list["operation"])
if("patrol")
auto_patrol = !auto_patrol
mode = BOT_IDLE
if("remote")
remote_disabled = !remote_disabled
if("hack")
if(emagged != 2)
emagged = 2
hacked = 1
locked = 1
usr << "<span class='warning'>[text_hack]</span>"
bot_reset()
else if(!hacked)
usr << "<span class='userdanger'>[text_dehack_fail]</span>"
else
emagged = 0
hacked = 0
usr << "<span class='notice'>[text_dehack]</span>"
bot_reset()
updateUsrDialog()
/obj/machinery/bot/proc/topic_denied(mob/user) //Access check proc for bot topics! Remember to place in a bot's individual Topic if desired.
// 0 for access, 1 for denied.
if(emagged == 2) //An emagged bot cannot be controlled by humans, silicons can if one hacked it.
if(!hacked) //Manually emagged by a human - access denied to all.
return 1
else if(!issilicon(user)) //Bot is hacked, so only silicons are allowed access.
return 1
else
return 0
/obj/machinery/bot/proc/bot_process() //Master process which handles code common across most bots.
set background = BACKGROUND_ENABLED
if(!on)
return
switch(mode) //High-priority overrides are processed first. Bots can do nothing else while under direct command.
if(BOT_RESPONDING) //Called by the AI.
call_mode()
return
if(BOT_SUMMON) //Called by PDA
bot_summon()
return
return 1 //Successful completion. Used to prevent child process() continuing if this one is ended early.
/obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver))
if(!locked)
open = !open
user << "<span class='notice'>Maintenance panel is now [src.open ? "opened" : "closed"].</span>"
else if(istype(W, /obj/item/weapon/weldingtool))
if(health < maxhealth)
if(open)
health = min(maxhealth, health+10)
user.visible_message("\red [user] repairs [src]!","\blue You repair [src]!")
else
user << "<span class='notice'>Unable to repair with the maintenance panel closed.</span>"
user << "<span class='notice'>Maintenance panel is now [open ? "opened" : "closed"].</span>"
else
user << "<span class='notice'>[src] does not need a repair.</span>"
user << "<span class='warning'>Maintenance panel is locked.</span>"
else if (istype(W, /obj/item/weapon/card/emag) && emagged < 2)
Emag(user)
else
if(hasvar(W,"force") && hasvar(W,"damtype"))
switch(W.damtype)
if("fire")
src.health -= W.force * fire_dam_coeff
if("brute")
src.health -= W.force * brute_dam_coeff
..()
healthcheck()
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
if(health >= maxhealth)
user << "<span class='warning'>[src] does not need a repair.</span>"
return
if(!open)
user << "<span class='warning'>Unable to repair with the maintenance panel closed.</span>"
return
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
health = min(maxhealth, health+10)
user.visible_message("<span class='notice'>[user] repairs [src]!</span>","<span class='notice'>You repair [src]!</span>")
else
user << "<span class='warning'>The welder must be on for this task.</span>"
else
..()
if(W.force) //if force is non-zero
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
switch(W.damtype)
if("fire")
health -= W.force * fire_dam_coeff
s.start()
if("brute")
health -= W.force * brute_dam_coeff
s.start()
..()
healthcheck()
/obj/machinery/bot/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
/obj/machinery/bot/meteorhit()
src.explode()
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
health -= Proj.damage
if(prob(75) && Proj.damage > 0)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
..()
healthcheck()
return
/obj/machinery/bot/blob_act()
src.health -= rand(20,40)*fire_dam_coeff
health -= rand(20,40)*fire_dam_coeff
healthcheck()
return
/obj/machinery/bot/ex_act(severity)
switch(severity)
if(1.0)
src.explode()
explode()
return
if(2.0)
src.health -= rand(5,10)*fire_dam_coeff
src.health -= rand(10,20)*brute_dam_coeff
health -= rand(5,10)*fire_dam_coeff
health -= rand(10,20)*brute_dam_coeff
healthcheck()
return
if(3.0)
if (prob(50))
src.health -= rand(1,5)*fire_dam_coeff
src.health -= rand(1,5)*brute_dam_coeff
health -= rand(1,5)*fire_dam_coeff
health -= rand(1,5)*brute_dam_coeff
healthcheck()
return
return
@@ -136,7 +302,7 @@
/obj/machinery/bot/emp_act(severity)
var/was_on = on
stat |= EMPED
var/obj/effect/overlay/pulse2 = new/obj/effect/overlay ( src.loc )
var/obj/effect/overlay/pulse2 = new/obj/effect/overlay ( loc )
pulse2.icon = 'icons/effects/effects.dmi'
pulse2.icon_state = "empdisable"
pulse2.name = "emp sparks"
@@ -152,15 +318,471 @@
if (was_on)
turn_on()
/obj/machinery/bot/proc/hack(mob/user)
var/hack
if(issilicon(user)) //Allows silicons to toggle the emag status of a bot.
hack += "[emagged == 2 ? "Software compromised! Unit may exhibit dangerous or erratic behavior." : "Unit operating normally. Release safety lock?"]<BR>"
hack += "Harm Prevention Safety System: <A href='?src=\ref[src];operation=hack'>[emagged ? "<span class='bad'>DANGER</span>" : "Engaged"]</A><BR>"
else if(!locked) //Humans with access can use this option to hide a bot from the AI's remote control panel and PDA control.
hack += "Remote network control radio: <A href='?src=\ref[src];operation=remote'>[remote_disabled ? "Disconnected" : "Connected"]</A><BR><BR>"
return hack
/obj/machinery/bot/proc/set_custom_texts() //Superclass for setting hack texts. Appears only if a set is not given to a bot locally.
text_hack = "You hack [name]."
text_dehack = "You reset [name]."
text_dehack_fail = "You fail to reset [name]."
/obj/machinery/bot/attack_ai(mob/user as mob)
src.add_hiddenprint(user)
src.attack_hand(user)
attack_hand(user)
/obj/machinery/bot/proc/speak(var/message)
if((!src.on) || (!message))
/obj/machinery/bot/proc/speak(var/message, freq) //Pass a message to have the bot say() it. Pass a frequency to say it on the radio.
if((!on) || (!message))
return
for(var/mob/O in hearers(src, null))
O.show_message("<span class='game say'><span class='name'>[src]</span> beeps, \"[message]\"</span>",2)
if(freq)
return
// Commenting out the radio code until our say code's compatible with /tg/'s
/* Radio.set_frequency(radio_frequency)
Radio.talk_into_atom(src, message, radio_frequency) */
else
for(var/mob/O in hearers(src, null))
O.show_message("<span class='game say'><span class='name'>[src]</span> beeps, \"[message]\"</span>",2)
return
//Generalized behavior code, override where needed!
/*
scan() will search for a given type (such as turfs, human mobs, or objects) in the bot's view range, and return a single result.
Arguments: The object type to be searched (such as "/mob/living/carbon/human"), the old scan result to be ignored, if one exists,
and the view range, which defaults to 7 (full screen) if an override is not passed.
If the bot maintains an ignore list, it is also checked here.
Example usage: patient = scan(/mob/living/carbon/human, oldpatient, 1)
The proc would return a human next to the bot to be set to the patient var.
Pass the desired type path itself, declaring a temporary var beforehand is not required.
*/
obj/machinery/bot/proc/scan(var/scan_type, var/old_target, var/scan_range)
var/final_result
for (var/scan in view (scan_range ? scan_range : DEFAULT_SCAN_RANGE, src) ) //Search for something in range!
if(!istype(scan, scan_type)) //Check that the thing we found is the type we want!
continue //If not, keep searching!
if( !(scan in ignore_list) && !(scan in old_target) ) //Filter for blacklisted elements, usually unreachable or previously processed oness
var/scan_result = process_scan(scan) //Some bots may require additional processing when a result is selected.
if( scan_result )
final_result = scan_result
else
continue //The current element failed assessment, move on to the next.
return final_result
//When the scan finds a target, run bot specific processing to select it for the next step. Empty by default.
obj/machinery/bot/proc/process_scan(var/scan_target)
return scan_target
/obj/machinery/bot/proc/add_to_ignore(var/subject)
if(ignore_list.len < 50) //This will help keep track of them, so the bot is always trying to reach a blocked spot.
ignore_list |= subject
else if (ignore_list.len >= subject) //If the list is full, insert newest, delete oldest.
ignore_list -= ignore_list[1]
ignore_list |= subject
/*
Movement proc for stepping a bot through a path generated through A-star.
Pass a positive integer as an argument to override a bot's default speed.
*/
obj/machinery/bot/proc/bot_move(var/dest, var/move_speed)
if(!dest || !path || path.len == 0) //A-star failed or a path/destination was not set.
path = list()
return 0
if(get_turf(src) == get_turf(dest)) //We have arrived, no need to move again.
return 1
var/success
var/step_count = move_speed ? move_speed : speed //If a value is passed into move_speed, use that instead of the default speed var.
if(step_count >= 1 && tries < 4)
for(step_count, step_count >= 1,step_count--)
success = bot_step(dest)
if (success)
tries = 0
else
tries++
break
sleep(4)
else
return 0
return 1
obj/machinery/bot/proc/bot_step(var/dest)
if(path && path.len > 1)
step_to(src, path[1])
if(get_turf(src) == path[1]) //Successful move
path -= path[1]
else
return 0
else if(path.len == 1)
step_to(src, dest)
path = list()
return 1
/obj/machinery/bot/proc/check_bot_access()
if(mode != BOT_SUMMON && mode != BOT_RESPONDING)
botcard.access = prev_access
/obj/machinery/bot/proc/call_bot(var/caller, var/turf/waypoint)
bot_reset() //Reset a bot before setting it to call mode.
var/area/end_area = get_area(waypoint)
//For giving the bot temporary all-access.
var/obj/item/weapon/card/id/all_access = new /obj/item/weapon/card/id
var/datum/job/captain/All = new/datum/job/captain
all_access.access = All.get_access()
path = AStar(src, waypoint, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 200, id=all_access)
calling_ai = caller //Link the AI to the bot!
ai_waypoint = waypoint
if(path && path.len) //Ensures that a valid path is calculated!
if(!on)
turn_on() //Saves the AI the hassle of having to activate a bot manually.
botcard = all_access //Give the bot all-access while under the AI's command.
calling_ai << "<span class='notice'>\icon[src] [name] called to [end_area.name]. [path.len-1] meters to destination.</span>"
pathset = 1
mode = BOT_RESPONDING
tries = 0
else
calling_ai << "<span class='danger'>Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.</span>"
calling_ai = null
path = list()
/obj/machinery/bot/proc/call_mode() //Handles preparing a bot for a call, as well as calling the move proc.
//Handles the bot's movement during a call.
var/success = bot_move(ai_waypoint, 3)
if (!success)
if(calling_ai)
calling_ai << "\icon[src] [get_turf(src) == ai_waypoint ? "<span class='notice'>[src] successfully arrived to waypoint.</span>" : "<span class='danger'>[src] failed to reach waypoint.</span>"]"
calling_ai = null
bot_reset()
obj/machinery/bot/proc/bot_reset()
if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot.
calling_ai << "<span class='danger'>Call command to a bot has been reset.</span>"
calling_ai = null
path = list()
summon_target = null
pathset = 0
botcard.access = prev_access
tries = 0
mode = BOT_IDLE
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Patrol and summon code!
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/obj/machinery/bot/proc/bot_patrol()
patrol_step()
spawn(5)
if(mode == BOT_PATROL)
patrol_step()
return
obj/machinery/bot/proc/start_patrol()
if(tries >= 4) //Bot is trapped, so stop trying to patrol.
auto_patrol = 0
tries = 0
speak("Unable to start patrol.")
return
if(!auto_patrol) //A bot not set to patrol should not be patrolling.
mode = BOT_IDLE
return
if(patrol_target) // has patrol target
spawn(0)
calc_path() // Find a route to it
if(path.len == 0)
patrol_target = 0
return
mode = BOT_PATROL
else // no patrol target, so need a new one
find_patrol_target()
speak("Engaging patrol mode.")
tries++
return
// perform a single patrol step
/obj/machinery/bot/proc/patrol_step()
if(loc == patrol_target) // reached target
at_patrol_target()
return
else if(path.len > 0 && patrol_target) // valid path
var/turf/next = path[1]
if(next == loc)
path -= next
return
var/moved = bot_move(patrol_target)//step_towards(src, next) // attempt to move
if(moved) // successful move
blockcount = 0
else // failed to move
blockcount++
if(blockcount > 5) // attempt 5 times before recomputing
// find new path excluding blocked turf
spawn(2)
calc_path(next)
if(path.len == 0)
find_patrol_target()
else
blockcount = 0
tries = 0
return
return
else // no path, so calculate new one
mode = BOT_START_PATROL
return
// finds a new patrol target
/obj/machinery/bot/proc/find_patrol_target()
send_status()
if(awaiting_beacon) // awaiting beacon response
awaiting_beacon++
if(awaiting_beacon > 5) // wait 5 secs for beacon response
find_nearest_beacon() // then go to nearest instead
return
if(next_destination)
set_destination(next_destination)
else
find_nearest_beacon()
return
// finds the nearest beacon to self
// signals all beacons matching the patrol code
/obj/machinery/bot/proc/find_nearest_beacon()
nearest_beacon = null
new_destination = "__nearest__"
post_signal(beacon_freq, "findbeacon", "patrol")
awaiting_beacon = 1
spawn(10)
awaiting_beacon = 0
if(nearest_beacon)
set_destination(nearest_beacon)
tries = 0
else
auto_patrol = 0
mode = BOT_IDLE
speak("Disengaging patrol mode.")
send_status()
/obj/machinery/bot/proc/at_patrol_target()
find_patrol_target()
return
// sets the current destination
// signals all beacons matching the patrol code
// beacons will return a signal giving their locations
/obj/machinery/bot/proc/set_destination(var/new_dest)
new_destination = new_dest
post_signal(beacon_freq, "findbeacon", "patrol")
awaiting_beacon = 1
// receive a radio signal
// used for beacon reception
/obj/machinery/bot/receive_signal(datum/signal/signal)
//log_admin("DEBUG \[[// world.timeofday]\]: /obj/machinery/bot/receive_signal([signal.debug_print()])")
if(!on)
return
/*
if(!signal.data["beacon"])
for(var/x in signal.data)
world << "* [x] = [signal.data[x]]"
*/
var/recv = signal.data["command"]
// process all-bot input
if(recv=="bot_status")
send_status()
// check to see if we are the commanded bot
if(signal.data["active"] == src)
if(emagged == 2 || remote_disabled) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands.
return
// process control input
switch(recv)
if("stop")
bot_reset() //HOLD IT!!
auto_patrol = 0
return
if("go")
auto_patrol = 1
return
if("summon")
bot_reset()
var/list/user_access = signal.data["useraccess"]
summon_target = signal.data["target"] //Location of the user
if(user_access.len != 0)
botcard.access = user_access + prev_access //Adds the user's access, if any.
mode = BOT_SUMMON
calc_summon_path()
speak("Responding."/*, radio_frequency*/)
return
// receive response from beacon
recv = signal.data["beacon"]
var/valid = signal.data["patrol"]
if(!recv || !valid)
return
if(recv == new_destination) // if the recvd beacon location matches the set destination
// the we will navigate there
destination = new_destination
patrol_target = signal.source.loc
next_destination = signal.data["next_patrol"]
awaiting_beacon = 0
// if looking for nearest beacon
else if(new_destination == "__nearest__")
var/dist = get_dist(src,signal.source.loc)
if(nearest_beacon)
// note we ignore the beacon we are located at
if(dist>1 && dist<get_dist(src,nearest_beacon_loc))
nearest_beacon = recv
nearest_beacon_loc = signal.source.loc
return
else
return
else if(dist > 1)
nearest_beacon = recv
nearest_beacon_loc = signal.source.loc
return
// send a radio signal with a single data key/value pair
/obj/machinery/bot/proc/post_signal(var/freq, var/key, var/value)
post_signal_multiple(freq, list("[key]" = value) )
// send a radio signal with multiple data key/values
/obj/machinery/bot/proc/post_signal_multiple(var/freq, var/list/keyval)
if(!z || z != 1) //Bot control will only work on station.
return
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
// for(var/key in keyval)
// signal.data[key] = keyval[key]
signal.data = keyval
// world << "sent [key],[keyval[key]] on [freq]"
if(signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if(signal.data["type"] == bot_type)
frequency.post_signal(src, signal, filter = bot_filter)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
/obj/machinery/bot/proc/send_status()
if(remote_disabled || emagged == 2)
return
var/list/kv = list(
"type" = bot_type,
"name" = name,
"loca" = get_area(src), // area
"mode" = mode
)
post_signal_multiple(control_freq, kv)
obj/machinery/bot/proc/bot_summon()
// summoned to PDA
summon_step()
return
// calculates a path to the current destination
// given an optional turf to avoid
/obj/machinery/bot/proc/calc_path(var/turf/avoid)
check_bot_access()
path = AStar(loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 120, id=botcard, exclude=avoid)
if(!path)
path = list()
/obj/machinery/bot/proc/calc_summon_path(var/turf/avoid)
check_bot_access()
path = AStar(loc, summon_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 150, id=botcard, exclude=avoid)
if(!path || tries >= 5) //Cannot reach target. Give up and announce the issue.
speak("Summon command failed, destination unreachable."/*,radio_frequency*/)
bot_reset()
/obj/machinery/bot/proc/summon_step()
if(loc == summon_target) // Arrived to summon location.
bot_reset()
return
else if(path.len > 0 && summon_target) //Proper path acquired!
var/turf/next = path[1]
if(next == loc)
path -= next
return
var/moved = bot_move(summon_target, 3) // Move attempt
if(moved)
blockcount = 0
else // failed to move
blockcount++
if(blockcount > 5) // attempt 5 times before recomputing
// find new path excluding blocked turf
spawn(2)
calc_summon_path(next)
tries++
return
return
else // no path, so calculate new one
calc_summon_path()
return
/obj/machinery/bot/Bump(M as mob|obj) //Leave no door unopened!
if((istype(M, /obj/machinery/door/airlock) || istype(M, /obj/machinery/door/window)) && (!isnull(botcard)))
var/obj/machinery/door/D = M
if(D.check_access(botcard))
D.open()
frustration = 0
else if((istype(M, /mob/living/)) && (!anchored))
var/mob/living/Mb = M
loc = Mb.loc
frustration = 0
return
+145 -235
View File
@@ -5,17 +5,16 @@
icon = 'icons/obj/aibots.dmi'
icon_state = "bucket_proxy"
force = 3.0
throwforce = 10.0
throwforce = 5.0
throw_speed = 2
throw_range = 5
w_class = 3.0
flags = TABLEPASS
var/created_name = "Cleanbot"
//Cleanbot
/obj/machinery/bot/cleanbot
name = "Cleanbot"
name = "\improper Cleanbot"
desc = "A little cleaning robot, he looks so excited!"
icon = 'icons/obj/aibots.dmi'
icon_state = "cleanbot0"
@@ -25,55 +24,57 @@
//weight = 1.0E7
health = 25
maxhealth = 25
var/cleaning = 0
var/screwloose = 0
var/oddbutton = 0
var/blood = 1
var/list/target_types = list()
var/obj/effect/decal/cleanable/target
var/obj/effect/decal/cleanable/oldtarget
var/max_targets = 50 //Maximum number of targets a cleanbot can ignore.
var/oldloc = null
req_access = list(access_janitor, access_robotics)
var/path[] = new()
var/patrol_path[] = null
var/beacon_freq = 1445 // navigation beacon frequency
req_one_access = list(access_janitor, access_robotics)
// var/patrol_path[] = null
// var/beacon_freq = 1445 // navigation beacon frequency
var/closest_dist
var/closest_loc
var/failed_steps
var/should_patrol
var/next_dest
var/next_dest_loc
radio_frequency = SRV_FREQ //Service
bot_type = CLEAN_BOT
bot_filter = RADIO_CLEANBOT
/obj/machinery/bot/cleanbot/New()
..()
src.get_targets()
src.icon_state = "cleanbot[src.on]"
get_targets()
icon_state = "cleanbot[on]"
should_patrol = 1
src.botcard = new /obj/item/weapon/card/id(src)
var/datum/job/janitor/J = new/datum/job/janitor
src.botcard.access = J.get_access()
if(radio_controller)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
botcard.access = J.get_access()
prev_access = botcard.access
spawn(5)
add_to_beacons(bot_filter)
/obj/machinery/bot/cleanbot/turn_on()
. = ..()
src.icon_state = "cleanbot[src.on]"
src.updateUsrDialog()
..()
icon_state = "cleanbot[on]"
updateUsrDialog()
/obj/machinery/bot/cleanbot/turn_off()
..()
if(!isnull(src.target))
target.targeted_by = null
src.target = null
src.oldtarget = null
src.oldloc = null
src.icon_state = "cleanbot[src.on]"
src.path = new()
src.updateUsrDialog()
icon_state = "cleanbot[on]"
updateUsrDialog()
/obj/machinery/bot/cleanbot/bot_reset()
..()
ignore_list = list() //Allows the bot to clean targets it previously ignored due to being unreachable.
target = null
oldtarget = null
oldloc = null
/obj/machinery/bot/cleanbot/set_custom_texts()
text_hack = "You corrupt [name]'s cleaning software."
text_dehack = "[name]'s software has been reset!"
text_dehack_fail = "[name] does not seem to respond to your repair code!"
/obj/machinery/bot/cleanbot/attack_hand(mob/user as mob)
. = ..()
@@ -84,65 +85,41 @@
/obj/machinery/bot/cleanbot/interact(mob/user as mob)
var/dat
dat += hack(user)
dat += text({"
<TT><B>Automatic Station Cleaner v1.0</B></TT><BR><BR>
<TT><B>Cleaner v1.1 controls</B></TT><BR><BR>
Status: []<BR>
Behaviour controls are [src.locked ? "locked" : "unlocked"]<BR>
Maintenance panel is [src.open ? "opened" : "closed"]"},
text("<A href='?src=\ref[src];operation=start'>[src.on ? "On" : "Off"]</A>"))
if(!src.locked || issilicon(user))
dat += text({"<BR>Cleans Blood: []<BR>"}, text("<A href='?src=\ref[src];operation=blood'>[src.blood ? "Yes" : "No"]</A>"))
dat += text({"<BR>Patrol station: []<BR>"}, text("<A href='?src=\ref[src];operation=patrol'>[src.should_patrol ? "Yes" : "No"]</A>"))
// dat += text({"<BR>Beacon frequency: []<BR>"}, text("<A href='?src=\ref[src];operation=freq'>[src.beacon_freq]</A>"))
if(src.open && !src.locked)
dat += text({"
Odd looking screw twiddled: []<BR>
Weird button pressed: []"},
text("<A href='?src=\ref[src];operation=screw'>[src.screwloose ? "Yes" : "No"]</A>"),
text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"]</A>"))
Behaviour controls are [locked ? "locked" : "unlocked"]<BR>
Maintenance panel panel is [open ? "opened" : "closed"]"},
text("<A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A>"))
if(!locked || issilicon(user))
dat += text({"<BR>Cleans Blood: []<BR>"}, text("<A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A>"))
dat += text({"<BR>Patrol station: []<BR>"}, text("<A href='?src=\ref[src];operation=patrol'>[auto_patrol ? "Yes" : "No"]</A>"))
user << browse("<HEAD><TITLE>Cleaner v1.0 controls</TITLE></HEAD>[dat]", "window=autocleaner")
onclose(user, "autocleaner")
var/datum/browser/popup = new(user, "autoclean", "Automatic Station Cleaner v1.1")
popup.set_content(dat)
popup.open()
return
/obj/machinery/bot/cleanbot/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
..()
switch(href_list["operation"])
if("start")
if (src.on)
turn_off()
else
turn_on()
if("blood")
src.blood =!src.blood
src.get_targets()
src.updateUsrDialog()
if("patrol")
src.should_patrol =!src.should_patrol
src.patrol_path = null
src.updateUsrDialog()
blood =!blood
get_targets()
updateUsrDialog()
if("freq")
var/freq = text2num(input("Select frequency for navigation beacons", "Frequnecy", num2text(beacon_freq / 10))) * 10
var/freq = text2num(input("Select frequency for navigation beacons", "Frequency", num2text(beacon_freq / 10))) * 10
if (freq > 0)
src.beacon_freq = freq
src.updateUsrDialog()
if("screw")
src.screwloose = !src.screwloose
usr << "<span class='notice>You twiddle the screw.</span>"
src.updateUsrDialog()
if("oddbutton")
src.oddbutton = !src.oddbutton
usr << "<span class='notice'>You press the weird button.</span>"
src.updateUsrDialog()
beacon_freq = freq
updateUsrDialog()
/obj/machinery/bot/cleanbot/attackby(obj/item/weapon/W, mob/user as mob)
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.allowed(usr) && !open && !emagged)
src.locked = !src.locked
user << "<span class='notice'>You [ src.locked ? "lock" : "unlock"] the [src] behaviour controls.</span>"
if(allowed(usr) && !open && !emagged)
locked = !locked
user << "<span class='notice'>You [ locked ? "lock" : "unlock"] the [src] behaviour controls.</span>"
else
if(emagged)
user << "<span class='warning'>ERROR</span>"
@@ -155,149 +132,77 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
/obj/machinery/bot/cleanbot/Emag(mob/user as mob)
..()
if((!locked && open) || !user)
if(user) user << "<span class='notice'>The [src] buzzes and beeps.</span>"
src.oddbutton = 1
src.screwloose = 1
if(emagged == 2)
if(user)
user << "<span class='danger'>[src] buzzes and beeps.</span>"
/obj/machinery/bot/cleanbot/process()
//set background = 1
/obj/machinery/bot/cleanbot/process_scan(var/obj/effect/decal/cleanable/D)
for(var/T in target_types)
if(istype(D, T))
return D
if(!src.on)
return
if(src.cleaning)
/obj/machinery/bot/cleanbot/bot_process()
if (!..())
return
if(!src.screwloose && !src.oddbutton && prob(5))
if(mode == BOT_CLEANING)
return
if(emagged == 2) //Emag functions
if(istype(loc,/turf/simulated))
if(prob(10)) //Wets floors randomly
var/turf/simulated/T = loc
T.MakeSlippery()
if(prob(5)) //Spawns foam!
visible_message("<span class='danger'>[src] whirs and bubbles violently, before releasing a plume of froth!</span>")
new /obj/effect/effect/foam(loc)
else if (prob(5))
visible_message("[src] makes an excited beeping booping sound!")
if(src.screwloose && prob(5))
if(istype(loc,/turf/simulated))
var/turf/simulated/T = src.loc
if(T.wet < 1)
T.wet = 1
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor")
T.overlays += T.wet_overlay
spawn(800)
if (istype(T) && T.wet < 2)
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
if(src.oddbutton && prob(5))
visible_message("Something flies out of [src]. He seems to be acting oddly.")
var/obj/effect/decal/cleanable/blood/gibs/gib = new /obj/effect/decal/cleanable/blood/gibs(src.loc)
//gib.streak(list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
src.oldtarget = gib
if(!src.target || src.target == null)
for (var/obj/effect/decal/cleanable/D in view(7,src))
for(var/T in src.target_types)
if(isnull(D.targeted_by) && (D.type == T || D.parent_type == T) && D != src.oldtarget) // If the mess isn't targeted
src.oldtarget = D // or if it is but the bot is gone.
src.target = D // and it's stuff we clean? Clean it.
D.targeted_by = src // Claim the mess we are targeting.
return
if(!target) //Search for cleanables it can see.
target = scan(/obj/effect/decal/cleanable/, oldtarget)
oldtarget = target
if(!src.target || src.target == null)
if(src.loc != src.oldloc)
src.oldtarget = null
if(!target)
if(loc != oldloc)
oldtarget = null
if (!should_patrol)
if(auto_patrol)
if(mode == BOT_IDLE || mode == BOT_START_PATROL)
start_patrol()
if(mode == BOT_PATROL)
bot_patrol()
return
if(target)
if(!path || path.len == 0) //No path, need a new one
//Try to produce a path to the target, and ignore airlocks to which it has access.
path = AStar(loc, target.loc, /turf/proc/AdjacentTurfsWithAccess, /turf/proc/Distance, 0, 30, id=botcard)
if (!bot_move(target))
add_to_ignore(target)
target = null
path = list()
return
mode = BOT_MOVING
else if (!bot_move(target))
target = null
mode = BOT_IDLE
return
if (!patrol_path || patrol_path.len < 1)
var/datum/radio_frequency/frequency = radio_controller.return_frequency(beacon_freq)
if(target && loc == target.loc)
clean(target)
path = list()
target = null
if(!frequency) return
closest_dist = 9999
closest_loc = null
next_dest_loc = null
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
signal.data = list("findbeacon" = "patrol")
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
spawn(5)
if (!next_dest_loc)
next_dest_loc = closest_loc
if (next_dest_loc)
src.patrol_path = AStar(src.loc, next_dest_loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=null)
else
patrol_move()
return
if(!path)
path = new()
if(target && path.len == 0)
spawn(0)
if(!src || !target) return
src.path = AStar(src.loc, src.target.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 30)
if(!src.path)
src.path = list()
if(src.path.len == 0)
src.oldtarget = src.target
target.targeted_by = null
src.target = null
return
if(src.path.len > 0 && src.target && (src.target != null))
step_to(src, src.path[1])
src.path -= src.path[1]
else if(src.path.len == 1)
step_to(src, target)
if(src.target && (src.target != null))
patrol_path = null
if(src.loc == src.target.loc)
clean(src.target)
src.path = new()
src.target = null
return
src.oldloc = src.loc
/obj/machinery/bot/cleanbot/proc/patrol_move()
if (src.patrol_path.len <= 0)
return
var/next = src.patrol_path[1]
src.patrol_path -= next
if (next == src.loc)
return
var/moved = step_towards(src, next)
if (!moved)
failed_steps++
if (failed_steps > 4)
patrol_path = null
next_dest = null
failed_steps = 0
else
failed_steps = 0
/obj/machinery/bot/cleanbot/receive_signal(datum/signal/signal)
var/recv = signal.data["beacon"]
var/valid = signal.data["patrol"]
if(!recv || !valid)
return
var/dist = get_dist(src, signal.source.loc)
if (dist < closest_dist && signal.source.loc != src.loc)
closest_dist = dist
closest_loc = signal.source.loc
next_dest = signal.data["next_patrol"]
if (recv == next_dest)
next_dest_loc = signal.source.loc
next_dest = signal.data["next_patrol"]
oldloc = loc
/obj/machinery/bot/cleanbot/proc/get_targets()
src.target_types = new/list()
target_types = new/list()
target_types += /obj/effect/decal/cleanable/oil
target_types += /obj/effect/decal/cleanable/vomit
@@ -305,36 +210,41 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
target_types += /obj/effect/decal/cleanable/robot_debris
target_types += /obj/effect/decal/cleanable/crayon
target_types += /obj/effect/decal/cleanable/liquid_fuel
target_types += /obj/effect/decal/cleanable/molten_item
target_types += /obj/effect/decal/cleanable/tomato_smudge
target_types += /obj/effect/decal/cleanable/egg_smudge
target_types += /obj/effect/decal/cleanable/pie_smudge
target_types += /obj/effect/decal/cleanable/flour
target_types += /obj/effect/decal/cleanable/ash
target_types += /obj/effect/decal/cleanable/greenglow
target_types += /obj/effect/decal/cleanable/dirt
target_types += /obj/effect/decal/cleanable/mucus
if(src.blood)
target_types += /obj/effect/decal/cleanable/xenoblood
if(blood)
target_types += /obj/effect/decal/cleanable/xenoblood/
target_types += /obj/effect/decal/cleanable/xenoblood/xgibs
target_types += /obj/effect/decal/cleanable/blood/
target_types += /obj/effect/decal/cleanable/blood/gibs/
target_types += /obj/effect/decal/cleanable/blood/green
target_types += /obj/effect/decal/cleanable/blood/tracks
target_types += /obj/effect/decal/cleanable/blood/gibs/
target_types += /obj/effect/decal/cleanable/dirt
/obj/machinery/bot/cleanbot/proc/clean(var/obj/effect/decal/cleanable/target)
src.anchored = 1
src.icon_state = "cleanbot-c"
visible_message("\red [src] begins to clean up the [target]")
src.cleaning = 1
var/cleantime = 50
if(istype(target,/obj/effect/decal/cleanable/dirt)) // Clean Dirt much faster
cleantime = 10
spawn(cleantime)
src.cleaning = 0
del(target)
src.icon_state = "cleanbot[src.on]"
src.anchored = 0
src.target = null
anchored = 1
icon_state = "cleanbot-c"
visible_message("<span class='notice'>[src] begins to clean up [target]</span>")
mode = BOT_CLEANING
spawn(50)
if(mode == BOT_CLEANING)
qdel(target)
anchored = 0
target = null
mode = BOT_IDLE
icon_state = "cleanbot[on]"
/obj/machinery/bot/cleanbot/explode()
src.on = 0
src.visible_message("\red <B>[src] blows apart!</B>", 1)
on = 0
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
new /obj/item/weapon/reagent_containers/glass/bucket(Tsec)
@@ -347,25 +257,25 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
qdel(src)
return
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
user.drop_item()
del(W)
var/turf/T = get_turf(src.loc)
qdel(W)
var/turf/T = get_turf(loc)
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot(T)
A.name = src.created_name
A.name = created_name
user << "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>"
user.drop_from_inventory(src)
del(src)
user.before_take_item(src, 1)
qdel(src)
else if (istype(W, /obj/item/weapon/pen))
var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN)
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if (!t)
return
if (!in_range(src, usr) && src.loc != usr)
if (!in_range(src, usr) && loc != usr)
return
src.created_name = t
created_name = t
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+312 -305
View File
@@ -4,7 +4,7 @@
/obj/machinery/bot/medbot
name = "Medibot"
name = "\improper Medibot"
desc = "A little medical robot. He looks somewhat underwhelmed."
icon = 'icons/obj/aibots.dmi'
icon_state = "medibot0"
@@ -13,30 +13,34 @@
anchored = 0
health = 20
maxhealth = 20
req_access =list(access_medical, access_robotics)
req_one_access =list(access_medical, access_robotics)
var/stunned = 0 //It can be stunned by tasers. Delicate circuits.
//var/emagged = 0
// var/emagged = 0
var/list/botcard_access = list(access_medical)
var/obj/item/weapon/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents.
var/skin = null //Set to "tox", "ointment" or "o2" for the other two firstaid kits.
var/frustration = 0
var/path[] = new()
var/mob/living/carbon/patient = null
var/mob/living/carbon/oldpatient = null
var/oldloc = null
var/last_found = 0
var/last_newpatient_speak = 0 //Don't spam the "HEY I'M COMING" messages
var/currently_healing = 0
var/injection_amount = 15 //How much reagent do we inject at a time?
var/heal_threshold = 10 //Start healing when they have this much damage in a category
var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents.
var/declare_crit = 1 //If active, the bot will transmit a critical patient alert to MedHUD users.
var/declare_cooldown = 0 //Prevents spam of critical patient alerts.
var/stationary_mode = 0 //If enabled, the Medibot will not move automatically.
radio_frequency = MED_FREQ //Medical frequency
//Setting which reagents to use to treat what by default. By id.
var/treatment_brute = "tricordrazine"
var/treatment_oxy = "tricordrazine"
var/treatment_fire = "tricordrazine"
var/treatment_tox = "tricordrazine"
var/treatment_virus = "spaceacillin"
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
var/shut_up = 0 //self explanatory :)
bot_type = MED_BOT
bot_filter = RADIO_MEDBOT
/obj/machinery/bot/medbot/syndicate
name = "Suspicious Medibot"
@@ -45,10 +49,19 @@
treatment_oxy = "dexalin"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "anti_toxin"
/obj/machinery/bot/medbot/mysterious
name = "\improper Mysterious Medibot"
desc = "International Medibot of mystery."
skin = "bezerk"
treatment_oxy = "dexalinp"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "anti_toxin"
/obj/item/weapon/firstaid_arm_assembly
name = "first aid/robot arm assembly"
name = "incomplete medibot assembly."
desc = "A first aid kit with a robot arm permanently grafted to it."
icon = 'icons/obj/aibots.dmi'
icon_state = "firstaid_arm"
@@ -57,45 +70,63 @@
var/skin = null //Same as medbot, set to tox or ointment for the respective kits.
w_class = 3.0
New()
/obj/item/weapon/firstaid_arm_assembly/New()
..()
spawn(5)
if(src.skin)
src.overlays += image('icons/obj/aibots.dmi', "kit_skin_[src.skin]")
if(src.skin == "bezerk")
created_name = "Suspicious Medibot"
if(skin)
overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]")
/obj/machinery/bot/medbot/proc/updateicon()
if(!on)
icon_state = "medibot0"
return
if(mode == BOT_HEALING)
icon_state = "medibots[stationary_mode]"
return
else if(stationary_mode) //Bot has yellow light to indicate stationary mode.
icon_state = "medibot2"
else
icon_state = "medibot1"
/obj/machinery/bot/medbot/New()
..()
src.icon_state = "medibot[src.on]"
updateicon()
spawn(4)
if(src.skin)
src.overlays += image('icons/obj/aibots.dmi', "medskin_[src.skin]")
if(skin)
overlays += image('icons/obj/aibots.dmi', "medskin_[skin]")
src.botcard = new /obj/item/weapon/card/id(src)
if(isnull(src.botcard_access) || (src.botcard_access.len < 1))
if(isnull(botcard_access) || (botcard_access.len < 1))
var/datum/job/doctor/J = new/datum/job/doctor
src.botcard.access = J.get_access()
botcard.access = J.get_access()
else
src.botcard.access = src.botcard_access
botcard.access = botcard_access
prev_access = botcard.access
add_to_beacons(bot_filter)
/obj/machinery/bot/medbot/turn_on()
. = ..()
src.icon_state = "medibot[src.on]"
src.updateUsrDialog()
updateicon()
updateUsrDialog()
/obj/machinery/bot/medbot/turn_off()
..()
src.patient = null
src.oldpatient = null
src.oldloc = null
src.path = new()
src.currently_healing = 0
src.last_found = world.time
src.icon_state = "medibot[src.on]"
src.updateUsrDialog()
updateicon()
updateUsrDialog()
/obj/machinery/bot/medbot/bot_reset()
..()
patient = null
oldpatient = null
oldloc = null
last_found = world.time
declare_cooldown = 0
/obj/machinery/bot/medbot/set_custom_texts()
text_hack = "You corrupt [name]'s reagent processor circuits."
text_dehack = "You reset [name]'s reagent processor circuits."
text_dehack_fail = "[name] seems damaged and does not respond to reprogramming!"
/obj/machinery/bot/medbot/attack_paw(mob/user as mob)
return attack_hand(user)
@@ -105,88 +136,94 @@
if (.)
return
var/dat
dat += "<TT><B>Automatic Medical Unit v1.0</B></TT><BR><BR>"
dat += "Status: <A href='?src=\ref[src];power=1'>[src.on ? "On" : "Off"]</A><BR>"
dat += "Maintenance panel panel is [src.open ? "opened" : "closed"]<BR>"
dat += hack(user)
dat += "<TT><B>Medical Unit Controls v1.1</B></TT><BR><BR>"
dat += "Status: <A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A><BR>"
dat += "Maintenance panel panel is [open ? "opened" : "closed"]<BR>"
dat += "Beaker: "
if (src.reagent_glass)
dat += "<A href='?src=\ref[src];eject=1'>Loaded \[[src.reagent_glass.reagents.total_volume]/[src.reagent_glass.reagents.maximum_volume]\]</a>"
if (reagent_glass)
dat += "<A href='?src=\ref[src];eject=1'>Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]</a>"
else
dat += "None Loaded"
dat += "<br>Behaviour controls are [src.locked ? "locked" : "unlocked"]<hr>"
if(!src.locked || issilicon(user))
dat += "<br>Behaviour controls are [locked ? "locked" : "unlocked"]<hr>"
if(!locked || issilicon(user))
dat += "<TT>Healing Threshold: "
dat += "<a href='?src=\ref[src];adj_threshold=-10'>--</a> "
dat += "<a href='?src=\ref[src];adj_threshold=-5'>-</a> "
dat += "[src.heal_threshold] "
dat += "[heal_threshold] "
dat += "<a href='?src=\ref[src];adj_threshold=5'>+</a> "
dat += "<a href='?src=\ref[src];adj_threshold=10'>++</a>"
dat += "</TT><br>"
dat += "<TT>Injection Level: "
dat += "<a href='?src=\ref[src];adj_inject=-5'>-</a> "
dat += "[src.injection_amount] "
dat += "[injection_amount] "
dat += "<a href='?src=\ref[src];adj_inject=5'>+</a> "
dat += "</TT><br>"
dat += "Reagent Source: "
dat += "<a href='?src=\ref[src];use_beaker=1'>[src.use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]</a><br>"
dat += "<a href='?src=\ref[src];use_beaker=1'>[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]</a><br>"
dat += "The speaker switch is [src.shut_up ? "off" : "on"]. <a href='?src=\ref[src];togglevoice=[1]'>Toggle</a>"
dat += "Treat Viral Infections: <a href='?src=\ref[src];virus=1'>[treat_virus ? "Yes" : "No"]</a><br>"
dat += "The speaker switch is [shut_up ? "off" : "on"]. <a href='?src=\ref[src];togglevoice=[1]'>Toggle</a><br>"
dat += "Critical Patient Alerts: <a href='?src=\ref[src];critalerts=1'>[declare_crit ? "Yes" : "No"]</a><br>"
dat += "Patrol Station: <a href='?src=\ref[src];operation=patrol'>[auto_patrol ? "Yes" : "No"]</a><br>"
dat += "Stationary Mode: <a href='?src=\ref[src];stationary=1'>[stationary_mode ? "Yes" : "No"]</a><br>"
user << browse("<HEAD><TITLE>Medibot v1.0 controls</TITLE></HEAD>[dat]", "window=automed")
onclose(user, "automed")
var/datum/browser/popup = new(user, "automed", "Automatic Medical Unit v1.1")
popup.set_content(dat)
popup.open()
return
/obj/machinery/bot/medbot/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if ((href_list["power"]) && (src.allowed(usr)))
if (src.on)
turn_off()
else
turn_on()
..()
else if((href_list["adj_threshold"]) && (!src.locked || issilicon(usr)))
if(href_list["adj_threshold"])
var/adjust_num = text2num(href_list["adj_threshold"])
src.heal_threshold += adjust_num
if(src.heal_threshold < 5)
src.heal_threshold = 5
if(src.heal_threshold > 75)
src.heal_threshold = 75
heal_threshold += adjust_num
if(heal_threshold < 5)
heal_threshold = 5
if(heal_threshold > 75)
heal_threshold = 75
else if((href_list["adj_inject"]) && (!src.locked || issilicon(usr)))
else if(href_list["adj_inject"])
var/adjust_num = text2num(href_list["adj_inject"])
src.injection_amount += adjust_num
if(src.injection_amount < 5)
src.injection_amount = 5
if(src.injection_amount > 15)
src.injection_amount = 15
injection_amount += adjust_num
if(injection_amount < 5)
injection_amount = 5
if(injection_amount > 15)
injection_amount = 15
else if((href_list["use_beaker"]) && (!src.locked || issilicon(usr)))
src.use_beaker = !src.use_beaker
else if(href_list["use_beaker"])
use_beaker = !use_beaker
else if (href_list["eject"] && (!isnull(src.reagent_glass)))
if(!src.locked)
src.reagent_glass.loc = get_turf(src)
src.reagent_glass = null
else
usr << "<span class='notice'>You cannot eject the beaker because the panel is locked.</span>"
else if (href_list["eject"] && (!isnull(reagent_glass)))
reagent_glass.loc = get_turf(src)
reagent_glass = null
else if ((href_list["togglevoice"]) && (!src.locked || issilicon(usr)))
src.shut_up = !src.shut_up
else if (href_list["togglevoice"])
shut_up = !shut_up
src.updateUsrDialog()
else if (href_list["critalerts"])
declare_crit = !declare_crit
else if (href_list["stationary"])
stationary_mode = !stationary_mode
path = list()
updateicon()
else if (href_list["virus"])
treat_virus = !treat_virus
updateUsrDialog()
return
/obj/machinery/bot/medbot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (src.allowed(user) && !open && !emagged)
src.locked = !src.locked
user << "<span class='notice'>Controls are now [src.locked ? "locked." : "unlocked."]</span>"
src.updateUsrDialog()
if (allowed(user) && !open && !emagged)
locked = !locked
user << "<span class='notice'>Controls are now [locked ? "locked." : "unlocked."]</span>"
updateUsrDialog()
else
if(emagged)
user << "<span class='warning'>ERROR</span>"
@@ -196,131 +233,127 @@
user << "<span class='warning'>Access denied.</span>"
else if (istype(W, /obj/item/weapon/reagent_containers/glass))
if(src.locked)
if(locked)
user << "<span class='notice'>You cannot insert a beaker because the panel is locked.</span>"
return
if(!isnull(src.reagent_glass))
if(!isnull(reagent_glass))
user << "<span class='notice'>There is already a beaker loaded.</span>"
return
user.drop_item()
W.loc = src
src.reagent_glass = W
reagent_glass = W
user << "<span class='notice'>You insert [W].</span>"
src.updateUsrDialog()
updateUsrDialog()
return
else
var/current_health = health
..()
if (health < maxhealth && !istype(W, /obj/item/weapon/screwdriver) && W.force)
if (health < current_health) //if medbot took some damage
step_to(src, (get_step_away(src,user)))
/obj/machinery/bot/medbot/Emag(mob/user as mob)
..()
if((!locked && open) || !user)
if(user) user << "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>"
if(emagged == 2)
declare_crit = 0
if(user)
user << "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>"
spawn(0)
for(var/mob/O in hearers(src, null))
O.show_message("\red <B>[src] buzzes oddly!</B>", 1)
visible_message("<span class='danger'>[src] buzzes oddly!</span>")
flick("medibot_spark", src)
src.patient = null
if(user) src.oldpatient = user
src.currently_healing = 0
src.last_found = world.time
src.anchored = 0
src.emagged = 2
src.on = 1
src.icon_state = "medibot[src.on]"
if(user)
oldpatient = user
/obj/machinery/bot/medbot/process()
//set background = 1
if(!src.on)
src.stunned = 0
/obj/machinery/bot/medbot/process_scan(var/mob/living/carbon/human/H)
if (H.stat == 2)
return
if(src.stunned)
src.icon_state = "medibota"
src.stunned--
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
if(src.stunned <= 0)
src.icon_state = "medibot[src.on]"
src.stunned = 0
if ((H == oldpatient) && (world.time < last_found + 100))
return
if(src.frustration > 8)
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
src.last_found = world.time
src.path = new()
if(assess_patient(H))
last_found = world.time
if((last_newpatient_speak + 300) < world.time) //Don't spam these messages!
var/message = pick("Hey, [H.name]! Hold on, I'm coming.","Wait [H.name]! I want to help!","[H.name], you appear to be injured!")
speak(message)
last_newpatient_speak = world.time
return H
else
return
if(!src.patient)
if(!src.shut_up && prob(1))
/obj/machinery/bot/medbot/bot_process()
if (!..())
return
if(mode == BOT_HEALING)
return
if(stunned)
icon_state = "medibota"
stunned--
oldpatient = patient
patient = null
mode = BOT_IDLE
if(stunned <= 0)
updateicon()
stunned = 0
return
if(frustration > 8)
oldpatient = patient
patient = null
mode = BOT_IDLE
last_found = world.time
path = list()
if(!patient)
if(!shut_up && prob(1))
var/message = pick("Radar, put a mask on!","There's always a catch, and it's the best there is.","I knew it, I should've been a plastic surgeon.","What kind of medbay is this? Everyone's dropping like dead flies.","Delicious!")
src.speak(message)
speak(message)
var/scan_range = (stationary_mode ? 1 : DEFAULT_SCAN_RANGE) //If in stationary mode, scan range is limited to adjacent patients.
patient = scan(/mob/living/carbon/human, oldpatient, scan_range)
oldpatient = patient
for (var/mob/living/carbon/C in view(7,src)) //Time to find a patient!
if ((C.stat == 2) || !istype(C, /mob/living/carbon/human))
continue
if ((C == src.oldpatient) && (world.time < src.last_found + 100))
continue
if(src.assess_patient(C))
src.patient = C
src.oldpatient = C
src.last_found = world.time
spawn(0)
if((src.last_newpatient_speak + 100) < world.time) //Don't spam these messages!
var/message = pick("Hey, you! Hold on, I'm coming.","Wait! I want to help!","You appear to be injured!")
src.speak(message)
src.last_newpatient_speak = world.time
src.visible_message("<b>[src]</b> points at [C.name]!")
break
else
continue
if(!src.path)
src.path = new()
if(src.patient && Adjacent(patient))
if(!src.currently_healing)
src.currently_healing = 1
src.frustration = 0
src.medicate_patient(src.patient)
if(patient && (get_dist(src,patient) <= 1)) //Patient is next to us, begin treatment!
if(mode != BOT_HEALING)
mode = BOT_HEALING
updateicon()
frustration = 0
medicate_patient(patient)
return
else if(src.patient && (src.path.len) && (get_dist(src.patient,src.path[src.path.len]) > 2))
src.path = new()
src.currently_healing = 0
src.last_found = world.time
//Patient has moved away from us!
else if(patient && path && path.len && (get_dist(patient,path[path.len]) > 2))
path = list()
mode = BOT_IDLE
last_found = world.time
if(src.patient && src.path.len == 0 && (get_dist(src,src.patient) > 1))
if(!stationary_mode && patient && path.len == 0 && (get_dist(src,patient) > 1))
spawn(0)
src.path = AStar(src.loc, get_turf(src.patient), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 30,id=botcard)
if (!path) path = list()
if(src.path.len == 0)
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
src.last_found = world.time
path = AStar(loc, get_turf(patient), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 30,id=botcard)
if(!path)
path = list()
if(path.len > 0 && patient)
if(!bot_move(patient))
oldpatient = patient
patient = null
mode = BOT_IDLE
last_found = world.time
return
if(src.path.len > 0 && src.patient)
step_to(src, src.path[1])
src.path -= src.path[1]
spawn(3)
if(src.path.len)
step_to(src, src.path[1])
src.path -= src.path[1]
if(path.len > 8 && patient)
frustration++
if(src.path.len > 8 && src.patient)
src.frustration++
if(auto_patrol && !stationary_mode && !patient)
if(mode == BOT_IDLE || mode == BOT_START_PATROL)
start_patrol()
if(mode == BOT_PATROL)
bot_patrol()
return
@@ -332,121 +365,139 @@
if(C.suiciding)
return 0 //Kevorkian school of robotic medical assistants.
if(src.emagged == 2) //Everyone needs our medicine. (Our medicine is toxins)
if(emagged == 2) //Everyone needs our medicine. (Our medicine is toxins)
return 1
if((skin == "bezerk") && (!("syndicate" in C.faction))) // No healing non-operatives as a SyndiBot.
if((skin == "bezerk") && (!("syndicate" in C.faction)))
return 0
if(declare_crit && C.health <= 0) //Critical condition! Call for help!
declare(C)
//If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS.
if((src.reagent_glass) && (src.use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15))))
for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list)
if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15))))
for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
if(!C.reagents.has_reagent(R.id))
return 1
//They're injured enough for it!
if((C.getBruteLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_brute)))
if((C.getBruteLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_brute)))
return 1 //If they're already medicated don't bother!
if((C.getOxyLoss() >= (15 + heal_threshold)) && (!C.reagents.has_reagent(src.treatment_oxy)))
if((C.getOxyLoss() >= (15 + heal_threshold)) && (!C.reagents.has_reagent(treatment_oxy)))
return 1
if((C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_fire)))
if((C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_fire)))
return 1
if((C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_tox)))
if((C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_tox)))
return 1
if((C.virus2.len) && (!C.reagents.has_reagent(treatment_virus)))
for (var/ID in C.virus2)
if (ID in virusDB) // If the virus is known, the medbot is aware of it
return 1
return 0
/obj/machinery/bot/medbot/proc/medicate_patient(mob/living/carbon/C as mob)
if(!src.on)
if(!on)
return
if(!istype(C))
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
src.last_found = world.time
oldpatient = patient
patient = null
mode = BOT_IDLE
last_found = world.time
return
if(C.stat == 2)
var/death_message = pick("No! NO!","Live, damnit! LIVE!","I...I've never lost a patient before. Not today, I mean.")
src.speak(death_message)
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
src.last_found = world.time
speak(death_message)
oldpatient = patient
patient = null
mode = BOT_IDLE
last_found = world.time
return
var/reagent_id = null
if(src.emagged == 2) //Emagged! Time to poison everybody.
if(emagged == 2) //Emagged! Time to poison everybody.
reagent_id = "toxin"
if(treat_virus)
var/virus = 0
if(C:virus2.len)
for (var/ID in C.virus2)
if (ID in virusDB) // If the virus is known, the medbot is aware of it and will try to cure it
virus = 1
if (!reagent_id && (virus))
if(!C.reagents.has_reagent(treatment_virus))
reagent_id = treatment_virus
else
if (!reagent_id && (C.getBruteLoss() >= heal_threshold))
if(!C.reagents.has_reagent(src.treatment_brute))
reagent_id = src.treatment_brute
if(!C.reagents.has_reagent(treatment_brute))
reagent_id = treatment_brute
if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold)))
if(!C.reagents.has_reagent(src.treatment_oxy))
reagent_id = src.treatment_oxy
if(!C.reagents.has_reagent(treatment_oxy))
reagent_id = treatment_oxy
if (!reagent_id && (C.getFireLoss() >= heal_threshold))
if(!C.reagents.has_reagent(src.treatment_fire))
reagent_id = src.treatment_fire
if(!C.reagents.has_reagent(treatment_fire))
reagent_id = treatment_fire
if (!reagent_id && (C.getToxLoss() >= heal_threshold))
if(!C.reagents.has_reagent(src.treatment_tox))
reagent_id = src.treatment_tox
if(!C.reagents.has_reagent(treatment_tox))
reagent_id = treatment_tox
//If the patient is injured but doesn't have our special reagent in them then we should give it to them first
if(reagent_id && src.use_beaker && src.reagent_glass && src.reagent_glass.reagents.total_volume)
for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list)
if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
if(!C.reagents.has_reagent(R.id))
reagent_id = "internal_beaker"
break
if(!reagent_id) //If they don't need any of that they're probably cured!
src.oldpatient = src.patient
src.patient = null
src.currently_healing = 0
src.last_found = world.time
oldpatient = patient
patient = null
mode = BOT_IDLE
last_found = world.time
var/message = pick("All patched up!","An apple a day keeps me away.","Feel better soon!")
src.speak(message)
speak(message)
updateicon()
return
else
src.icon_state = "medibots"
visible_message("\red <B>[src] is trying to inject [src.patient]!</B>")
spawn(30)
if ((get_dist(src, src.patient) <= 1) && (src.on))
if((reagent_id == "internal_beaker") && (src.reagent_glass) && (src.reagent_glass.reagents.total_volume))
src.reagent_glass.reagents.trans_to(src.patient,src.injection_amount) //Inject from beaker instead.
src.reagent_glass.reagents.reaction(src.patient, 2)
else
src.patient.reagents.add_reagent(reagent_id,src.injection_amount)
visible_message("\red <B>[src] injects [src.patient] with the syringe!</B>")
C.visible_message("<span class='danger'>[src] is trying to inject [patient]!</span>", \
"<span class='userdanger'>[src] is trying to inject [patient]!</span>")
src.icon_state = "medibot[src.on]"
src.currently_healing = 0
spawn(30)
if ((get_dist(src, patient) <= 1) && (on))
if(reagent_id == "internal_beaker")
if(use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
reagent_glass.reagents.trans_to(patient,injection_amount) //Inject from beaker instead.
reagent_glass.reagents.reaction(patient, 2)
else
patient.reagents.add_reagent(reagent_id,injection_amount)
C.visible_message("<span class='danger'>[src] injects [patient] with the syringe!</span>", \
"<span class='userdanger'>[src] injects [patient] with the syringe!</span>")
mode = BOT_IDLE
updateicon()
return
reagent_id = null
return
/obj/machinery/bot/medbot/bullet_act(var/obj/item/projectile/Proj)
if(Proj.flag == "taser")
src.stunned = min(stunned+10,20)
stunned = min(stunned+10,20)
..()
/obj/machinery/bot/medbot/explode()
src.on = 0
visible_message("\red <B>[src] blows apart!</B>", 1)
on = 0
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
new /obj/item/weapon/storage/firstaid(Tsec)
@@ -455,9 +506,9 @@
new /obj/item/device/healthanalyzer(Tsec)
if(src.reagent_glass)
src.reagent_glass.loc = Tsec
src.reagent_glass = null
if(reagent_glass)
reagent_glass.loc = Tsec
reagent_glass = null
if (prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
@@ -465,57 +516,17 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
qdel(src)
return
/obj/machinery/bot/medbot/Bump(M as mob|obj) //Leave no door unopened!
if ((istype(M, /obj/machinery/door)) && (!isnull(src.botcard)))
var/obj/machinery/door/D = M
if (!istype(D, /obj/machinery/door/firedoor) && D.check_access(src.botcard) && !istype(D,/obj/machinery/door/poddoor))
D.open()
src.frustration = 0
else if ((istype(M, /mob/living/)) && (!src.anchored))
src.loc = M:loc
src.frustration = 0
return
/* terrible
/obj/machinery/bot/medbot/Bumped(atom/movable/M as mob|obj)
spawn(0)
if (M)
var/turf/T = get_turf(src)
M:loc = T
*/
/*
* Pathfinding procs, allow the medibot to path through doors it has access to.
*/
//Pretty ugh
/*
/turf/proc/AdjacentTurfsAllowMedAccess()
var/L[] = new()
for(var/turf/t in oview(src,1))
if(!t.density)
if(!LinkBlocked(src, t) && !TurfBlockedNonWindowNonDoor(t,get_access("Medical Doctor")))
L.Add(t)
return L
//It isn't blocked if we can open it, man.
/proc/TurfBlockedNonWindowNonDoor(turf/loc, var/list/access)
for(var/obj/O in loc)
if(O.density && !istype(O, /obj/structure/window) && !istype(O, /obj/machinery/door))
return 1
if (O.density && (istype(O, /obj/machinery/door)) && (access.len))
var/obj/machinery/door/D = O
for(var/req in D.req_access)
if(!(req in access)) //doesn't have this access
return 1
return 0
*/
/obj/machinery/bot/medbot/proc/declare(var/crit_patient)
if(declare_cooldown)
return
//var/area/location = get_area(src)
declare_critical(crit_patient)
declare_cooldown = 1
spawn(200) //Twenty seconds
declare_cooldown = 0
/*
* Medbot Assembly -- Can be made out of all three medkits.
@@ -528,7 +539,7 @@
return
//Making a medibot!
if(src.contents.len >= 1)
if(contents.len >= 1)
user << "<span class='notice'>You need to empty [src] out first.</span>"
return
@@ -539,55 +550,51 @@
A.skin = "tox"
else if(istype(src,/obj/item/weapon/storage/firstaid/o2))
A.skin = "o2"
else if(istype(src,/obj/item/weapon/storage/firstaid/tactical))
A.skin = "bezerk"
del(S)
qdel(S)
user.put_in_hands(A)
user << "<span class='notice'>You add the robot arm to the first aid kit.</span>"
user.drop_from_inventory(src)
del(src)
user.before_take_item(src, 1)
qdel(src)
/obj/item/weapon/firstaid_arm_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/pen))
var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN)
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if (!t)
return
if (!in_range(src, usr) && src.loc != usr)
if (!in_range(src, usr) && loc != usr)
return
src.created_name = t
created_name = t
else
switch(build_step)
if(0)
if(istype(W, /obj/item/device/healthanalyzer))
user.drop_item()
del(W)
src.build_step++
qdel(W)
build_step++
user << "<span class='notice'>You add the health sensor to [src].</span>"
src.name = "First aid/robot arm/health analyzer assembly"
src.overlays += image('icons/obj/aibots.dmi', "na_scanner")
name = "First aid/robot arm/health analyzer assembly"
overlays += image('icons/obj/aibots.dmi', "na_scanner")
if(1)
if(isprox(W))
user.drop_item()
del(W)
src.build_step++
qdel(W)
build_step++
user << "<span class='notice'>You complete the Medibot! Beep boop.</span>"
var/turf/T = get_turf(src)
var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T)
S.skin = skin
S.name = created_name
user.before_take_item(src, 1)
qdel(src)
if (src.skin == "bezerk")
var/obj/machinery/bot/medbot/syndicate/S = new /obj/machinery/bot/medbot/syndicate(T)
S.skin = src.skin
S.name = src.created_name
S.req_access = list("150")
else
var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T)
S.skin = src.skin
S.name = src.created_name
user.drop_from_inventory(src)
del(src)
/obj/machinery/bot/medbot/proc/declare_critical(var/crit_patient)
var/area/location = get_area(src)
for(var/mob/living/carbon/human/human in world)
if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/health) | istype(human.glasses, /obj/item/clothing/glasses/hud/health_advanced) && !human.blinded)
if((skin == "bezerk") && (!("syndicate" in human.faction)))
continue
human << "<span class='info'>\icon[human.glasses] Medical emergency! [crit_patient ? "<b>[crit_patient]</b>" : "A patient"] is in critical condition at [location]!"
+214 -194
View File
@@ -19,34 +19,28 @@ var/global/mulebot_count = 0
fire_dam_coeff = 0.7
brute_dam_coeff = 0.5
var/atom/movable/load = null // the loaded crate (usually)
var/beacon_freq = 1400
var/control_freq = 1447
var/list/delivery_beacons = list() //List of beacons that serve as delivery locations.
beacon_freq = 1400
control_freq = 1447
bot_type = MULE_BOT
bot_filter = RADIO_MULEBOT
suffix = ""
var/turf/target // this is turf to navigate to (location of beacon)
var/loaddir = 0 // this the direction to unload onto/load from
var/new_destination = "" // pending new destination (waiting for beacon response)
var/destination = "" // destination description
var/home_destination = "" // tag of home beacon
req_access = list(access_cargo) // added robotics access so assembly line drop-off works properly -veyveyr //I don't think so, Tim. You need to add it to the MULE's hidden robot ID card. -NEO
var/path[] = new()
var/mode = 0 //0 = idle/ready
//1 = loading/unloading
//2 = moving to deliver
//3 = returning to home
//4 = blocked
//5 = computing navigation
//6 = waiting for nav computation
//7 = no destination beacon found (or no route)
mode = BOT_IDLE
var/blockcount = 0 //number of times retried a blocked path
blockcount = 0 //number of times retried a blocked path
var/reached_target = 1 //true if already reached the target
var/refresh = 1 // true to refresh dialogue
var/auto_return = 1 // true if auto return to home beacon after unload
var/auto_pickup = 1 // true if auto-pickup at beacon
var/refresh = 1 // true to refresh dialogue
var/auto_return = 1 // true if auto return to home beacon after unload
var/auto_pickup = 1 // true if auto-pickup at beacon
var/report_delivery = 1 // true if bot will announce an arrival to a location.
var/obj/item/weapon/cell/cell
var/datum/wires/mulebot/wires = null
@@ -68,18 +62,16 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/New()
..()
wires = new(src)
botcard = new(src)
var/datum/job/cargo_tech/J = new/datum/job/cargo_tech
botcard.access = J.get_access()
prev_access = botcard.access
// botcard.access += access_robotics //Why --Ikki
cell = new(src)
cell.charge = 2000
cell.maxcharge = 2000
spawn(5) // must wait for map loading to finish
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = RADIO_MULEBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
add_to_beacons(bot_filter)
mulebot_count += 1
if(!suffix)
@@ -87,9 +79,6 @@ var/global/mulebot_count = 0
name = "\improper Mulebot ([suffix])"
verbs -= /atom/movable/verb/pull
// attack by item
// emag : lock/unlock,
@@ -99,12 +88,12 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/weapon/card/emag))
locked = !locked
user << "\blue You [locked ? "lock" : "unlock"] the mulebot's controls!"
user << "<span class='notice'>You [locked ? "lock" : "unlock"] the mulebot's controls!</span>"
flick("mulebot-emagged", src)
playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 0)
else if(istype(I, /obj/item/weapon/card/id))
playsound(loc, 'sound/effects/sparks1.ogg', 100, 0)
else if(istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda))
if(toggle_lock(user))
user << "\blue Controls [(locked ? "locked" : "unlocked")]."
user << "<span class='notice'>Controls [(locked ? "locked" : "unlocked")].</span>"
else if(istype(I,/obj/item/weapon/cell) && open && !cell)
var/obj/item/weapon/cell/C = I
@@ -114,32 +103,35 @@ var/global/mulebot_count = 0
updateDialog()
else if(istype(I,/obj/item/weapon/screwdriver))
if(locked)
user << "\blue The maintenance hatch cannot be opened or closed while the controls are locked."
user << "<span class='notice'>The maintenance hatch cannot be opened or closed while the controls are locked.</span>"
return
open = !open
if(open)
src.visible_message("[user] opens the maintenance hatch of [src]", "\blue You open [src]'s maintenance hatch.")
visible_message("[user] opens the maintenance hatch of [src]", "<span class='notice'>You open [src]'s maintenance hatch.</span>")
on = 0
icon_state="mulebot-hatch"
else
src.visible_message("[user] closes the maintenance hatch of [src]", "\blue You close [src]'s maintenance hatch.")
visible_message("[user] closes the maintenance hatch of [src]", "<span class='notice'>You close [src]'s maintenance hatch.</span>")
icon_state = "mulebot0"
updateDialog()
else if (istype(I, /obj/item/weapon/wrench))
if (src.health < maxhealth)
src.health = min(maxhealth, src.health+25)
if (health < maxhealth)
health = min(maxhealth, health+25)
user.visible_message(
"\red [user] repairs [src]!",
"\blue You repair [src]!"
"<span class='notice'>[user] repairs [src]!</span>",
"<span class='notice'>You repair [src]!</span>"
)
else
user << "\blue [src] does not need a repair!"
user << "<span class='notice'> [src] does not need a repair!</span>"
else if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/weapon/wirecutters))
if(open)
attack_hand(usr)
else if(load && ismob(load)) // chance to knock off rider
if(prob(1+I.force * 2))
unload(0)
user.visible_message("\red [user] knocks [load] off [src] with \the [I]!", "\red You knock [load] off [src] with \the [I]!")
user.visible_message("<span class='danger'> [user] knocks [load] off [src] with \the [I]!</span>", "<span class='danger'> You knock [load] off [src] with \the [I]!</span>")
else
user << "You hit [src] with \the [I] but to no effect."
else
@@ -162,13 +154,12 @@ var/global/mulebot_count = 0
if(prob(50) && !isnull(load))
unload(0)
if(prob(25))
src.visible_message("\red Something shorts out inside [src]!")
visible_message("<span class='danger'> Something shorts out inside [src]!</span>")
wires.RandomCut()
..()
/obj/machinery/bot/mulebot/attack_ai(var/mob/user)
src.add_hiddenprint(user)
user.set_machine(src)
interact(user, 1)
@@ -181,38 +172,40 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/interact(var/mob/user, var/ai=0)
var/dat
dat += "<TT><B>Multiple Utility Load Effector Mk. III</B></TT><BR><BR>"
dat += "ID: [suffix]<BR>"
dat += "Power: [on ? "On" : "Off"]<BR>"
dat += "<h3>Multiple Utility Load Effector Mk. V</h3>"
dat += "<b>ID:</b> [suffix]<BR>"
dat += "<b>Power:</b> [on ? "On" : "Off"]<BR>"
if(!open)
dat += "Status: "
dat += "<h3>Status</h3>"
dat += "<div class='statusDisplay'>"
switch(mode)
if(0)
dat += "Ready"
if(1)
dat += "Loading/Unloading"
if(2)
dat += "Navigating to Delivery Location"
if(3)
dat += "Navigating to Home"
if(4)
dat += "Waiting for clear path"
if(5,6)
dat += "Calculating navigation path"
if(7)
dat += "Unable to locate destination"
if(BOT_IDLE)
dat += "<span class='good'>Ready</span>"
if(BOT_LOADING)
dat += "<span class='good'>[mode_name[BOT_LOADING]]</span>"
if(BOT_DELIVER)
dat += "<span class='good'>[mode_name[BOT_DELIVER]]</span>"
if(BOT_GO_HOME)
dat += "<span class='good'>[mode_name[BOT_GO_HOME]]</span>"
if(BOT_BLOCKED)
dat += "<span class='average'>[mode_name[BOT_BLOCKED]]</span>"
if(BOT_NAV,BOT_WAIT_FOR_NAV)
dat += "<span class='average'>[mode_name[BOT_NAV]]</span>"
if(BOT_NO_ROUTE)
dat += "<span class='bad'>[mode_name[BOT_NO_ROUTE]]</span>"
dat += "</div>"
dat += "<BR>Current Load: [load ? load.name : "<i>none</i>"]<BR>"
dat += "Destination: [!destination ? "<i>none</i>" : destination]<BR>"
dat += "Power level: [cell ? cell.percent() : 0]%<BR>"
dat += "<b>Current Load:</b> [load ? load.name : "<i>none</i>"]<BR>"
dat += "<b>Destination:</b> [!destination ? "<i>none</i>" : destination]<BR>"
dat += "<b>Power level:</b> [cell ? cell.percent() : 0]%"
if(locked && !ai)
dat += "<HR>Controls are locked <A href='byond://?src=\ref[src];op=unlock'><I>(unlock)</I></A>"
dat += "&nbsp;<br /><div class='notice'>Controls are locked</div><A href='byond://?src=\ref[src];op=unlock'>Unlock Controls</A>"
else
dat += "<HR>Controls are unlocked <A href='byond://?src=\ref[src];op=lock'><I>(lock)</I></A><BR><BR>"
dat += "&nbsp;<br /><div class='notice'>Controls are unlocked</div><A href='byond://?src=\ref[src];op=lock'>Lock Controls</A><BR><BR>"
dat += "<A href='byond://?src=\ref[src];op=power'>Toggle Power</A><BR>"
dat += "<A href='byond://?src=\ref[src];op=stop'>Stop</A><BR>"
@@ -223,15 +216,16 @@ var/global/mulebot_count = 0
dat += "<A href='byond://?src=\ref[src];op=sethome'>Set Home</A><BR>"
dat += "<A href='byond://?src=\ref[src];op=autoret'>Toggle Auto Return Home</A> ([auto_return ? "On":"Off"])<BR>"
dat += "<A href='byond://?src=\ref[src];op=autopick'>Toggle Auto Pickup Crate</A> ([auto_pickup ? "On":"Off"])<BR>"
dat += "<A href='byond://?src=\ref[src];op=report'>Toggle Delivery Reporting</A> ([report_delivery ? "On" : "Off"])<BR>"
if(load)
dat += "<A href='byond://?src=\ref[src];op=unload'>Unload Now</A><BR>"
dat += "<HR>The maintenance hatch is closed.<BR>"
dat += "<div class='notice'>The maintenance hatch is closed.</div>"
else
if(!ai)
dat += "The maintenance hatch is open.<BR><BR>"
dat += "Power cell: "
dat += "<div class='notice'>The maintenance hatch is open.</div><BR>"
dat += "<b>Power cell:</b> "
if(cell)
dat += "<A href='byond://?src=\ref[src];op=cellremove'>Installed</A><BR>"
else
@@ -239,10 +233,14 @@ var/global/mulebot_count = 0
dat += wires()
else
dat += "The bot is in maintenance mode and cannot be controlled.<BR>"
dat += "<div class='notice'>The bot is in maintenance mode and cannot be controlled.</div><BR>"
user << browse("<HEAD><TITLE>Mulebot [suffix ? "([suffix])" : ""]</TITLE></HEAD>[dat]", "window=mulebot;size=350x500")
onclose(user, "mulebot")
//user << browse("<HEAD><TITLE>M.U.L.E. Mk. III [suffix ? "([suffix])" : ""]</TITLE></HEAD>[dat]", "window=mulebot;size=350x500")
//onclose(user, "mulebot")
var/datum/browser/popup = new(user, "mulebot", "M.U.L.E. Mk. V [suffix ? "([suffix])" : ""]", 350, 500)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
return
// returns the wire panel text
@@ -255,7 +253,7 @@ var/global/mulebot_count = 0
return
if (usr.stat)
return
if ((in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon)))
if ((in_range(src, usr) && istype(loc, /turf)) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
switch(href_list["op"])
@@ -263,11 +261,11 @@ var/global/mulebot_count = 0
toggle_lock(usr)
if("power")
if (src.on)
if (on)
turn_off()
else if (cell && !open)
if (!turn_on())
usr << "\red You can't switch on [src]."
usr << "<span class='danger'>You can't switch on [src].</span>"
return
else
return
@@ -282,7 +280,7 @@ var/global/mulebot_count = 0
cell.add_fingerprint(usr)
cell = null
usr.visible_message("\blue [usr] removes the power cell from [src].", "\blue You remove the power cell from [src].")
usr.visible_message("<span class='notice'>[usr] removes the power cell from [src].</span>", "<span class='notice'>You remove the power cell from [src].</span>")
updateDialog()
if("cellinsert")
@@ -294,28 +292,28 @@ var/global/mulebot_count = 0
C.loc = src
C.add_fingerprint(usr)
usr.visible_message("\blue [usr] inserts a power cell into [src].", "\blue You insert the power cell into [src].")
usr.visible_message("<span class='notice'>[usr] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>")
updateDialog()
if("stop")
if(mode >=2)
mode = 0
if(mode >= BOT_DELIVER)
bot_reset()
updateDialog()
if("go")
if(mode == 0)
if(mode == BOT_IDLE)
start()
updateDialog()
if("home")
if(mode == 0 || mode == 2)
if(mode == BOT_IDLE || mode == BOT_DELIVER)
start_home()
updateDialog()
if("destination")
refresh=0
var/new_dest = input("Enter new destination tag", "Mulebot [suffix ? "([suffix])" : ""]", destination) as text|null
var/new_dest = input("Select M.U.L.E. Destination", "Mulebot [suffix ? "([suffix])" : ""]", destination) as null|anything in delivery_beacons
refresh=1
if(new_dest)
set_destination(new_dest)
@@ -351,12 +349,15 @@ var/global/mulebot_count = 0
if("autopick")
auto_pickup = !auto_pickup
if("report")
report_delivery = !report_delivery
if("close")
usr.unset_machine()
usr << browse(null,"window=mulebot")
updateDialog()
//src.updateUsrDialog()
//updateUsrDialog()
else
usr << browse(null, "window=mulebot")
usr.unset_machine()
@@ -369,12 +370,12 @@ var/global/mulebot_count = 0
return !open && cell && cell.charge > 0 && wires.HasPower()
/obj/machinery/bot/mulebot/proc/toggle_lock(var/mob/user)
if(src.allowed(user))
if(allowed(user))
locked = !locked
updateDialog()
return 1
else
user << "\red Access denied."
user << "<span class='danger'>Access denied.</span>"
return 0
// mousedrop a crate to load the bot
@@ -397,8 +398,8 @@ var/global/mulebot_count = 0
// called to load a crate
/obj/machinery/bot/mulebot/proc/load(var/atom/movable/C)
if(wires.LoadCheck() && !istype(C,/obj/structure/closet/crate))
src.visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
return // if not emagged, only allow crates to be loaded
//I'm sure someone will come along and ask why this is here... well people were dragging screen items onto the mule, and that was not cool.
@@ -410,19 +411,16 @@ var/global/mulebot_count = 0
if(get_dist(C, src) > 1 || load || !on)
return
for(var/obj/structure/plasticflaps/P in src.loc)//Takes flaps into account
if(!CanPass(C,P))
return
mode = 1
mode = BOT_LOADING
// if a create, close before loading
var/obj/structure/closet/crate/crate = C
if(istype(crate))
crate.close()
C.loc = src.loc
C.loc = loc
sleep(2)
if(C.loc != src.loc) //To prevent you from going onto more thano ne bot.
if(C.loc != loc) //To prevent you from going onto more thano ne bot.
return
C.loc = src
load = C
@@ -438,22 +436,19 @@ var/global/mulebot_count = 0
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
mode = 0
mode = BOT_IDLE
send_status()
// called to unload the bot
// argument is optional direction to unload
// if zero, unload at bot's location
/obj/machinery/bot/mulebot/proc/unload(var/dirn = 0)
/obj/machinery/bot/mulebot/proc/unload(var/dirn)
if(!load)
return
mode = 1
mode = BOT_LOADING
overlays.Cut()
load.loc = src.loc
load.pixel_y -= 9
load.layer = initial(load.layer)
if(ismob(load))
var/mob/M = load
if(M.client)
@@ -461,13 +456,14 @@ var/global/mulebot_count = 0
M.client.eye = src
load.loc = loc
load.pixel_y -= 9
load.layer = initial(load.layer)
if(dirn)
var/turf/T = src.loc
T = get_step(T,dirn)
if(CanPass(load,T))//Can't get off onto anything that wouldn't let you pass normally
var/turf/T = loc
var/turf/newT = get_step(T,dirn)
if(load.CanPass(load,newT)) //Can't get off onto anything that wouldn't let you pass normally
step(load, dirn)
else
load.loc = src.loc//Drops you right there, so you shouldn't be able to get yourself stuck
load = null
@@ -476,9 +472,9 @@ var/global/mulebot_count = 0
// with items dropping as mobs are loaded
for(var/atom/movable/AM in src)
if(AM == cell || AM == botcard) continue
if(AM == cell || istype(AM , botcard) || AM == Radio) continue
AM.loc = src.loc
AM.loc = loc
AM.layer = initial(AM.layer)
AM.pixel_y = initial(AM.pixel_y)
if(ismob(AM))
@@ -486,47 +482,56 @@ var/global/mulebot_count = 0
if(M.client)
M.client.perspective = MOB_PERSPECTIVE
M.client.eye = src
mode = 0
mode = BOT_IDLE
/obj/machinery/bot/mulebot/call_bot()
..()
var/area/dest_area
if (path && path.len)
target = ai_waypoint //Target is the end point of the path, the waypoint set by the AI.
dest_area = get_area(target)
destination = format_text(dest_area.name)
pathset = 1 //Indicates the AI's custom path is initialized.
start()
/obj/machinery/bot/mulebot/process()
/obj/machinery/bot/mulebot/bot_process()
if(!has_power())
on = 0
return
if(on)
var/speed = (wires.Motor1() ? 1 : 0) + (wires.Motor2() ? 2 : 0)
//world << "speed: [speed]"
var/num_steps = 0
switch(speed)
if(0)
// do nothing
if(1)
process_bot()
spawn(2)
process_bot()
sleep(2)
process_bot()
sleep(2)
process_bot()
sleep(2)
process_bot()
num_steps = 10
if(2)
process_bot()
spawn(4)
process_bot()
num_steps = 5
if(3)
process_bot()
num_steps = 3
if(num_steps)
process_bot()
num_steps--
spawn(0)
for(var/i=num_steps,i>0,i--)
sleep(2)
process_bot()
if(refresh) updateDialog()
/obj/machinery/bot/mulebot/proc/process_bot()
//if(mode) world << "Mode: [mode]"
switch(mode)
if(0) // idle
if(BOT_IDLE) // idle
icon_state = "mulebot0"
return
if(1) // loading/unloading
if(BOT_LOADING) // loading/unloading
return
if(2,3,4) // navigating to deliver,home, or blocked
if(BOT_DELIVER,BOT_GO_HOME,BOT_BLOCKED) // navigating to deliver,home, or blocked
if(loc == target) // reached target
at_target()
@@ -539,26 +544,28 @@ var/global/mulebot_count = 0
if(next == loc)
path -= next
return
if(istype( next, /turf/simulated))
//world << "at ([x],[y]) moving to ([next.x],[next.y])"
if(bloodiness)
var/turf/simulated/T=loc
if(istype(T))
var/goingdir=0
var/newdir = get_dir(next, loc)
if(newdir == dir)
goingdir = newdir
else
newdir = newdir | dir
if(newdir == 3)
newdir = 1
else if(newdir == 12)
newdir = 4
goingdir = newdir
T.AddTracks(/obj/effect/decal/cleanable/blood/tracks/wheels,list(),0,goingdir,currentBloodColor)
if(bloodiness)
var/obj/effect/decal/cleanable/blood/tracks/B = new(loc)
var/newdir = get_dir(next, loc)
if(newdir == dir)
B.dir = newdir
else
newdir = newdir | dir
if(newdir == 3)
newdir = 1
else if(newdir == 12)
newdir = 4
B.dir = newdir
bloodiness--
var/moved = step_towards(src, next) // attempt to move
if(cell) cell.use(1)
if(moved) // successful move
@@ -567,14 +574,14 @@ var/global/mulebot_count = 0
path -= loc
if(mode==4)
if(mode == BOT_BLOCKED)
spawn(1)
send_status()
if(destination == home_destination)
mode = 3
mode = BOT_GO_HOME
else
mode = 2
mode = BOT_DELIVER
else // failed to move
@@ -583,73 +590,74 @@ var/global/mulebot_count = 0
blockcount++
mode = 4
mode = BOT_BLOCKED
if(blockcount == 3)
src.visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0)
visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
if(blockcount > 5) // attempt 5 times before recomputing
if(blockcount > 10) // attempt 10 times before recomputing
// find new path excluding blocked turf
src.visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
spawn(2)
calc_path(next)
if(path.len > 0)
src.visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
mode = 4
mode =6
visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
mode = BOT_BLOCKED
mode = BOT_WAIT_FOR_NAV
return
return
else
src.visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0)
visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
//world << "Bad turf."
mode = 5
mode = BOT_NAV
return
else
//world << "No path."
mode = 5
mode = BOT_NAV
return
if(5) // calculate new path
if(BOT_NAV) // calculate new path
//world << "Calc new path."
mode = 6
mode = BOT_WAIT_FOR_NAV
spawn(0)
calc_path()
if(path.len > 0)
blockcount = 0
mode = 4
src.visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
mode = BOT_BLOCKED
visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
else
src.visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
mode = 7
mode = BOT_NO_ROUTE
//if(6)
//world << "Pending path calc."
//if(7)
//world << "No dest / no route."
return
// calculates a path to the current destination
// given an optional turf to avoid
/obj/machinery/bot/mulebot/proc/calc_path(var/turf/avoid = null)
src.path = AStar(src.loc, src.target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 250, id=botcard, exclude=avoid)
if(!src.path)
src.path = list()
/obj/machinery/bot/mulebot/calc_path(var/turf/avoid = null)
path = AStar(loc, target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 250, id=botcard, exclude=avoid)
if(!path)
path = list()
// sets the current destination
// signals all beacons matching the delivery code
// beacons will return a signal giving their locations
/obj/machinery/bot/mulebot/proc/set_destination(var/new_dest)
/obj/machinery/bot/mulebot/set_destination(var/new_dest)
spawn(0)
new_destination = new_dest
post_signal(beacon_freq, "findbeacon", "delivery")
@@ -658,9 +666,9 @@ var/global/mulebot_count = 0
// starts bot moving to current destination
/obj/machinery/bot/mulebot/proc/start()
if(destination == home_destination)
mode = 3
mode = BOT_GO_HOME
else
mode = 2
mode = BOT_DELIVER
icon_state = "mulebot[(wires.MobAvoid() != 0)]"
// starts bot moving to home
@@ -668,17 +676,27 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/proc/start_home()
spawn(0)
set_destination(home_destination)
mode = 4
mode = BOT_BLOCKED
icon_state = "mulebot[(wires.MobAvoid() != 0)]"
// called when bot reaches current target
/obj/machinery/bot/mulebot/proc/at_target()
if(!reached_target)
src.visible_message("[src] makes a chiming sound!", "You hear a chime.")
playsound(src.loc, 'sound/machines/chime.ogg', 50, 0)
radio_frequency = SUP_FREQ //Supply channel
visible_message("[src] makes a chiming sound!", "You hear a chime.")
playsound(loc, 'sound/machines/chime.ogg', 50, 0)
reached_target = 1
if(pathset) //The AI called us here, so notify it of our arrival.
loaddir = dir //The MULE will attempt to load a crate in whatever direction the MULE is "facing".
if(calling_ai)
calling_ai << "<span class='notice'>\icon[src] [src] wirelessly plays a chiming sound!</span>"
playsound(calling_ai, 'sound/machines/chime.ogg',40, 0)
calling_ai = null
radio_frequency = AIPRIV_FREQ //Report on AI Private instead if the AI is controlling us.
if(load) // if loaded, unload at target
speak("Destination <b>[destination]</b> reached. Unloading [load]."/*,radio_frequency*/)
unload(loaddir)
else
// not loaded
@@ -693,14 +711,16 @@ var/global/mulebot_count = 0
AM = locate(/obj/structure/closet/crate) in get_step(loc,loaddir)
if(AM)
load(AM)
if(report_delivery)
speak("Now loading [load] at <b>[get_area(src)]</b>."/*,radio_frequency*/)
// whatever happened, check to see if we return home
if(auto_return && destination != home_destination)
// auto return set and not at home already
start_home()
mode = 4
mode = BOT_BLOCKED
else
mode = 0 // otherwise go idle
bot_reset() // otherwise go idle
send_status() // report status to anyone listening
@@ -712,23 +732,22 @@ var/global/mulebot_count = 0
var/mob/M = obs
if(ismob(M))
if(istype(M,/mob/living/silicon/robot))
src.visible_message("\red [src] bumps into [M]!")
visible_message("<span class='danger'>[src] bumps into [M]!</span>")
else
src.visible_message("\red [src] knocks over [M]!")
visible_message("<span class='danger'>[src] knocks over [M]!</span>")
M.stop_pulling()
M.Stun(8)
M.Weaken(5)
M.lying = 1
..()
/obj/machinery/bot/mulebot/alter_health()
return get_turf(src)
// called from mob/living/carbon/human/HasEntered()
// called from mob/living/carbon/human/Crossed()
// when mulebot is in the same loc
/obj/machinery/bot/mulebot/proc/RunOver(var/mob/living/carbon/human/H)
src.visible_message("\red [src] drives over [H]!")
visible_message("\red [src] drives over [H]!")
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
var/damage = rand(5,15)
@@ -746,12 +765,6 @@ var/global/mulebot_count = 0
bloodiness += 4
currentBloodColor="#A10808" // For if species get different blood colors.
/obj/machinery/bot/mulebot/proc/RunOverCreature(var/mob/living/H,var/bloodcolor)
src.visible_message("\red [src] drives over [H]!")
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
bloodiness += 4
currentBloodColor=bloodcolor // For if species get different blood colors.
// player on mulebot attempted to move
/obj/machinery/bot/mulebot/relaymove(var/mob/user)
if(user.stat)
@@ -784,7 +797,7 @@ var/global/mulebot_count = 0
// process control input
switch(recv)
if("stop")
mode = 0
bot_reset()
return
if("go")
@@ -820,6 +833,7 @@ var/global/mulebot_count = 0
// receive response from beacon
recv = signal.data["beacon"]
if(wires.BeaconRX())
if(recv == new_destination) // if the recvd beacon location matches the set destination
// the we will navigate there
@@ -834,12 +848,18 @@ var/global/mulebot_count = 0
calc_path()
updateDialog()
//Detects and stores current active delivery beacons.
if(signal.data["beacon"])
if(!delivery_beacons)
delivery_beacons = new()
delivery_beacons[signal.data["beacon"] ] = signal.source
// send a radio signal with a single data key/value pair
/obj/machinery/bot/mulebot/proc/post_signal(var/freq, var/key, var/value)
/obj/machinery/bot/mulebot/post_signal(var/freq, var/key, var/value)
post_signal_multiple(freq, list("[key]" = value) )
// send a radio signal with multiple data key/values
/obj/machinery/bot/mulebot/proc/post_signal_multiple(var/freq, var/list/keyval)
/obj/machinery/bot/mulebot/post_signal_multiple(var/freq, var/list/keyval)
if(freq == beacon_freq && !(wires.BeaconRX()))
return
@@ -861,17 +881,17 @@ var/global/mulebot_count = 0
//world << "sent [key],[keyval[key]] on [freq]"
if (signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if (signal.data["type"] == "mulebot")
else if (signal.data["type"] == MULE_BOT)
frequency.post_signal(src, signal, filter = RADIO_MULEBOT)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
/obj/machinery/bot/mulebot/proc/send_status()
/obj/machinery/bot/mulebot/send_status()
var/list/kv = list(
"type" = "mulebot",
"type" = MULE_BOT,
"name" = suffix,
"loca" = (loc ? loc.loc : "Unknown"), // somehow loc can be null and cause a runtime - Quarxink
"loca" = get_area(src),
"mode" = mode,
"powr" = (cell ? cell.percent() : 0),
"dest" = destination,
@@ -891,7 +911,7 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/explode()
src.visible_message("\red <B>[src] blows apart!</B>", 1)
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
new /obj/item/device/assembly/prox_sensor(Tsec)
@@ -907,6 +927,6 @@ var/global/mulebot_count = 0
s.set_up(3, 1, src)
s.start()
new /obj/effect/decal/cleanable/oil(src.loc)
new /obj/effect/decal/cleanable/oil(loc)
unload(0)
del(src)
qdel(src)
+231 -535
View File
@@ -1,5 +1,5 @@
/obj/machinery/bot/secbot
name = "Securitron"
name = "\improper Securitron"
desc = "A little security robot. He looks less than thrilled."
icon = 'icons/obj/aibots.dmi'
icon_state = "secbot0"
@@ -17,41 +17,15 @@
var/threatlevel = 0
var/target_lastloc //Loc of target when arrested.
var/last_found //There's a delay
var/frustration = 0
// var/emagged = 0 //Emagged Secbots view everyone as a criminal
var/declare_arrests = 1 //When making an arrest, should it notify everyone wearing sechuds?
var/declare_arrests = 1 //When making an arrest, should it notify everyone on the security channel?
var/idcheck = 0 //If true, arrest people with no IDs
var/weaponscheck = 1 //If true, arrest people for weapons if they don't have access
var/weaponscheck = 1 //If true, arrest people for weapons if they lack access
var/check_records = 1 //Does it check security records?
var/arrest_type = 0 //If true, don't handcuff
var/next_harm_time = 0
var/mode = 0
#define SECBOT_IDLE 0 // idle
#define SECBOT_HUNT 1 // found target, hunting
#define SECBOT_PREP_ARREST 2 // at target, preparing to arrest
#define SECBOT_ARREST 3 // arresting target
#define SECBOT_START_PATROL 4 // start patrol
#define SECBOT_PATROL 5 // patrolling
#define SECBOT_SUMMON 6 // summoned by PDA
var/auto_patrol = 0 // set to make bot automatically patrol
var/beacon_freq = 1445 // navigation beacon frequency
var/control_freq = 1447 // bot control frequency
var/turf/patrol_target // this is turf to navigate to (location of beacon)
var/new_destination // pending new destination (waiting for beacon response)
var/destination // destination description tag
var/next_destination // the next destination in the patrol route
var/list/path = new // list of path turfs
var/blockcount = 0 //number of times retried a blocked path
var/awaiting_beacon = 0 // count of pticks awaiting a beacon response
var/nearest_beacon // the nearest beacon's tag
var/turf/nearest_beacon_loc // the nearest beacon's location
radio_frequency = SEC_FREQ //Security channel
bot_type = SEC_BOT
bot_filter = RADIO_SECBOT
//List of weapons that secbots will not arrest for
var/safe_weapons = list(\
@@ -59,24 +33,25 @@
/obj/item/weapon/gun/energy/laser/redtag,\
/obj/item/weapon/gun/energy/laser/practice,\
/obj/item/weapon/melee/telebaton,\
/obj/item/weapon/gun/energy/kinetic_accelerator,\
/obj/item/weapon/melee/baton/loaded/ntcane)
/obj/machinery/bot/secbot/beepsky
name = "Officer Beep O'sky"
desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey."
name = "Officer Beepsky"
desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey."
idcheck = 0
weaponscheck = 1
weaponscheck = 0
auto_patrol = 1
/obj/machinery/bot/secbot/pingsky
name = "Officer Pingsky"
desc = "It's Officer Pingsky! Delegated to satellite guard duty for harbouring anti-human sentiment."
declare_arrests = 0
radio_frequency = AIPRIV_FREQ
/obj/item/weapon/secbot_assembly
name = "helmet/signaler assembly"
desc = "Some sort of bizarre assembly."
name = "incomplete securitron assembly"
desc = "Some sort of bizarre assembly made from a proximity sensor, helmet, and signaler."
icon = 'icons/obj/aibots.dmi'
icon_state = "helmet_signaler"
item_state = "helmet"
@@ -87,30 +62,38 @@
/obj/machinery/bot/secbot/New()
..()
src.icon_state = "secbot[src.on]"
icon_state = "secbot[on]"
spawn(3)
src.botcard = new /obj/item/weapon/card/id(src)
var/datum/job/detective/J = new /datum/job/detective
src.botcard.access = J.get_access()
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
var/datum/job/detective/J = new/datum/job/detective
botcard.access = J.get_access()
prev_access = botcard.access
add_to_beacons(bot_filter)
/obj/machinery/bot/secbot/turn_on()
..()
src.icon_state = "secbot[src.on]"
src.updateUsrDialog()
icon_state = "secbot[on]"
updateUsrDialog()
/obj/machinery/bot/secbot/turn_off()
..()
src.target = null
src.oldtarget_name = null
src.anchored = 0
src.mode = SECBOT_IDLE
icon_state = "secbot[on]"
updateUsrDialog()
/obj/machinery/bot/secbot/bot_reset()
..()
target = null
oldtarget_name = null
anchored = 0
walk_to(src,0)
src.icon_state = "secbot[src.on]"
src.updateUsrDialog()
last_found = world.time
/obj/machinery/bot/secbot/set_custom_texts()
text_hack = "You overload [name]'s target identification system."
text_dehack = "You reboot [name] and restore the target identification."
text_dehack_fail = "[name] refuses to accept your authority!"
/obj/machinery/bot/secbot/attack_hand(mob/user as mob)
. = ..()
@@ -121,151 +104,123 @@
/obj/machinery/bot/secbot/interact(mob/user as mob)
var/dat
dat += hack(user)
dat += text({"
<TT><B>Securitron v1.6 controls</B></TT><BR><BR>
Status: []<BR>
Behaviour controls are [src.locked ? "locked" : "unlocked"]<BR>
Maintenance panel panel is [src.open ? "opened" : "closed"]<BR>"},
Behaviour controls are [locked ? "locked" : "unlocked"]<BR>
Maintenance panel panel is [open ? "opened" : "closed"]"},
"<A href='?src=\ref[src];power=1'>[src.on ? "On" : "Off"]</A>" )
"<A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A>" )
if(!src.locked || issilicon(user))
if(!locked || issilicon(user))
dat += text({"<BR>
Arrest for No ID: []<BR>
Arrest Unidentifiable Persons: []<BR>
Arrest for Unauthorized Weapons: []<BR>
Arrest for Warrant: []<BR>
<BR>
Operating Mode: []<BR>
Report Arrests[]<BR>
Auto Patrol: []"},
"<A href='?src=\ref[src];operation=idcheck'>[src.idcheck ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=weaponscheck'>[src.weaponscheck ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=ignorerec'>[src.check_records ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=switchmode'>[src.arrest_type ? "Detain" : "Arrest"]</A>",
"<A href='?src=\ref[src];operation=declarearrests'>[src.declare_arrests ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=idcheck'>[idcheck ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=weaponscheck'>[weaponscheck ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=ignorerec'>[check_records ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=switchmode'>[arrest_type ? "Detain" : "Arrest"]</A>",
"<A href='?src=\ref[src];operation=declarearrests'>[declare_arrests ? "Yes" : "No"]</A>",
"<A href='?src=\ref[src];operation=patrol'>[auto_patrol ? "On" : "Off"]</A>" )
var/datum/browser/popup = new(user, "autosec", "Securitron v1.5 controls")
var/datum/browser/popup = new(user, "autosec", "Automatic Security Unit v1.6")
popup.set_content(dat)
popup.open()
return
/obj/machinery/bot/secbot/Topic(href, href_list)
usr.set_machine(src)
src.add_fingerprint(usr)
if((href_list["power"]) && (src.allowed(usr)))
if(src.on)
turn_off()
else
turn_on()
return
..()
switch(href_list["operation"])
if("idcheck")
src.idcheck = !src.idcheck
src.updateUsrDialog()
idcheck = !idcheck
updateUsrDialog()
if("weaponscheck")
src.weaponscheck = !src.weaponscheck
src.updateUsrDialog()
weaponscheck = !weaponscheck
updateUsrDialog()
if("ignorerec")
src.check_records = !src.check_records
src.updateUsrDialog()
check_records = !check_records
updateUsrDialog()
if("switchmode")
src.arrest_type = !src.arrest_type
src.updateUsrDialog()
if("patrol")
auto_patrol = !auto_patrol
mode = SECBOT_IDLE
arrest_type = !arrest_type
updateUsrDialog()
if("declarearrests")
src.declare_arrests = !src.declare_arrests
src.updateUsrDialog()
if("hack")
if(!src.emagged)
src.emagged = 2
src.hacked = 1
usr << "<span class='warning'>You overload [src]'s target identification system.</span>"
else if(!src.hacked)
usr << "<span class='userdanger'>[src] refuses to accept your authority!</span>"
else
src.emagged = 0
src.hacked = 0
usr << "<span class='notice'>You reboot [src] and restore the target identification.</span>"
src.updateUsrDialog()
declare_arrests = !declare_arrests
updateUsrDialog()
/obj/machinery/bot/secbot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.allowed(user) && !open && !emagged)
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
if(allowed(user) && !open && !emagged)
locked = !locked
user << "Controls are now [locked ? "locked." : "unlocked."]"
updateUsrDialog()
else
if(emagged)
user << "<span class='warning'>ERROR</span>"
if(open)
user << "\red Please close the access panel before locking it."
user << "<span class='danger'>Please close the access panel before locking it.</span>"
else
user << "\red Access denied."
user << "<span class='danger'> Access denied.</span>"
else
..()
if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!src.target))
src.target = user
src.mode = SECBOT_HUNT
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry.
return
if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
threatlevel = user.assess_threat(src)
threatlevel += 6
if(threatlevel >= 4)
target = user
mode = BOT_HUNT
/obj/machinery/bot/secbot/Emag(mob/user as mob)
..()
if((!locked && open) || !user)
if(user) user << "\red You short out [src]'s target assessment circuits."
spawn(0)
for(var/mob/O in hearers(src, null))
O.show_message("\red <B>[src] buzzes oddly!</B>", 1)
src.target = null
if(user) src.oldtarget_name = user.name
src.last_found = world.time
src.anchored = 0
src.declare_arrests = 0
src.emagged = 2
src.on = 1
src.icon_state = "secbot[src.on]"
mode = SECBOT_IDLE
/obj/machinery/bot/secbot/process()
//set background = 1
if(emagged == 2)
if(user)
user << "<span class='danger'> You short out [src]'s target assessment circuits.</span>"
oldtarget_name = user.name
visible_message("<span class='danger'>[src] buzzes oddly!</span>")
declare_arrests = 0
icon_state = "secbot[on]"
if(!src.on)
/obj/machinery/bot/secbot/bot_process()
if (!..())
return
switch(mode)
if(SECBOT_IDLE) // idle
if(BOT_IDLE) // idle
walk_to(src,0)
look_for_perp() // see if any criminals are in range
if(!mode && auto_patrol) // still idle, and set to patrol
mode = SECBOT_START_PATROL // switch to patrol mode
mode = BOT_START_PATROL // switch to patrol mode
if(SECBOT_HUNT) // hunting for perp
if(BOT_HUNT) // hunting for perp
// if can't reach perp for long enough, go idle
if(src.frustration >= 8)
// for(var/mob/O in hearers(src, null))
// O << "<span class='game say'><span class='name'>[src]</span> beeps, \"Backup requested! Suspect has evaded arrest.\""
src.target = null
src.last_found = world.time
src.frustration = 0
src.mode = SECBOT_IDLE
if(frustration >= 8)
walk_to(src,0)
back_to_idle()
return
if(target) // make sure target exists
if(src.Adjacent(target) && isturf(src.target.loc)) // if right next to perp
playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
src.icon_state = "secbot-c"
if(Adjacent(target) && isturf(target.loc)) // if right next to perp
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
icon_state = "secbot-c"
spawn(2)
src.icon_state = "secbot[src.on]"
var/mob/living/carbon/M = src.target
var/maxstuns = 4
icon_state = "secbot[on]"
var/mob/living/carbon/M = target
if(istype(M, /mob/living/carbon/human))
if(M.stuttering < 5 && (!(M_HULK in M.mutations)))
if( M.stuttering < 5 && !(M_HULK in M.mutations) )
M.stuttering = 5
M.Stun(5)
M.Weaken(5)
@@ -275,412 +230,146 @@ Auto Patrol: []"},
M.Stun(5)
if(declare_arrests)
//var/area/location = get_area(src)
declare_arrest()
target.visible_message("<span class='danger'>[src.target] has been stunned by [src]!</span>",\
"<span class='userdanger'>[src.target] has been stunned by [src]!</span>")
target.visible_message("<span class='danger'>[target] has been stunned by [src]!</span>",\
"<span class='userdanger'>[target] has been stunned by [src]!</span>")
maxstuns--
if(maxstuns <= 0)
target = null
mode = SECBOT_PREP_ARREST
src.anchored = 1
src.target_lastloc = M.loc
mode = BOT_PREP_ARREST
anchored = 1
target_lastloc = M.loc
return
else // not next to perp
var/turf/olddist = get_dist(src, src.target)
walk_to(src, src.target,1,4)
if((get_dist(src, src.target)) >= (olddist))
src.frustration++
var/turf/olddist = get_dist(src, target)
walk_to(src, target,1,4)
if((get_dist(src, target)) >= (olddist))
frustration++
else
src.frustration = 0
frustration = 0
else
src.frustration = 8
back_to_idle()
if(SECBOT_PREP_ARREST) // preparing to arrest target
if(BOT_PREP_ARREST) // preparing to arrest target
// see if he got away
if((get_dist(src, src.target) > 1) || ((src.target:loc != src.target_lastloc) && src.target:weakened < 2))
src.anchored = 0
mode = SECBOT_HUNT
// see if he got away. If he's no no longer adjacent or inside a closet or about to get up, we hunt again.
if( !Adjacent(target) || !isturf(target.loc) || target.weakened < 2 )
back_to_hunt()
return
if(istype(src.target,/mob/living/carbon))
var/mob/living/carbon/C = target
if(!C.handcuffed && !src.arrest_type)
playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
mode = SECBOT_ARREST
target.visible_message("<span class='danger'>[src] is trying to put handcuffs on [src.target]!</span>",\
"<span class='userdanger'>[src] is trying to put handcuffs on [src.target]!</span>")
spawn(60)
if(get_dist(src, src.target) <= 1)
/*if(src.target.handcuffed)
return*/
if(istype(src.target,/mob/living/carbon))
C = target
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/handcuffs(target)
C.update_inv_handcuffed() //update the handcuffs overlay
mode = SECBOT_IDLE
src.target = null
src.anchored = 0
src.last_found = world.time
src.frustration = 0
playsound(src.loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0)
// var/arrest_message = pick("Have a secure day!","I AM THE LAW.", "God made tomorrow for the crooks we don't catch today.","You can't outrun a radio.")
// src.speak(arrest_message)
if(iscarbon(target) && target.canBeHandcuffed())
if(!arrest_type)
if(!target.handcuffed) //he's not cuffed? Try to cuff him!
mode = BOT_ARREST
playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
target.visible_message("<span class='danger'>[src] is trying to put handcuffs on [target]!</span>",\
"<span class='userdanger'>[src] is trying to put handcuffs on [target]!</span>")
spawn(80)
if( !Adjacent(target) || !isturf(target.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
return
if(!target.handcuffed)
target.handcuffed = new /obj/item/weapon/handcuffs(target)
target.update_inv_handcuffed(0) //update the handcuffs overlay
playsound(loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0)
back_to_idle()
else
back_to_idle()
return
else
mode = SECBOT_IDLE
src.target = null
src.anchored = 0
src.last_found = world.time
src.frustration = 0
if(SECBOT_ARREST) // arresting
if(!target || !istype(target, /mob/living/carbon))
src.anchored = 0
mode = SECBOT_IDLE
back_to_idle()
return
else
var/mob/living/carbon/C = target
if(!C.handcuffed)
src.anchored = 0
mode = SECBOT_IDLE
return
if(BOT_ARREST)
if (!target)
anchored = 0
mode = BOT_IDLE
last_found = world.time
frustration = 0
return
if(SECBOT_START_PATROL) // start a patrol
if(path != null)
if(path.len > 0 && patrol_target) // have a valid path, so just resume
mode = SECBOT_PATROL
return
if(target.handcuffed) //no target or target cuffed? back to idle.
back_to_idle()
return
else if(patrol_target) // has patrol target already
spawn(0)
calc_path() // so just find a route to it
if(path.len == 0)
patrol_target = 0
return
mode = SECBOT_PATROL
if( !Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.weakened < 2) ) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again.
back_to_hunt()
return
else //Try arresting again if the target escapes.
mode = BOT_PREP_ARREST
anchored = 0
if(BOT_START_PATROL)
look_for_perp()
start_patrol()
else // no patrol target, so need a new one
find_patrol_target()
speak("Engaging patrol mode.")
if(BOT_PATROL)
look_for_perp()
bot_patrol()
if(SECBOT_PATROL) // patrol mode
patrol_step()
spawn(5)
if(mode == SECBOT_PATROL)
patrol_step()
if(SECBOT_SUMMON) // summoned to PDA
patrol_step()
spawn(4)
if(mode == SECBOT_SUMMON)
patrol_step()
sleep(4)
patrol_step()
return
/obj/machinery/bot/secbot/proc/back_to_idle()
anchored = 0
mode = BOT_IDLE
target = null
last_found = world.time
frustration = 0
spawn(0)
bot_process() //ensure bot quickly responds
// perform a single patrol step
/obj/machinery/bot/secbot/proc/patrol_step()
if(loc == patrol_target) // reached target
at_patrol_target()
return
else if(path.len > 0 && patrol_target) // valid path
var/turf/next = path[1]
if(next == loc)
path -= next
return
if(istype( next, /turf/simulated))
var/moved = step_towards(src, next) // attempt to move
if(moved) // successful move
blockcount = 0
path -= loc
look_for_perp()
else // failed to move
blockcount++
if(blockcount > 5) // attempt 5 times before recomputing
// find new path excluding blocked turf
spawn(2)
calc_path(next)
if(path.len == 0)
find_patrol_target()
else
blockcount = 0
return
return
else // not a valid turf
mode = SECBOT_IDLE
return
else // no path, so calculate new one
mode = SECBOT_START_PATROL
// finds a new patrol target
/obj/machinery/bot/secbot/proc/find_patrol_target()
send_status()
if(awaiting_beacon) // awaiting beacon response
awaiting_beacon++
if(awaiting_beacon > 5) // wait 5 secs for beacon response
find_nearest_beacon() // then go to nearest instead
return
if(next_destination)
set_destination(next_destination)
else
find_nearest_beacon()
return
// finds the nearest beacon to self
// signals all beacons matching the patrol code
/obj/machinery/bot/secbot/proc/find_nearest_beacon()
nearest_beacon = null
new_destination = "__nearest__"
post_signal(beacon_freq, "findbeacon", "patrol")
awaiting_beacon = 1
spawn(10)
awaiting_beacon = 0
if(nearest_beacon)
set_destination(nearest_beacon)
else
auto_patrol = 0
mode = SECBOT_IDLE
speak("Disengaging patrol mode.")
send_status()
/obj/machinery/bot/secbot/proc/at_patrol_target()
find_patrol_target()
return
// sets the current destination
// signals all beacons matching the patrol code
// beacons will return a signal giving their locations
/obj/machinery/bot/secbot/proc/set_destination(var/new_dest)
new_destination = new_dest
post_signal(beacon_freq, "findbeacon", "patrol")
awaiting_beacon = 1
// receive a radio signal
// used for beacon reception
/obj/machinery/bot/secbot/receive_signal(datum/signal/signal)
//log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/bot/secbot/receive_signal([signal.debug_print()])")
if(!on)
return
/*
world << "rec signal: [signal.source]"
for(var/x in signal.data)
world << "* [x] = [signal.data[x]]"
*/
var/recv = signal.data["command"]
// process all-bot input
if(recv=="bot_status")
send_status()
// check to see if we are the commanded bot
if(signal.data["active"] == src)
// process control input
switch(recv)
if("stop")
mode = SECBOT_IDLE
auto_patrol = 0
return
if("go")
mode = SECBOT_IDLE
auto_patrol = 1
return
if("summon")
patrol_target = signal.data["target"]
next_destination = destination
destination = null
awaiting_beacon = 0
mode = SECBOT_SUMMON
calc_path()
speak("Responding.")
return
// receive response from beacon
recv = signal.data["beacon"]
var/valid = signal.data["patrol"]
if(!recv || !valid)
return
if(recv == new_destination) // if the recvd beacon location matches the set destination
// the we will navigate there
destination = new_destination
patrol_target = signal.source.loc
next_destination = signal.data["next_patrol"]
awaiting_beacon = 0
// if looking for nearest beacon
else if(new_destination == "__nearest__")
var/dist = get_dist(src,signal.source.loc)
if(nearest_beacon)
// note we ignore the beacon we are located at
if(dist>1 && dist<get_dist(src,nearest_beacon_loc))
nearest_beacon = recv
nearest_beacon_loc = signal.source.loc
return
else
return
else if(dist > 1)
nearest_beacon = recv
nearest_beacon_loc = signal.source.loc
return
// send a radio signal with a single data key/value pair
/obj/machinery/bot/secbot/proc/post_signal(var/freq, var/key, var/value)
post_signal_multiple(freq, list("[key]" = value) )
// send a radio signal with multiple data key/values
/obj/machinery/bot/secbot/proc/post_signal_multiple(var/freq, var/list/keyval)
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
//for(var/key in keyval)
// signal.data[key] = keyval[key]
signal.data = keyval
//world << "sent [key],[keyval[key]] on [freq]"
if(signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if(signal.data["type"] == "secbot")
frequency.post_signal(src, signal, filter = RADIO_SECBOT)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
/obj/machinery/bot/secbot/proc/send_status()
var/list/kv = list(
"type" = "secbot",
"name" = name,
"loca" = loc.loc, // area
"mode" = mode
)
post_signal_multiple(control_freq, kv)
// calculates a path to the current destination
// given an optional turf to avoid
/obj/machinery/bot/secbot/proc/calc_path(var/turf/avoid = null)
src.path = AStar(src.loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance_cardinal, 0, 120, id=botcard, exclude=avoid)
if(!src.path)
src.path = list()
/obj/machinery/bot/secbot/proc/back_to_hunt()
anchored = 0
frustration = 0
mode = BOT_HUNT
spawn(0)
bot_process() //ensure bot quickly responds
// look for a criminal in view of the bot
/obj/machinery/bot/secbot/proc/look_for_perp()
src.anchored = 0
anchored = 0
for (var/mob/living/carbon/C in view(7,src)) //Let's find us a criminal
if((C.stat) || (C.handcuffed))
continue
if((C.name == src.oldtarget_name) && (world.time < src.last_found + 100))
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
src.threatlevel = C.assess_threat(src)
threatlevel = C.assess_threat(src)
if(!src.threatlevel)
if(!threatlevel)
continue
else if(src.threatlevel >= 4)
src.target = C
src.oldtarget_name = C.name
src.speak("Level [src.threatlevel] infraction alert!")
playsound(src.loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0)
src.visible_message("<b>[src]</b> points at [C.name]!")
mode = SECBOT_HUNT
else if(threatlevel >= 4)
target = C
oldtarget_name = C.name
speak("Level [threatlevel] infraction alert!")
playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0)
visible_message("<b>[src]</b> points at [C.name]!")
mode = BOT_HUNT
spawn(0)
process() // ensure bot quickly responds to a perp
bot_process() // ensure bot quickly responds to a perp
break
else
continue
/obj/machinery/bot/secbot/proc/check_for_weapons(var/obj/item/slot_item)
if(istype(slot_item, /obj/item/weapon/gun) || istype(slot_item, /obj/item/weapon/melee))
if(!(slot_item.type in safe_weapons))
return 1
return 0
/obj/machinery/bot/secbot/Bump(M as mob|obj) //Leave no door unopened!
if((istype(M, /obj/machinery/door)) && (!isnull(src.botcard)))
var/obj/machinery/door/D = M
if(!istype(D, /obj/machinery/door/firedoor) && D.check_access(src.botcard) && !istype(D,/obj/machinery/door/poddoor))
D.open()
src.frustration = 0
else if((istype(M, /mob/living/)) && (!src.anchored))
src.loc = M:loc
src.frustration = 0
return
/* terrible
/obj/machinery/bot/secbot/Bumped(atom/movable/M as mob|obj)
spawn(0)
if(M)
var/turf/T = get_turf(src)
M:loc = T
*/
/obj/machinery/bot/secbot/explode()
walk_to(src,0)
src.visible_message("\red <B>[src] blows apart!</B>", 1)
visible_message("<span class='userdanger'>[src] blows apart!</span>")
var/turf/Tsec = get_turf(src)
var/obj/item/weapon/secbot_assembly/Sa = new /obj/item/weapon/secbot_assembly(Tsec)
Sa.build_step = 1
Sa.overlays += image('icons/obj/aibots.dmi', "hs_hole")
Sa.created_name = src.name
Sa.overlays += "hs_hole"
Sa.created_name = name
new /obj/item/device/assembly/prox_sensor(Tsec)
new /obj/item/weapon/melee/baton/loaded(Tsec)
new /obj/item/weapon/melee/baton(Tsec)
if(prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
@@ -689,14 +378,14 @@ Auto Patrol: []"},
s.set_up(3, 1, src)
s.start()
new /obj/effect/decal/cleanable/oil(src.loc)
del(src)
new /obj/effect/decal/cleanable/oil(loc)
qdel(src)
/obj/machinery/bot/secbot/attack_alien(var/mob/living/carbon/alien/user as mob)
..()
if(!isalien(target))
src.target = user
src.mode = SECBOT_HUNT
target = user
mode = BOT_HUNT
//Secbot Construction
@@ -706,63 +395,70 @@ Auto Patrol: []"},
..()
return
if(src.type != /obj/item/clothing/head/helmet) //Eh, but we don't want people making secbots out of space helmets.
if(type != /obj/item/clothing/head/helmet) //Eh, but we don't want people making secbots out of space helmets.
return
if(S.secured)
del(S)
qdel(S)
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
user.put_in_hands(A)
user << "You add the signaler to the helmet."
user.drop_from_inventory(src)
del(src)
user << "<span class='notice'>You add the signaler to the helmet.</span>"
user.before_take_item(src, 1)
qdel(src)
else
return
/obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/weapon/secbot_assembly/attackby(obj/item/I, mob/user)
..()
if((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
src.build_step++
src.overlays += image('icons/obj/aibots.dmi', "hs_hole")
user << "You weld a hole in [src]!"
if(istype(I, /obj/item/weapon/weldingtool))
if(!build_step)
var/obj/item/weapon/weldingtool/WT = I
if(WT.remove_fuel(0, user))
build_step++
overlays += "hs_hole"
user << "<span class='notice'>You weld a hole in [src]!</span>"
else if(build_step == 1)
var/obj/item/weapon/weldingtool/WT = I
if(WT.remove_fuel(0, user))
build_step--
overlays -= "hs_hole"
user << "<span class='notice'>You weld the hole in [src] shut!</span>"
else if(isprox(W) && (src.build_step == 1))
else if(isprox(I) && (build_step == 1))
user.drop_item()
src.build_step++
user << "You add the prox sensor to [src]!"
src.overlays += image('icons/obj/aibots.dmi', "hs_eye")
src.name = "helmet/signaler/prox sensor assembly"
del(W)
build_step++
user << "<span class='notice'>You add the prox sensor to [src]!</span>"
overlays += "hs_eye"
name = "helmet/signaler/prox sensor assembly"
qdel(I)
else if(((istype(W, /obj/item/robot_parts/l_arm)) || (istype(W, /obj/item/robot_parts/r_arm))) && (src.build_step == 2))
else if(((istype(I, /obj/item/robot_parts/l_arm)) || (istype(I, /obj/item/robot_parts/r_arm))) && (build_step == 2))
user.drop_item()
src.build_step++
user << "You add the robot arm to [src]!"
src.name = "helmet/signaler/prox sensor/robot arm assembly"
src.overlays += image('icons/obj/aibots.dmi', "hs_arm")
del(W)
build_step++
user << "<span class='notice'>You add the robot arm to [src]!</span>"
name = "helmet/signaler/prox sensor/robot arm assembly"
overlays += "hs_arm"
qdel(I)
else if((istype(W, /obj/item/weapon/melee/baton)) && (src.build_step >= 3))
else if((istype(I, /obj/item/weapon/melee/baton)) && (build_step >= 3))
user.drop_item()
src.build_step++
user << "You complete the Securitron! Beep boop."
build_step++
user << "<span class='notice'>You complete the Securitron! Beep boop.</span>"
var/obj/machinery/bot/secbot/S = new /obj/machinery/bot/secbot
S.loc = get_turf(src)
S.name = src.created_name
del(W)
del(src)
S.name = created_name
qdel(I)
qdel(src)
else if(istype(W, /obj/item/weapon/pen))
var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN)
else if(istype(I, /obj/item/weapon/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(!t)
return
if(!in_range(src, usr) && src.loc != usr)
if(!in_range(src, usr) && loc != usr)
return
created_name = t
else if(istype(W, /obj/item/weapon/screwdriver))
else if(istype(I, /obj/item/weapon/screwdriver))
if(!build_step)
new /obj/item/device/assembly/signaler(get_turf(src))
new /obj/item/clothing/head/helmet(get_turf(src))
@@ -780,9 +476,9 @@ Auto Patrol: []"},
new /obj/item/robot_parts/l_arm(get_turf(src))
user << "<span class='notice'>You remove the robot arm from [src].</span>"
build_step--
/obj/machinery/bot/secbot/proc/declare_arrest()
/obj/machinery/bot/secbot/proc/declare_arrest()
var/area/location = get_area(src)
for(var/mob/living/carbon/human/human in world)
if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security) || istype(human.glasses, /obj/item/clothing/glasses/sunglasses/sechud) && !human.blinded)
human << "<span class='info'>\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] <b>[target]</b> in <b>[location]</b></span>"
human << "<span class='info'>\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat <b>[target]</b> in <b>[location]</b></span>"
+1
View File
@@ -250,6 +250,7 @@
icon = 'icons/obj/status_display.dmi'
icon_state = "entertainment"
network = list("news")
luminosity = 0
/obj/machinery/computer/security/wooden_tv
name = "Security Camera Monitor"
+168 -172
View File
@@ -20,144 +20,146 @@
req_access = list(access_engine)
New()
..()
/obj/machinery/navbeacon/New()
..()
set_codes()
set_codes()
var/turf/T = loc
hide(T.intact)
var/turf/T = loc
hide(T.intact)
spawn(5) // must wait for map loading to finish
if(radio_controller)
radio_controller.add_object(src, freq, RADIO_NAVBEACONS)
spawn(50) // must wait for map loading to finish
if(radio_controller)
radio_controller.add_object(src, freq, RADIO_NAVBEACONS)
// set the transponder codes assoc list from codes_txt
proc/set_codes()
if(!codes_txt)
return
/obj/machinery/navbeacon/Destroy()
if(radio_controller)
radio_controller.remove_object(src, freq)
..()
codes = new()
// set the transponder codes assoc list from codes_txt
/obj/machinery/navbeacon/proc/set_codes()
if(!codes_txt)
return
var/list/entries = text2list(codes_txt, ";") // entries are separated by semicolons
codes = new()
for(var/e in entries)
var/index = findtext(e, "=") // format is "key=value"
if(index)
var/key = copytext(e, 1, index)
var/val = copytext(e, index+1)
codes[key] = val
else
codes[e] = "1"
var/list/entries = text2list(codes_txt, ";") // entries are separated by semicolons
for(var/e in entries)
var/index = findtext(e, "=") // format is "key=value"
if(index)
var/key = copytext(e, 1, index)
var/val = copytext(e, index+1)
codes[key] = val
else
codes[e] = "1"
// called when turf state changes
// hide the object if turf is intact
hide(var/intact)
invisibility = intact ? 101 : 0
// called when turf state changes
// hide the object if turf is intact
/obj/machinery/navbeacon/hide(var/intact)
invisibility = intact ? 101 : 0
updateicon()
// update the icon_state
/obj/machinery/navbeacon/proc/updateicon()
var/state="navbeacon[open]"
if(invisibility)
icon_state = "[state]-f" // if invisible, set icon to faded version
// in case revealed by T-scanner
else
icon_state = "[state]"
// look for a signal of the form "findbeacon=X"
// where X is any
// or the location
// or one of the set transponder keys
// if found, return a signal
/obj/machinery/navbeacon/receive_signal(datum/signal/signal)
var/request = signal.data["findbeacon"]
if(request && ((request in codes) || request == "any" || request == location))
spawn(1)
post_signal()
// return a signal giving location and transponder codes
/obj/machinery/navbeacon/proc/post_signal()
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
signal.data["beacon"] = location
for(var/key in codes)
signal.data[key] = codes[key]
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
/obj/machinery/navbeacon/attackby(var/obj/item/I, var/mob/user)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(istype(I, /obj/item/weapon/screwdriver))
open = !open
user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.")
updateicon()
// update the icon_state
proc/updateicon()
var/state="navbeacon[open]"
if(invisibility)
icon_state = "[state]-f" // if invisible, set icon to faded version
// in case revealed by T-scanner
else
icon_state = "[state]"
// look for a signal of the form "findbeacon=X"
// where X is any
// or the location
// or one of the set transponder keys
// if found, return a signal
receive_signal(datum/signal/signal)
var/request = signal.data["findbeacon"]
if(request && ((request in codes) || request == "any" || request == location))
spawn(1)
post_signal()
// return a signal giving location and transponder codes
proc/post_signal()
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
signal.data["beacon"] = location
for(var/key in codes)
signal.data[key] = codes[key]
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
attackby(var/obj/item/I, var/mob/user)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(istype(I, /obj/item/weapon/screwdriver))
open = !open
user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.")
updateicon()
else if (istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda))
if(open)
if (src.allowed(user))
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
else
user << "\red Access denied."
updateDialog()
else if (istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda))
if(open)
if (src.allowed(user))
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
else
user << "You must open the cover first!"
user << "<span class='danger'>Access denied.</span>"
updateDialog()
else
user << "You must open the cover first!"
return
/obj/machinery/navbeacon/attack_ai(var/mob/user)
interact(user, 1)
/obj/machinery/navbeacon/attack_paw()
return
/obj/machinery/navbeacon/attack_hand(var/mob/user)
interact(user, 0)
/obj/machinery/navbeacon/interact(var/mob/user, var/ai = 0)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(!open && !ai) // can't alter controls if not open, unless you're an AI
user << "The beacon's control cover is closed."
return
attack_ai(var/mob/user)
interact(user, 1)
attack_paw()
return
var/t
attack_hand(var/mob/user)
interact(user, 0)
interact(var/mob/user, var/ai = 0)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(!open && !ai) // can't alter controls if not open, unless you're an AI
user << "The beacon's control cover is closed."
return
var/t
if(locked && !ai)
t = {"<TT><B>Navigation Beacon</B><HR><BR>
if(locked && !ai)
t = {"<TT><B>Navigation Beacon</B><HR><BR>
<i>(swipe card to unlock controls)</i><BR>
Frequency: [format_frequency(freq)]<BR><HR>
Location: [location ? location : "(none)"]</A><BR>
Transponder Codes:<UL>"}
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t+= "<UL></TT>"
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t+= "<UL></TT>"
else
else
t = {"<TT><B>Navigation Beacon</B><HR><BR>
t = {"<TT><B>Navigation Beacon</B><HR><BR>
<i>(swipe card to lock controls)</i><BR>
Frequency:
<A href='byond://?src=\ref[src];freq=-10'>-</A>
@@ -169,76 +171,70 @@ Frequency:
Location: <A href='byond://?src=\ref[src];locedit=1'>[location ? location : "(none)"]</A><BR>
Transponder Codes:<UL>"}
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t += " <small><A href='byond://?src=\ref[src];edit=1;code=[key]'>(edit)</A>"
t += " <A href='byond://?src=\ref[src];delete=1;code=[key]'>(delete)</A></small><BR>"
t += "<small><A href='byond://?src=\ref[src];add=1;'>(add new)</A></small><BR>"
t+= "<UL></TT>"
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t += " <small><A href='byond://?src=\ref[src];edit=1;code=[key]'>(edit)</A>"
t += " <A href='byond://?src=\ref[src];delete=1;code=[key]'>(delete)</A></small><BR>"
t += "<small><A href='byond://?src=\ref[src];add=1;'>(add new)</A></small><BR>"
t+= "<UL></TT>"
user << browse(t, "window=navbeacon")
onclose(user, "navbeacon")
user << browse(t, "window=navbeacon")
onclose(user, "navbeacon")
return
/obj/machinery/navbeacon/Topic(href, href_list)
if(..())
return
if(open && !locked)
usr.set_machine(src)
Topic(href, href_list)
..()
if (usr.stat)
return
if ((in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon)))
if(open && !locked)
usr.set_machine(src)
if (href_list["freq"])
freq = sanitize_frequency(freq + text2num(href_list["freq"]))
updateDialog()
if (href_list["freq"])
freq = sanitize_frequency(freq + text2num(href_list["freq"]))
updateDialog()
else if(href_list["locedit"])
var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN)
if(newloc)
location = newloc
updateDialog()
else if(href_list["locedit"])
var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN)
if(newloc)
location = newloc
updateDialog()
else if(href_list["edit"])
var/codekey = href_list["code"]
else if(href_list["edit"])
var/codekey = href_list["code"]
var/newkey = input("Enter Transponder Code Key", "Navigation Beacon", codekey) as text|null
if(!newkey)
return
var/newkey = input("Enter Transponder Code Key", "Navigation Beacon", codekey) as text|null
if(!newkey)
return
var/codeval = codes[codekey]
var/newval = input("Enter Transponder Code Value", "Navigation Beacon", codeval) as text|null
if(!newval)
newval = codekey
return
var/codeval = codes[codekey]
var/newval = input("Enter Transponder Code Value", "Navigation Beacon", codeval) as text|null
if(!newval)
newval = codekey
return
codes.Remove(codekey)
codes[newkey] = newval
codes.Remove(codekey)
codes[newkey] = newval
updateDialog()
updateDialog()
else if(href_list["delete"])
var/codekey = href_list["code"]
codes.Remove(codekey)
updateDialog()
else if(href_list["delete"])
var/codekey = href_list["code"]
codes.Remove(codekey)
updateDialog()
else if(href_list["add"])
else if(href_list["add"])
var/newkey = input("Enter New Transponder Code Key", "Navigation Beacon") as text|null
if(!newkey)
return
var/newval = input("Enter New Transponder Code Value", "Navigation Beacon") as text|null
if(!newval)
newval = "1"
return
if(!codes)
codes = new()
codes[newkey] = newval
updateDialog()
var/newkey = input("Enter New Transponder Code Key", "Navigation Beacon") as text|null
if(!newkey)
return
var/newval = input("Enter New Transponder Code Value", "Navigation Beacon") as text|null
if(!newval)
newval = "1"
return
if(!codes)
codes = new()
codes[newkey] = newval
updateDialog()
+4 -3
View File
@@ -283,6 +283,7 @@
// Vend the item
src.vend(src.currently_vending, usr)
currently_vending = null
src.updateUsrDialog()
else
usr << "\icon[src]<span class='warning'>You don't have that much money!</span>"
else
@@ -779,10 +780,10 @@
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
vend_delay = 34
icon_state = "cigs"
products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
contraband = list(/obj/item/weapon/lighter/zippo = 4)
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2)
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1)
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
refill_canister = /obj/item/weapon/vending_refill/cigarette
/obj/machinery/vending/cigarette/New()
+197 -183
View File
@@ -1,209 +1,218 @@
/obj/item/radio/integrated
name = "PDA radio module"
desc = "An electronic radio system of nanotrasen origin."
name = "\improper PDA radio module"
desc = "An electronic radio system of Nanotrasen origin."
icon = 'icons/obj/module.dmi'
icon_state = "power_mod"
var/obj/item/device/pda/hostpda = null
var/on = 0 //Are we currently active?
var/menu_message = ""
New()
..()
if (istype(loc.loc, /obj/item/device/pda))
hostpda = loc.loc
proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3, s_filter)
//world << "Post: [freq]: [key]=[value], [key2]=[value2]"
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
signal.data[key] = value
if(key2)
signal.data[key2] = value2
if(key3)
signal.data[key3] = value3
frequency.post_signal(src, signal, filter = s_filter)
return
proc/generate_menu()
/obj/item/radio/integrated/beepsky
var/list/botlist = null // list of bots
var/obj/machinery/bot/secbot/active // the active bot; if null, show bot list
var/obj/machinery/bot/active // the active bot; if null, show bot list
var/list/botstatus // the status signal sent by the bot
var/bot_type //The type of bot it is.
var/bot_filter //Determines which radio filter to use.
var/control_freq = 1447
// create a new QM cartridge, and register to receive bot control & beacon message
New()
..()
var/on = 0 //Are we currently active??
var/menu_message = ""
/obj/item/radio/integrated/New()
..()
if (istype(loc.loc, /obj/item/device/pda))
hostpda = loc.loc
if (bot_filter)
spawn(5)
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT)
Destroy()
if(radio_controller)
radio_controller.remove_object(src, control_freq)
..()
// receive radio signals
// can detect bot status signals
// create/populate list as they are recvd
add_to_radio(bot_filter)
receive_signal(datum/signal/signal)
// var/obj/item/device/pda/P = src.loc
/obj/item/radio/integrated/Destroy()
if(radio_controller)
radio_controller.remove_object(src, control_freq)
..()
/*
world << "recvd:[P] : [signal.source]"
for(var/d in signal.data)
world << "- [d] = [signal.data[d]]"
/obj/item/radio/integrated/proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3,var/key4, var/value4, s_filter)
//world << "Post: [freq]: [key]=[value], [key2]=[value2]"
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency)
return
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
signal.data[key] = value
if(key2)
signal.data[key2] = value2
if(key3)
signal.data[key3] = value3
if(key4)
signal.data[key4] = value4
frequency.post_signal(src, signal, filter = s_filter)
/obj/item/radio/integrated/receive_signal(datum/signal/signal)
/*var/obj/item/device/pda/P = src.loc
world << "recvd:[P] : [signal.source]"
for(var/d in signal.data)
world << "- [d] = [signal.data[d]]"
*/
if (signal.data["type"] == "secbot")
if(!botlist)
botlist = new()
if(!(signal.source in botlist))
botlist += signal.source
if (signal.data["type"] == bot_type)
if(!botlist)
botlist = new()
if(active == signal.source)
var/list/b = signal.data
botstatus = b.Copy()
if(!(signal.source in botlist))
botlist += signal.source
// if (istype(P)) P.updateSelfDialog()
if(active == signal.source)
var/list/b = signal.data
botstatus = b.Copy()
Topic(href, href_list)
..()
var/obj/item/device/pda/PDA = src.hostpda
/obj/item/radio/integrated/Topic(href, href_list)
..()
var/obj/item/device/pda/PDA = src.hostpda
switch(href_list["op"])
switch(href_list["op"])
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status", s_filter = RADIO_SECBOT)
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status", s_filter = bot_filter)
if("botlist")
active = null
if("botlist")
active = null
if("stop", "go")
post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = RADIO_SECBOT)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
if("stop", "go")
post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
if("summon")
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , s_filter = RADIO_SECBOT)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
if("summon")
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , "useraccess", PDA.GetAccess(), s_filter = bot_filter)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = bot_filter)
/obj/item/radio/integrated/proc/add_to_radio(bot_filter) //Master filter control for bots. Must be placed in the bot's local New() to support map spawned bots.
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = bot_filter)
/obj/item/radio/integrated/beepsky
bot_filter = RADIO_SECBOT
bot_type = SEC_BOT
/obj/item/radio/integrated/medbot
bot_filter = RADIO_MEDBOT
bot_type = MED_BOT
/obj/item/radio/integrated/floorbot
bot_filter = RADIO_FLOORBOT
bot_type = FLOOR_BOT
/obj/item/radio/integrated/cleanbot
bot_filter = RADIO_CLEANBOT
bot_type = CLEAN_BOT
/obj/item/radio/integrated/mule
var/list/botlist = null // list of bots
var/obj/machinery/bot/mulebot/active // the active bot; if null, show bot list
var/list/botstatus // the status signal sent by the bot
//var/list/botlist = null // list of bots
//var/obj/machinery/bot/mulebot/active // the active bot; if null, show bot list
//var/list/botstatus // the status signal sent by the bot
var/list/beacons
var/beacon_freq = 1400
var/control_freq = 1447
control_freq = 1447
// create a new QM cartridge, and register to receive bot control & beacon message
New()
..()
spawn(5)
if(radio_controller)
radio_controller.add_object(src, control_freq, filter = RADIO_MULEBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
spawn(10)
post_signal(beacon_freq, "findbeacon", "delivery", s_filter = RADIO_NAVBEACONS)
Destroy()
// create a new QM cartridge, and register to receive bot control & beacon message
/obj/item/radio/integrated/mule/New()
..()
spawn(5)
if(radio_controller)
radio_controller.remove_object(src, control_freq)
radio_controller.remove_object(src, beacon_freq)
// receive radio signals
// can detect bot status signals
// and beacon locations
// create/populate lists as they are recvd
radio_controller.add_object(src, control_freq, filter = RADIO_MULEBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
spawn(10)
post_signal(beacon_freq, "findbeacon", "delivery", s_filter = RADIO_NAVBEACONS)
receive_signal(datum/signal/signal)
// var/obj/item/device/pda/P = src.loc
/obj/item/radio/integrated/mule/Destroy()
if(radio_controller)
radio_controller.remove_object(src,beacon_freq)
..()
/*
world << "recvd:[P] : [signal.source]"
for(var/d in signal.data)
world << "- [d] = [signal.data[d]]"
*/
if(signal.data["type"] == "mulebot")
if(!botlist)
botlist = new()
// receive radio signals
// can detect bot status signals
// and beacon locations
// create/populate lists as they are recvd
if(!(signal.source in botlist))
botlist += signal.source
/obj/item/radio/integrated/mule/receive_signal(datum/signal/signal)
// var/obj/item/device/pda/P = src.loc
if(active == signal.source)
var/list/b = signal.data
botstatus = b.Copy()
/*
world << "recvd:[P] : [signal.source]"
for(var/d in signal.data)
world << "- [d] = [signal.data[d]]"
*/
if(signal.data["type"] == MULE_BOT)
if(!botlist)
botlist = new()
else if(signal.data["beacon"])
if(!beacons)
beacons = new()
if(!(signal.source in botlist))
botlist += signal.source
beacons[signal.data["beacon"] ] = signal.source
if(active == signal.source)
var/list/b = signal.data
botstatus = b.Copy()
else if(signal.data["beacon"])
if(!beacons)
beacons = new()
beacons[signal.data["beacon"] ] = signal.source
// if(istype(P)) P.updateSelfDialog()
Topic(href, href_list)
..()
var/cmd = "command"
if(active) cmd = "command [active.suffix]"
/obj/item/radio/integrated/mule/Topic(href, href_list)
//..()
//var/obj/item/device/pda/PDA = src.hostpda
var/cmd = "command"
if(active)
cmd = "command [active.suffix]"
switch(href_list["op"])
switch(href_list["op"])
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("control")
active = locate(href_list["bot"])
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status", s_filter = RADIO_MULEBOT)
if("scanbots") // find all bots
botlist = null
if("botlist")
active = null
if("botlist")
active = null
if("unload")
post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
if("setdest")
if(beacons)
var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
if(dest)
post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
if("unload")
post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("setdest")
if(beacons)
var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
if(dest)
post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("retoff")
post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
if("reton")
post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
if("retoff")
post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("reton")
post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("pickoff")
post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
if("pickoff")
post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("pickon")
post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("pickon")
post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
if("stop", "go", "home")
post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("stop", "go", "home")
post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
@@ -218,37 +227,42 @@
var/last_transmission
var/datum/radio_frequency/radio_connection
New()
..()
if(radio_controller)
initialize()
/obj/item/radio/integrated/signal/New()
..()
if(radio_controller)
initialize()
initialize()
if (src.frequency < 1441 || src.frequency > 1489)
src.frequency = sanitize_frequency(src.frequency)
set_frequency(frequency)
proc/set_frequency(new_frequency)
/obj/item/radio/integrated/signal/Destroy()
if(radio_controller)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency)
..()
proc/send_signal(message="ACTIVATE")
/obj/item/radio/integrated/signal/initialize()
if (src.frequency < 1441 || src.frequency > 1489)
src.frequency = sanitize_frequency(src.frequency)
if(last_transmission && world.time < (last_transmission + 5))
return
last_transmission = world.time
set_frequency(frequency)
var/time = time2text(world.realtime,"hh:mm:ss")
var/turf/T = get_turf(src)
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
/obj/item/radio/integrated/signal/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency)
var/datum/signal/signal = new
signal.source = src
signal.encryption = code
signal.data["message"] = message
radio_connection.post_signal(src, signal)
/obj/item/radio/integrated/signal/proc/send_signal(message="ACTIVATE")
if(last_transmission && world.time < (last_transmission + 5))
return
last_transmission = world.time
var/time = time2text(world.realtime,"hh:mm:ss")
var/turf/T = get_turf(src)
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
var/datum/signal/signal = new
signal.source = src
signal.encryption = code
signal.data["message"] = message
radio_connection.post_signal(src, signal)
return
@@ -78,14 +78,14 @@
/obj/item/device/radio/headset/headset_sci
name = "science radio headset"
desc = "A sciency headset. Like usual. To access the science channel, use :n."
icon_state = "com_headset"
icon_state = "sci_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sci
/obj/item/device/radio/headset/headset_medsci
name = "medical research radio headset"
desc = "A headset that is a result of the mating between medical and science. To access the medical channel, use :m. For science, use :n."
icon_state = "med_headset"
icon_state = "medsci_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_medsci
@@ -158,7 +158,7 @@
icon_state = "cargo_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/headset_service
name = "service radio headset"
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean. To access the service channel, use :z."
@@ -200,14 +200,14 @@
name = "\improper DromedaryCo packet"
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
icon_state = "Dpacket"
item_state = "Dpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/syndicate
name = "\improper Syndicate Cigarettes"
desc = "A packet of six evil-looking cigarettes, A label on the packaging reads, \"Donk Co\""
icon_state = "robustpacket"
item_state = "robustpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/syndicate/New()
..()
@@ -218,13 +218,62 @@
name = "cigarette packet"
desc = "An obscure brand of cigarettes."
icon_state = "syndiepacket"
item_state = "syndiepacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate/New()
..()
for(var/i = 1 to storage_slots)
reagents.add_reagent("doctorsdelight",15)
/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift
name = "\improper Uplift Smooth packet"
desc = "Your favorite brand, now menthol flavored."
icon_state = "upliftpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust
name = "\improper Robust packet"
desc = "Smoked by the robust."
icon_state = "robustpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold
name = "\improper Robust Gold packet"
desc = "Smoked by the truly robust."
icon_state = "robustgpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold/New()
..()
for(var/i = 1 to storage_slots)
reagents.add_reagent("gold",1)
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp
name = "\improper Carp Classic packet"
desc = "Since 2313."
icon_state = "carppacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori
name = "\improper Midori Tabako packet"
desc = "You can't understand the runes, but the packet smells funny."
icon_state = "midoripacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims
name ="\improper Shady Jim's Super Slims"
desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!"
icon_state = "shadyjimpacket"
item_state = "cigpacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims/New()
..()
for(var/i = 1 to storage_slots)
reagents.add_reagent("lipozine",4)
reagents.add_reagent("ammonia",2)
reagents.add_reagent("plantbgone",1)
reagents.add_reagent("toxin",1.5)
/*
* Vial Box
*/
+2
View File
@@ -343,6 +343,7 @@
src.w_class = 4
src.force = 15
src.damtype = "fire"
hitsound = "sound/items/welder.ogg"
src.icon_state = "welder1"
processing_objects.Add(src)
else
@@ -357,6 +358,7 @@
src.w_class = 2
src.force = 3
src.damtype = "brute"
hitsound = "swing_hit"
src.icon_state = "welder"
src.welding = 0
+20
View File
@@ -10,9 +10,29 @@
var/max_fire_temperature_sustained = 0 //The max temperature of the fire which it was subjected to
var/dirt = 0
var/dirtoverlay = null
/turf/simulated/New()
..()
levelupdate()
/turf/simulated/proc/MakeSlippery(var/wet_setting = 1) // 1 = Water, 2 = Lube
if(wet >= wet_setting)
return
wet = wet_setting
if(wet_setting == 1)
if(wet_overlay)
overlays -= wet_overlay
wet_overlay = null
wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static")
overlays += wet_overlay
spawn(rand(790, 820)) // Purely so for visual effect
if(!istype(src, /turf/simulated)) //Because turfs don't get deleted, they change, adapt, transform, evolve and deform. they are one and they are all.
return
if(wet > wet_setting) return
wet = 0
if(wet_overlay)
overlays -= wet_overlay
/turf/simulated/proc/AddTracks(var/typepath,var/mob,var/bloodDNA,var/comingdir,var/goingdir)
var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src
+6 -1
View File
@@ -218,7 +218,7 @@
return
var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
var/old_opacity = opacity
//world << "Replacing [src.type] with [N]"
if(connections) connections.erase_all()
@@ -246,6 +246,11 @@
W.lighting_changed = 1
lighting_controller.changed_turfs += W
if(old_opacity != W.opacity) //opacity has changed. Need to update surrounding lights
if(W.lighting_lumcount) //unless we're being illuminated, don't bother (may be buggy, hard to test)
W.UpdateAffectingLights()
if (istype(W,/turf/simulated/floor))
W.RemoveLattice()
+3
View File
@@ -319,3 +319,6 @@ var/recall_time_limit=72000
//added for Xenoarchaeology, might be useful for other stuff
var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
// AI controlled bots
var/global/list/aibots = list()
+26 -2
View File
@@ -5,16 +5,28 @@
/datum/language
var/name = "an unknown language" // Fluff name of language if any.
var/desc = "A language." // Short description for 'Check Languages'.
var/speech_verb = "says" // 'says', 'hisses', 'farts'.
var/speech_verb = "says" // 'says', 'hisses'.
var/ask_verb = "asks" // Used when sentence ends in a ?
var/exclaim_verb = "exclaims" // Used when sentence ends in a !
var/colour = "say_quote" // CSS style to use for strings in this language.
var/key = "x" // Character used to speak in language eg. :o for Unathi.
var/flags = 0 // Various language flags.
var/native // If set, non-native speakers will have trouble speaking.
/datum/language/proc/get_spoken_verb(var/msg_end)
switch(msg_end)
if("!")
return exclaim_verb
if("?")
return ask_verb
return speech_verb
/datum/language/unathi
name = "Sinta'unathi"
desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi."
speech_verb = "hisses"
ask_verb = "hisses"
exclaim_verb = "roars"
colour = "soghun"
key = "o"
flags = WHITELISTED
@@ -23,6 +35,8 @@
name = "Siik'tajr"
desc = "An expressive language that combines yowls and chirps with posture, tail and ears. Native to the Tajaran."
speech_verb = "mrowls"
ask_verb = "mrowls"
exclaim_verb = "yowls"
colour = "tajaran"
key = "j"
flags = WHITELISTED
@@ -31,6 +45,8 @@
name = "Skrellian"
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
speech_verb = "warbles"
ask_verb = "warbles"
exclaim_verb = "warbles"
colour = "skrell"
key = "k"
flags = WHITELISTED
@@ -39,6 +55,8 @@
name = "Vox-pidgin"
desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else."
speech_verb = "shrieks"
ask_verb = "creels"
exclaim_verb = "SHRIEKS"
colour = "vox"
key = "v"
flags = RESTRICTED
@@ -47,6 +65,8 @@
name = "Rootspeak"
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes."
speech_verb = "creaks and rustles"
ask_verb = "creaks"
exclaim_verb = "rustles"
colour = "soghun"
key = "q"
flags = RESTRICTED
@@ -54,7 +74,9 @@
/datum/language/kidan
name = "Chittin"
desc = "The noise made by rubbing it's antennae together is actually a complex form of communication for Kidan."
speech_verb = "rubs it's antenna together"
speech_verb = "rubs its antenna together"
ask_verb = "rubs its antenna together"
exclaim_verb = "rubs its antenna together"
colour = "tajaran"
key = "4"
flags = RESTRICTED
@@ -63,6 +85,8 @@
name = "Bubblish"
desc = "Languages of slimes, a mixture of bubbling noises and pops. Almost impossible to speak without mechanical aid for non slime people."
speech_verb = "bubbles and pops"
ask_verb = "bubbles and pops"
exclaim_verb = "bubbles and pops"
colour = "skrell"
key = "f"
flags = RESTRICTED
-3
View File
@@ -572,8 +572,5 @@
src << "You do not have enough chemicals stored to reproduce."
return
/mob/living/carbon/proc/assess_threat()
return
/mob/living/carbon/proc/canBeHandcuffed()
return 0
@@ -1555,7 +1555,7 @@
//Check for ID
var/obj/item/weapon/card/id/idcard = get_idcard()
if(judgebot.idcheck && !idcard)
if(judgebot.idcheck && !idcard && name=="Unknown")
threatcount += 4
//Check for weapons
@@ -1595,7 +1595,7 @@
//Agent cards lower threatlevel.
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
threatcount -= 2
threatcount -= 5
return threatcount
@@ -507,6 +507,10 @@
return 10 //Everyone is a criminal!
var/threatcount = 0
//Securitrons can't identify monkeys
if(!lasercolor && judgebot.idcheck )
threatcount += 4
//Lasertag bullshit
if(lasercolor)
if(lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve
+76 -1
View File
@@ -55,6 +55,9 @@ var/list/ai_list = list()
var/datum/trackable/track = null
var/can_shunt = 1
var/last_announcement = ""
var/obj/machinery/bot/Bot
var/turf/waypoint //Holds the turf of the currently selected waypoint.
var/waypoint_mode = 0 //Waypoint mode is for selecting a turf via clicking.
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
var/list/possibleNames = ai_names
@@ -100,7 +103,7 @@ var/list/ai_list = list()
if (istype(loc, /turf))
verbs.Add(/mob/living/silicon/ai/proc/ai_network_change, \
/mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/control_integrated_radio)
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/botcall, /mob/living/silicon/ai/proc/control_integrated_radio)
if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside.
@@ -442,6 +445,24 @@ var/list/ai_list = list()
if(A && target)
A.ai_actual_track(target)
return
if (href_list["callbot"]) //Command a bot to move to a selected location.
Bot = locate(href_list["callbot"]) in aibots
if(!Bot || Bot.remote_disabled || src.control_disabled)
return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off.
waypoint_mode = 1
src << "<span class='notice'>Set your waypoint by clicking on a valid location free of obstructions.</span>"
return
if (href_list["interface"]) //Remotely connect to a bot!
Bot = locate(href_list["interface"]) in aibots
if(!Bot || Bot.remote_disabled || src.control_disabled)
return
Bot.attack_ai(src)
if (href_list["botrefresh"]) //Refreshes the bot control panel.
botcall()
return
else if (href_list["faketrack"])
var/mob/target = locate(href_list["track"]) in mob_list
@@ -536,7 +557,61 @@ var/list/ai_list = list()
if(camera_light_on) A.SetLuminosity(AI_CAMERA_LUMINOSITY)
else A.SetLuminosity(0)
/mob/living/silicon/ai/proc/botcall()
set category = "AI Commands"
set name = "Access Robot Control"
set desc = "Wirelessly control various automatic robots."
if(stat == 2)
src << "<span class='danger'>Critical error. System offline.</span>"
return
if(control_disabled)
src << "Wireless communication is disabled."
return
var/turf/ai_current_turf = get_turf(src)
var/ai_Zlevel = ai_current_turf.z
var/d
var/area/bot_area
d += "<A HREF=?src=\ref[src];botrefresh=\ref[Bot]>Query network status</A><br>"
d += "<table width='100%'><tr><td width='40%'><h3>Name</h3></td><td width='30%'><h3>Status</h3></td><td width='30%'><h3>Location</h3></td><td width='10%'><h3>Control</h3></td></tr>"
for (Bot in aibots)
if(Bot.z == ai_Zlevel && !Bot.remote_disabled) //Only non-emagged bots on the same Z-level are detected!
bot_area = get_area(Bot)
d += "<tr><td width='30%'>[Bot.hacked ? "<span class='bad'>(!) </span>[Bot.name]" : Bot.name]</td>"
//If the bot is on, it will display the bot's current mode status. If the bot is not mode, it will just report "Idle". "Inactive if it is not on at all.
d += "<td width='30%'>[Bot.on ? "[Bot.mode ? "<span class='average'>[ Bot.mode_name[Bot.mode] ]</span>": "<span class='good'>Idle</span>"]" : "<span class='bad'>Inactive</span>"]</td>"
d += "<td width='30%'>[bot_area.name]</td>"
d += "<td width='10%'><A HREF=?src=\ref[src];interface=\ref[Bot]>Interface</A></td>"
d += "<td width='10%'><A HREF=?src=\ref[src];callbot=\ref[Bot]>Call</A></td>"
d += "</tr>"
d = format_text(d)
var/datum/browser/popup = new(src, "botcall", "Remote Robot Control", 700, 400)
popup.set_content(d)
popup.open()
/mob/living/silicon/ai/proc/set_waypoint(var/atom/A)
var/turf/turf_check = get_turf(A)
//The target must be in view of a camera or near the core.
if(turf_check in range(get_turf(src)))
call_bot(turf_check)
else if(cameranet && cameranet.checkTurfVis(turf_check))
call_bot(turf_check)
else
src << "<span class='danger'>Selected location is not visible.</span>"
/mob/living/silicon/ai/proc/call_bot(var/turf/waypoint)
if(!Bot)
return
if(Bot.calling_ai && Bot.calling_ai != src) //Prevents an override if another AI is controlling this bot.
src << "<span class='danger'>Interface error. Unit is already in use.</span>"
return
Bot.call_bot(src, waypoint)
/mob/living/silicon/ai/proc/switchCamera(var/obj/machinery/camera/C)
src.cameraFollow = null
+2 -1
View File
@@ -233,4 +233,5 @@
step(AM, t)
now_pushing = null
/mob/living/silicon/assess_threat() //Secbots won't hunt silicon units
return -10
+4
View File
@@ -869,6 +869,7 @@ var/list/slot_equipment_priority = list( \
stat(null, "Mob-[master_controller.mobs_cost]\t#[mob_list.len]")
stat(null, "Dis-[master_controller.diseases_cost]\t#[active_diseases.len]")
stat(null, "Mch-[master_controller.machines_cost]\t#[machines.len]")
stat(null, "Bots-[master_controller.aibots_cost]\t#[aibots.len]")
stat(null, "Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
stat(null, "PiNet-[master_controller.networks_cost]\t#[pipe_networks.len]")
stat(null, "Ponet-[master_controller.powernets_cost]\t#[powernets.len]")
@@ -1308,3 +1309,6 @@ mob/proc/yank_out_object()
if(paralysis)
AdjustParalysis(-1)
return paralysis
/mob/proc/assess_threat() //For sec bot threat assessment
return
+1 -1
View File
@@ -66,7 +66,7 @@
//Space antibiotics stop disease completely
if(mob.reagents.has_reagent("spaceacillin"))
if(stage == 1 && prob(20))
src.cure()
src.cure(mob)
return
//Virus food speeds up disease progress
+3 -1
View File
@@ -913,4 +913,6 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define IS_SKRELL 3
#define IS_UNATHI 4
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
#define BACKGROUND_ENABLED 0 // The default value for all uses of set background. Set background can cause gradual lag and is recommended you only turn this on if necessary.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

+247 -148
View File
@@ -1953,8 +1953,8 @@
"aLC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLI" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; icon_state = "manifold-b-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -2009,8 +2009,8 @@
"aMG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMJ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; icon_state = "manifold-b-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aML" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area)
"aMM" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/turf/simulated/wall,/area)
"aMN" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/chapel/main)
@@ -2203,8 +2203,8 @@
"aQs" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library)
"aQt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/library)
"aQu" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library)
"aQv" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/chapel/office)
"aQw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aQv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aQw" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/chapel/office)
"aQx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQy" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQz" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
@@ -6061,7 +6061,7 @@
"cmC" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cmD" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/FixOVein,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmE" = (/obj/machinery/computer/operating,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmF" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/storage/secure)
"cmF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering)
"cmG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cmH" = (/obj/structure/sign/biohazard,/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area)
"cmI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology)
@@ -6882,7 +6882,7 @@
"cCr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "warning"},/area/engine/reactor_core)
"cCs" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"cCt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cCv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering)
@@ -6937,7 +6937,7 @@
"cDu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Engine Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cDv" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Monitoring"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/reactor_core)
"cDw" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/engine/engineering)
"cDx" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/engineering)
"cDx" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"cDy" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cDz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cDA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/engineering)
@@ -7005,7 +7005,7 @@
"cEK" = (/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/storage/secure)
"cEL" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/reactor_core)
"cEM" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/reactor_core)
"cEN" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/dispenser,/turf/simulated/floor,/area/engine/engineering)
"cEN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering)
"cEO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering)
"cEP" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor,/area/engine/engineering)
"cEQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area)
@@ -7054,7 +7054,7 @@
"cFH" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core)
"cFI" = (/obj/machinery/shield_gen,/turf/simulated/floor/plating,/area/storage/secure)
"cFJ" = (/turf/simulated/floor/plating,/area/storage/secure)
"cFK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/turf/simulated/floor/plating,/area/storage/secure)
"cFK" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/storage/secure)
"cFL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/engineering)
"cFM" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering)
"cFN" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering)
@@ -7085,9 +7085,9 @@
"cGm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology/flora)
"cGn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Engine Access"; req_access_txt = "11"},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cGo" = (/obj/machinery/driver_button{id = "enginecore"; pixel_x = 25},/obj/machinery/door/window/westleft,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; pixel_x = 10; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/engine/reactor_core)
"cGp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cGq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"cGq" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering)
"cGr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Secure Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cGs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGt" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
@@ -7176,7 +7176,7 @@
"cHZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIa" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIb" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIc" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cIc" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cId" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/wall,/area/engine/engineering)
"cIe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_west_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cIf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/engineering)
@@ -9588,7 +9588,7 @@
"dCt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/turret_protected/tcomfoyer)
"dCu" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer)
"dCv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
"dCw" = (/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation)
"dCw" = (/obj/structure/grille,/obj/structure/girder/reinforced,/turf/simulated/floor/plating/airless,/area/djstation)
"dCx" = (/obj/machinery/light/small,/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer)
"dCy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer)
"dCz" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
@@ -9596,7 +9596,7 @@
"dCB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
"dCC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance)
"dCD" = (/obj/machinery/power/smes/magical,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/tcommsat/entrance)
"dCE" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dCE" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/djstation)
"dCF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
"dCG" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/tcommsat/entrance)
"dCH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance)
@@ -9622,12 +9622,12 @@
"dDb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance)
"dDc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/tcommsat/entrance)
"dDd" = (/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/tcommsat/entrance)
"dDe" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dDe" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area)
"dDf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/tcommsat/entrance)
"dDg" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/tcommsat/entrance)
"dDh" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. Teleporter APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/tcommsat/entrance)
"dDi" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
"dDj" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dDj" = (/obj/machinery/computer/drone_control,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dDk" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance)
"dDl" = (/turf/simulated/floor,/area/tcommsat/entrance)
"dDm" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance)
@@ -9695,18 +9695,18 @@
"dEw" = (/obj/structure/lattice,/turf/space,/area/solar/constructionsite)
"dEx" = (/turf/space,/area/solar/constructionsite)
"dEy" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/solar/constructionsite)
"dEz" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/djstation)
"dEz" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/drone_fabricator,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dEA" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation)
"dEB" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation)
"dEC" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dED" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation)
"dEE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dEB" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dEC" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/djstation)
"dED" = (/turf/simulated/wall/r_wall,/area/djstation)
"dEE" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk9"; icon_state = "catwalk9"},/area)
"dEF" = (/turf/simulated/wall,/area/djstation)
"dEG" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore)
"dEH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation)
"dEI" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/djstation)
"dEJ" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/djstation)
"dEK" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dEI" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk6"; icon_state = "catwalk6"},/area)
"dEJ" = (/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dEK" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1"; icon_state = "catwalk1"},/area)
"dEL" = (/turf/simulated/wall,/area/constructionsite/ai)
"dEM" = (/turf/simulated/floor/plating/airless,/area/constructionsite/ai)
"dEN" = (/turf/simulated/floor/airless{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/constructionsite/ai)
@@ -9716,69 +9716,69 @@
"dER" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation)
"dES" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation)
"dET" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation)
"dEU" = (/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/djstation)
"dEV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/djstation)
"dEW" = (/obj/structure/stool/bed/chair,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dEX" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/djstation)
"dEY" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating,/area/djstation)
"dEZ" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/djstation)
"dFa" = (/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plating,/area/djstation)
"dFb" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/djstation)
"dEU" = (/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dEV" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"dEW" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1"; icon_state = "catwalk1"},/area/djstation)
"dEX" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1"; icon_state = "catwalk1"},/area/djstation)
"dEY" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area)
"dEZ" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk10"; icon_state = "catwalk10"},/area)
"dFa" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk2"; icon_state = "catwalk2"},/area/djstation)
"dFb" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk2"; icon_state = "catwalk2"},/area/djstation)
"dFc" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai)
"dFd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dFe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dFf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/djstation)
"dFd" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall,/area/djstation)
"dFe" = (/obj/structure/sign/poster,/turf/simulated/wall/r_wall,/area/djstation)
"dFf" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/djstation)
"dFg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/djstation)
"dFh" = (/obj/machinery/power/terminal,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/djstation)
"dFi" = (/obj/item/device/multitool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/djstation)
"dFj" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/djstation)
"dFk" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/djstation)
"dFl" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation)
"dFh" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall,/area/djstation)
"dFi" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dFj" = (/obj/structure/table/reinforced,/obj/item/weapon/lipstick/random,/obj/item/weapon/lipstick/random,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,/obj/machinery/media/receiver/boombox,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dFk" = (/turf/simulated/floor/plating/airless,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area)
"dFl" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/djstation)
"dFm" = (/obj/machinery/mass_driver{dir = 4; id = "constructiondriver0"; name = "construction driver #0"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/djstation)
"dFn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/djstation)
"dFo" = (/obj/machinery/door/poddoor{id = "constructiondriver0"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/djstation)
"dFp" = (/turf/simulated/floor/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai)
"dFq" = (/obj/item/weapon/extinguisher,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation)
"dFr" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/djstation)
"dFs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation)
"dFt" = (/obj/structure/table,/obj/item/clothing/suit/space/rig,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor/plating,/area/djstation)
"dFu" = (/obj/machinery/driver_button{id = "constructiondriver1"; name = "Construction Driver #1"; pixel_x = 25},/turf/simulated/floor/plating,/area/djstation)
"dFv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dFw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation)
"dFq" = (/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/djstation)
"dFr" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk5"; icon_state = "catwalk5"},/area)
"dFs" = (/obj/effect/decal/cleanable/dirt,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/simulated/floor,/area/djstation)
"dFt" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area)
"dFu" = (/obj/structure/dispenser,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "delivery"},/area/djstation)
"dFv" = (/obj/item/weapon/vending_refill/coffee,/obj/item/weapon/vending_refill/cola,/obj/item/weapon/vending_refill/snack,/obj/structure/table,/turf/simulated/floor,/area/djstation)
"dFw" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/paint/remover,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/djstation)
"dFx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/djstation)
"dFy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/djstation)
"dFz" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/djstation)
"dFA" = (/obj/structure/rack,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/turf/simulated/floor/plating,/area/djstation)
"dFy" = (/turf/simulated/floor{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/djstation)
"dFz" = (/turf/simulated/floor,/area/djstation)
"dFA" = (/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dFB" = (/obj/machinery/mass_driver{dir = 4; id = "constructiondriver1"; name = "construction driver #1"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/djstation)
"dFC" = (/obj/machinery/door/poddoor{id = "constructiondriver1"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/djstation)
"dFD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation)
"dFE" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/djstation)
"dFF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/djstation)
"dFG" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/djstation)
"dFH" = (/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating,/area/djstation)
"dFI" = (/obj/machinery/driver_button{id = "constructiondriver2"; name = "Construction Driver #2"; pixel_x = 25},/turf/simulated/floor/plating,/area/djstation)
"dFE" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dFF" = (/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/djstation)
"dFG" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/djstation)
"dFH" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dFI" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dFJ" = (/obj/structure/lattice,/turf/space,/area/constructionsite/maintenance)
"dFK" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore)
"dFL" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai)
"dFM" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai)
"dFN" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore)
"dFO" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation)
"dFP" = (/obj/structure/rack,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor/plating,/area/djstation)
"dFP" = (/obj/structure/flora/kirbyplants,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dFQ" = (/obj/machinery/mass_driver{dir = 4; id = "constructiondriver2"; name = "construction driver #2"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/djstation)
"dFR" = (/obj/machinery/door/poddoor{id = "constructiondriver2"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/djstation)
"dFS" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai)
"dFT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation)
"dFU" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dFV" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/djstation)
"dFW" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dFU" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"dFV" = (/obj/structure/window/reinforced/tinted{dir = 1},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/djstation)
"dFW" = (/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/djstation)
"dFX" = (/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dFY" = (/obj/machinery/driver_button{id = "constructiondriver0"; name = "Construction Driver #0"; pixel_x = 25},/turf/simulated/floor/plating,/area/djstation)
"dFZ" = (/obj/machinery/vending/snack,/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGa" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dFY" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating/airless,/area)
"dFZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/djstation)
"dGa" = (/obj/structure/mirror,/turf/simulated/wall,/area/djstation)
"dGb" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/explored)
"dGc" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGd" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/djstation)
"dGe" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/djstation)
"dGc" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"dGd" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/djstation)
"dGe" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dGf" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/fore)
"dGg" = (/obj/structure/lattice,/turf/space,/area/constructionsite/hallway/fore)
"dGh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation)
@@ -9786,42 +9786,42 @@
"dGj" = (/turf/simulated/floor/airless,/area/constructionsite/hallway/aft)
"dGk" = (/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft)
"dGl" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dGm" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGn" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGm" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dGn" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dGo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation)
"dGp" = (/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGq" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor,/area/mine/explored)
"dGr" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGs" = (/obj/structure/table,/obj/machinery/light/small/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGs" = (/obj/structure/table/woodentable,/obj/item/ashtray/plastic,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dGt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation)
"dGu" = (/obj/structure/lattice,/turf/space,/area/constructionsite/hallway/aft)
"dGv" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dGw" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dGx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation)
"dGy" = (/obj/structure/table,/obj/item/weapon/paper/djstation{info = "<B>Welcome new owner!</B><BR><BR>You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:<br><ol><li>Equip yourself with a multi-tool</li><li>Use the multitool on each machine, that is the broadcaster, receiver and the relay.</li><li>Turn all the machines on, it has already been configured for you to listen on.</li></ol> Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.<br><ul><li>145.7 - Common Channel</li><li>144.7 - Private AI Channel</li><li>135.9 - Security Channel</li><li>135.7 - Engineering Channel</li><li>135.5 - Medical Channel</li><li>135.3 - Command Channel</li><li>135.1 - Science Channel</li><li>134.7 - Supply Channel</li>"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGz" = (/obj/machinery/door/airlock/glass{name = "Cabin"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGA" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGy" = (/obj/machinery/door/airlock/glass{name = "Cabin"},/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"dGz" = (/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/djstation)
"dGA" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor,/area/djstation)
"dGB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation)
"dGC" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft)
"dGD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dGE" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/djstation)
"dGF" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGG" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGF" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/djstation)
"dGG" = (/obj/machinery/light,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/djstation)
"dGH" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/djstation)
"dGI" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation)
"dGJ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_station_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;48"},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGK" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGL" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGJ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/djstation)
"dGK" = (/obj/machinery/light_switch{pixel_y = -28},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/djstation)
"dGL" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/simulated/floor,/area/djstation)
"dGM" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/aft)
"dGN" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft)
"dGO" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft)
"dGP" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation)
"dGP" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/djstation)
"dGQ" = (/obj/structure/toilet{pixel_y = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation)
"dGR" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/djstation)
"dGS" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGT" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGU" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"dGV" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dGT" = (/obj/structure/table,/obj/item/toy/minimeteor,/obj/item/toy/carpplushie,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/djstation)
"dGU" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/djstation)
"dGV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation)
"dGW" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/constructionsite/site)
"dGX" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite/site)
"dGY" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite/site)
@@ -11252,7 +11252,7 @@
"eit" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
"eiu" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiv" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiw" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 4; name = "External"},/turf/simulated/floor,/area/atmos)
"eiw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"eix" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiz" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
@@ -11393,6 +11393,7 @@
"ele" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/jetpack/oxygen,/turf/simulated/floor/plating,/area/djstation)
"elf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elg" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elh" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Filter to External"},/turf/simulated/floor,/area/atmos)
"eli" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/media/jukebox/dj,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elj" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
@@ -11408,6 +11409,7 @@
"elu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elv" = (/obj/machinery/light/small,/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elw" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elx" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"ely" = (/turf/simulated/wall/r_wall,/area/derelict/solar_control)
"elz" = (/obj/machinery/door/airlock/engineering{name = "Turbine Maintenance"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/derelict/solar_control)
"elA" = (/obj/item/weapon/storage/box/donkpockets,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
@@ -11417,7 +11419,7 @@
"elE" = (/turf/simulated/wall,/area/derelict/solar_control)
"elF" = (/turf/simulated/floor,/area/derelict/solar_control)
"elG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/derelict/solar_control)
"elH" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elH" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/dispenser,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor,/area/engine/engineering)
"elI" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/derelict/solar_control)
@@ -12057,7 +12059,7 @@
"exU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area)
"exV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area)
"exW" = (/obj/machinery/door/airlock/external{frequency = 1479; icon_state = "door_locked"; id_tag = "traitor_station_inner"; locked = 1; name = "Syndicate Station Interior Access"; req_access = null; req_access_txt = null},/turf/simulated/floor{icon_state = "dark"},/area/traitor/hall)
"exX" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"exX" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"exY" = (/obj/structure/table,/obj/item/candle,/turf/simulated/floor,/area/traitor/kitchen)
"exZ" = (/turf/simulated/floor,/area/traitor/kitchen)
"eya" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/remains/human,/turf/simulated/floor,/area/traitor/kitchen)
@@ -12067,7 +12069,7 @@
"eye" = (/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyf" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyg" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyh" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/hand_labeler,/obj/machinery/alarm{pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyh" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eyi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyj" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eyk" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
@@ -12112,7 +12114,7 @@
"eyX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"eyY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/traitor/kitchen)
"eyZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/traitor/kitchen)
"eza" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty)
"eza" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"ezb" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area)
"ezc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area)
"ezd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area)
@@ -12154,9 +12156,9 @@
"ezN" = (/obj/machinery/atmospherics/binary/pump/highcap{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"ezO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area)
"ezP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating/airless,/area)
"ezQ" = (/obj/structure/table,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin{pixel_x = -3; pixel_y = 2},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd)
"ezQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"ezR" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"ezS" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"ezS" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"ezT" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/tox)
"ezU" = (/obj/machinery/atmospherics/trinary/filter{req_access = null},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/tox)
"ezV" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r"; level = 2},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
@@ -12229,7 +12231,7 @@
"eBk" = (/obj/machinery/atmospherics/trinary/mixer{dir = 1; req_access = null},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/tox)
"eBl" = (/obj/machinery/atmospherics/trinary/mixer{dir = 1; req_access = null},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"eBm" = (/obj/machinery/atmospherics/pipe/tank/toxins{dir = 8; volume = 20000},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"eBn" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBn" = (/obj/structure/table,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin{pixel_x = -3; pixel_y = 2},/obj/machinery/alarm{dir = 8; hidden = 1; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd)
"eBo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/power/apc{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBq" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
@@ -12296,7 +12298,7 @@
"eCz" = (/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eCA" = (/obj/structure/rack,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Gear Rack"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/traitor/inter)
"eCB" = (/obj/machinery/atmospherics/binary/volume_pump/on{name = "Waste"},/turf/simulated/floor/plating,/area/traitor/atmos)
"eCC" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/traitor/atmos)
"eCC" = (/obj/machinery/alarm{dir = 1; hidden = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/traitor/atmos)
"eCD" = (/obj/structure/rack,/obj/machinery/door/window/eastright{name = "Gear Rack"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/traitor/inter)
"eCE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eCF" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
@@ -12314,7 +12316,7 @@
"eCR" = (/obj/structure/rack,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/traitor/inter)
"eCS" = (/turf/simulated/floor/engine,/area/traitor/atmos)
"eCT" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor/engine,/area/traitor/atmos)
"eCU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eCU" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eCV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eCW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eCX" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
@@ -12348,12 +12350,13 @@
"eDz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDD" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eDC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering)
"eDD" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty)
"eDE" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eDF" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eDF" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/hand_labeler,/obj/machinery/alarm{hidden = 1; pixel_y = 22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eDG" = (/obj/structure/stool/bed/chair,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eDH" = (/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eDI" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDI" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/disposalpipe/segment,/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/traitor/kitchen)
"eDJ" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDK" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eDL" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
@@ -12372,6 +12375,7 @@
"eDY" = (/obj/structure/table,/obj/item/stack/rods,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDZ" = (/obj/structure/table,/obj/item/weapon/hatchet,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eEa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area)
"eEb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEc" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom)
"eEd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"eEe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
@@ -12382,6 +12386,101 @@
"eEj" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"eEk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"eEl" = (/obj/machinery/mineral/input,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"eEm" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"eEn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering)
"eEo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/engine/engineering)
"eEr" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"eEs" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/djstation)
"eEt" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/djstation)
"eEu" = (/obj/structure/bedsheetbin,/obj/structure/table,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"eEv" = (/obj/structure/table,/obj/machinery/light/small/lamp,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/djstation)
"eEw" = (/obj/structure/stool/bed,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/item/weapon/bedsheet/orange,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/djstation)
"eEx" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/djstation)
"eEy" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/djstation)
"eEz" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/coffee,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/djstation)
"eEA" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/djstation)
"eEB" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/djstation)
"eEC" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "warning"},/area/djstation)
"eED" = (/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/djstation)
"eEE" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation)
"eEF" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/djstation)
"eEG" = (/obj/machinery/washing_machine,/turf/simulated/floor{icon_state = "wood"},/area/djstation)
"eEH" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk2"; icon_state = "catwalk2"},/area)
"eEI" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/meatballsoup,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/djstation)
"eEJ" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/pipedispenser/disposal,/turf/simulated/floor,/area/djstation)
"eEK" = (/obj/machinery/pipedispenser,/obj/machinery/light{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/djstation)
"eEL" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich,/obj/item/clothing/head/chefhat,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/djstation)
"eEM" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/djstation)
"eEN" = (/obj/structure/flora/kirbyplants,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/djstation)
"eEO" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/djstation)
"eEP" = (/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"eEQ" = (/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor,/area/djstation)
"eER" = (/obj/machinery/light,/turf/simulated/floor,/area/djstation)
"eES" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor,/area/djstation)
"eET" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/djstation)
"eEU" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/djstation)
"eEV" = (/obj/structure/sign/poster,/turf/simulated/wall,/area/djstation)
"eEW" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor,/area/djstation)
"eEX" = (/obj/machinery/floodlight,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/djstation)
"eEY" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/djstation)
"eEZ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/djstation)
"eFa" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/djstation)
"eFb" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFd" = (/obj/machinery/vending/tool,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"eFe" = (/obj/machinery/driver_button{id = "constructiondriver2"; name = "Construction Driver #2"; pixel_x = 25},/turf/simulated/floor,/area/djstation)
"eFf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFg" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFh" = (/obj/machinery/vending/engivend,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"eFi" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/djstation)
"eFj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFk" = (/obj/structure/sign/singulo,/turf/simulated/wall,/area/djstation)
"eFl" = (/obj/structure/sign/fire,/turf/simulated/wall,/area/djstation)
"eFm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFn" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/djstation)
"eFo" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/djstation)
"eFp" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFq" = (/obj/machinery/driver_button{id = "constructiondriver1"; name = "Construction Driver #1"; pixel_x = 25},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/djstation)
"eFr" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor,/area/djstation)
"eFs" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/djstation)
"eFt" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/djstation)
"eFu" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/djstation)
"eFv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFw" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/djstation)
"eFx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/djstation)
"eFy" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/obj/structure/table,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/turf/simulated/floor,/area/djstation)
"eFz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFA" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/djstation)
"eFB" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/djstation)
"eFC" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/djstation)
"eFD" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFF" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/djstation)
"eFG" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/djstation)
"eFH" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{icon_state = "delivery"},/area/djstation)
"eFI" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/djstation)
"eFJ" = (/obj/machinery/driver_button{id = "constructiondriver0"; name = "Construction Driver #0"; pixel_x = 25},/obj/structure/engineeringcart,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/djstation)
"eFK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/djstation)
"eFM" = (/obj/machinery/power/terminal,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/djstation)
"eFN" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/djstation)
"eFO" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/djstation)
"eFP" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/djstation)
"eFQ" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "delivery"},/area/djstation)
"eFR" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/djstation)
"eFS" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/djstation)
"eFT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/djstation)
"eFU" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/djstation)
"eFV" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_station_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;48"},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/turf/simulated/floor,/area/djstation)
"eFW" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "delivery"},/area/djstation)
"eFX" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor,/area/djstation)
"eFY" = (/obj/item/weapon/storage/fancy/egg_box,/obj/item/weapon/storage/box/drinkingglasses,/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/milk,/turf/simulated/floor,/area/djstation)
"eFZ" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor,/area/djstation)
"eGa" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/dirt,/obj/machinery/light,/turf/simulated/floor,/area/djstation)
"eGb" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/djstation)
"eGc" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor,/area/djstation)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12491,11 +12590,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEhaEhaEhaEhaEhaEhaEhaEhaEhaHMaHNaHOaHPaDeaDeaDeaDfaEYaaiaHQaHRaHSaHTaHUaaqaHVaHWaHXaHYaHYaHZaDlaDlaIaaaiaFgaGaaIbaFgaFgaaiaIcayVaIdaGVayVayVaDsaaiaIeaIeaIfaIgaIhaIiaIjaIiaIkaIlaImaInaInaaiaHjavVaIoaaqaHlaouaEwaBhaBiaaqaCIaIpaIqaIraIsaItaItaIuaIvaItaIvaIwaIxaIyaIzaIAaIBaICaIDaIEaIFaIGaIHaaqaIIaIJaIIaaqaIKaAwaAwaAwaAwaAwaILaaiaabaoJaCoaIMaINazTaaiaIOaIPaIQaBPaBPaBPaBPaBPaBPaBPaBPaBPaATaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaaiaaiaaiaaiaDbaIRaISaaiaDbaIRaISaaiaaiaaiaaiaITaDeaDeaDeaDeaDfaIUaaiaIVaIWaIXaIYaIZaaqaJaaGPaEoaJbaGPaGPaGPaJcaJdaaiaJeaJfaJgaJhaFgaaiayVayVaJiaGVayVayVaDsaaiaaiaaiaaiaJjaJkaGYaJlaGYaJkaJmaaiaaiaaiaaiaHjavVaJnaaqaHlaouaDLaBhaBiaaqaJoaJpaaqaaqaaqaaqaaqaaqaaqaJqaaqaaqaaqaaqaaqaaqaJraaqaJsaJtaJtaJtaJuaaqaJvaJwaJxaaqaIKaAwaAwaAwaAwaAwaILaaiaaaaaiaJyaJzaJAaaiaaiaJBaJCaJDaBPaJEaBPaBPaBPaBPaJFaBPaBPaERaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaJGaJHaJIaAGaAGaJJaJKaAGaAGaJLaJMaJNaaiaCZaJOaEjaDeaDeaDeaDfaEYaaiaaqaaqaouaJPaaqaaqaJaaGPaEoaaiaaiaaiaaiaaiaaiaaiaaiabnaJQaaiaaiaaiaaiaaiaaiaaiaaiaaiaDsaaiaJRaJRaIfaJSaJTaIiaIjaIiaJTaJUaJVaJWaJXaaiaHjavVaHkaaqaJYaAlaJZaBhaBiaaqaKaaJpaaqaKbaKcaKdaKdaaqaKeaKcaKfaaqaKgaKhaKiaaqaKjaaqaJsaJtaJtaJtaJuaaqaKkaKlaKmaaqaKnaKoaKoaKoaKoaKoaKpaaaaaaaaiaKqaKraKsaaiaaiaKtaKuaKvaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbaKwaKxaDeaDeaDeaDeaKyaDeaDeaDeaKyaDeaKzaKAaKBaKCaKDaKEaKEaKEaKFaEYaaiaKGaKHaKIaKJaaqaaqaKKaGPaEoaaiaKLaKMaKNaKMaKOaaiaKPaKQaKRaKSaKTaaiaKUaKUaKVaKUaKWaaiaDsaaiaGXaGYaKXaKYaJkaGYaKZaGYaJkaLaaLbaGYaHiaaiaHjavVaLcaaqaHlaCGaCHaBhaBiaaqaLdaLeaaqaLfaKcaKcaKcaLgaLhaLiaLjaaqaLkaLlaLmaLnaLoaaqaLpaLqaLraLqaLsaaqaLtaLuaLvaaiaaaaaaaaaaaaaabaaaaaaaaaaaaaaiaLwaLxaLyaaiaaiaLzaLAaLBaaqaLCaLDaLEaLEaLEaLEaLEaLEaMJaLHaLHaLIaLHaLHaLHaLHaLJaLKaLLaaiaLMaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaLNaCbaCbaCbaCbaLOaCbaCbaCbaLOaLPaLQaLRaLSaLRaLTaLUaLUaLUaLVaLWaaiaLXaLYaLZaMaaMbaaqaJaaGPaEoaaiaMcaKOaKOaKOaKOaaiaMdaMeaMfaMgaMhacCaMiaMiaMjaMiaMkaaiaDsaaiaJRaJRaIfaMlaJTaIiaMmaIiaJTaMnaImaMoaMpaaiaMqaysaMraaqaHlaCGabXabXabXabXaMsaMtaMuaMvaMwabXabXabXaaEabXabtaMxaMyaMzaMAabXaMBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoJaoLaaiaaiaaiaaiaaiaaiaMCaamaaiaaiaMDaMEaMFaMGaMHaMIabXabXabXabXabXaOxaMKabXabXaMLabXaMMabXabXaaEaMNaaqaaqaMOaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMRaMRaMSaMRaMRaMTaMUaMRaMRaMSaMVaEXaMWaMXaMYaMZaNaaNbaNbaNbaNcaNdaaiaNeaNfaNgaNhaNiaNjaNkaNlaIaaaiaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaNxaNyaNzaNAaNBaNCacfaNDaaiaaiaaiaaiaNEaJkaGYaJlaGYaJkaNFaaiaaiaaiaaiaNGaNHaNIaaqaJYaNJasTasTasTaNKaNLaNMabIaNNaNOabIaNPabIaNQabIaNRaAsaNSaNTaNUaaqaNVaNWaNXaNYaNYaNWaNZaOaaOaaOaaOaaOaaObaOcaOaaOdaOeaOfaOgaOhaOiaOiaOjaOkaOlaOmaOnaOoaLAaOpaOqaOraOsaaqaOtaOuaOvaaqaaqaQvaaqaOyaOzbjaaOBaOCaODaOEaOFaOGaOHaOIaaiaOJaOKaOLaOMaONaOOaOPaOQaORaOSaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaOUaOVaOVaOVaOWaOXaOYaOZaPaaOWaOVaPbaPcaPdaaiaERaJGaPeaDeaDeaDeaPfaPgaaiaPhaPiaPjaPkaPlaaqaPmaPnaGPaaiaPoaPpaPqaPraPsacCaPtaPuaPvaPwaPxaaiaPyaPzaPAaKUaPBaaiayVaaiaGXaGYaPCaKYaJkaGYaJlaGYaJkaLaaPDaaiaaiaaiaPEaPFaPGaPHaPIabnaaiaaiaaiaaqaPJaPKaaqaPLaKcaaqaPMaaqaPNaaqaPOaPPaPQaPRaPSaPTaPUaPVaPWaPXaPYaAnaPZaPYaPYaQaaPYaPVaQbaPVaQcaPVaPVaQdaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQnaQnaQoaQpaQqaQraQsaQtaQuaaqaRRaQwaaqaQxaQyaQzaQAaOCaQBaOEaOFaOGaQCaQDaaiaQEaQFaQFaQGaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQHaPbaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaQLaMRaMVaaiaaiaQMaDeaDeaDeaDeaQNaQOaaiaQPaQQaQRaQSaQTabXaQUaQVaaqaaiaQWaQXaQYaKOaKOaaiaQZaPuaPvaPwaRaaaiaRbaPzaRcaRdaKUaaiayVaaiaReaRfaIfaRgaRhaIiaRiaIiaRjaRkaRlaaiaRmaRnaRoaRpaRqaRraRsaRtaaaaaaaaiaRuaRvaRwaaqaRxaKcaKcaKcaRyaKcaKcaKcaaJaRzaRAaaqaOwaouaaqaRBaaqaaqaRCaRDaREaRFaRGaaqaRHaRIaaqaOwaaqaaqaaqaaqaRJaaqaaqaouaaqaaqaaqaaqaRKaRLaRLaaJaQqaRMaRNaROaRPaRQaaqaLFaLGaaqaRTaRUaRVaQAaRWaQBaOEaOFaOGaRXaRYaaiaRZaSaaSaaSbaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbaKwaKxaDeaDeaDeaDeaKyaDeaDeaDeaKyaDeaKzaKAaKBaKCaKDaKEaKEaKEaKFaEYaaiaKGaKHaKIaKJaaqaaqaKKaGPaEoaaiaKLaKMaKNaKMaKOaaiaKPaKQaKRaKSaKTaaiaKUaKUaKVaKUaKWaaiaDsaaiaGXaGYaKXaKYaJkaGYaKZaGYaJkaLaaLbaGYaHiaaiaHjavVaLcaaqaHlaCGaCHaBhaBiaaqaLdaLeaaqaLfaKcaKcaKcaLgaLhaLiaLjaaqaLkaLlaLmaLnaLoaaqaLpaLqaLraLqaLsaaqaLtaLuaLvaaiaaaaaaaaaaaaaabaaaaaaaaaaaaaaiaLwaLxaLyaaiaaiaLzaLAaLBaaqaLCaLDaLEaLEaLEaLEaMJaLEaMKaLHaLHaLIaLHaLHaLHaLHaLJaLKaLLaaiaLMaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaLNaCbaCbaCbaCbaLOaCbaCbaCbaLOaLPaLQaLRaLSaLRaLTaLUaLUaLUaLVaLWaaiaLXaLYaLZaMaaMbaaqaJaaGPaEoaaiaMcaKOaKOaKOaKOaaiaMdaMeaMfaMgaMhacCaMiaMiaMjaMiaMkaaiaDsaaiaJRaJRaIfaMlaJTaIiaMmaIiaJTaMnaImaMoaMpaaiaMqaysaMraaqaHlaCGabXabXabXabXaMsaMtaMuaMvaMwabXabXabXaaEabXabtaMxaMyaMzaMAabXaMBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoJaoLaaiaaiaaiaaiaaiaaiaMCaamaaiaaiaMDaMEaMFaMGaMHaMIabXabXabXabXaaEaOxaQvabXabXaMLabXaMMabXabXaaEaMNaaqaaqaMOaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMRaMRaMSaMRaMRaMTaMUaMRaMRaMSaMVaEXaMWaMXaMYaMZaNaaNbaNbaNbaNcaNdaaiaNeaNfaNgaNhaNiaNjaNkaNlaIaaaiaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaNxaNyaNzaNAaNBaNCacfaNDaaiaaiaaiaaiaNEaJkaGYaJlaGYaJkaNFaaiaaiaaiaaiaNGaNHaNIaaqaJYaNJasTasTasTaNKaNLaNMabIaNNaNOabIaNPabIaNQabIaNRaAsaNSaNTaNUaaqaNVaNWaNXaNYaNYaNWaNZaOaaOaaOaaOaaOaaObaOcaOaaOdaOeaOfaOgaOhaOiaOiaOjaOkaOlaOmaOnaOoaLAaOpaOqaOraOsaaqaOtaOuaOvaaJaaqaQwaaqaOyaOzbjaaOBaOCaODaOEaOFaOGaOHaOIaaiaOJaOKaOLaOMaONaOOaOPaOQaORaOSaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaOUaOVaOVaOVaOWaOXaOYaOZaPaaOWaOVaPbaPcaPdaaiaERaJGaPeaDeaDeaDeaPfaPgaaiaPhaPiaPjaPkaPlaaqaPmaPnaGPaaiaPoaPpaPqaPraPsacCaPtaPuaPvaPwaPxaaiaPyaPzaPAaKUaPBaaiayVaaiaGXaGYaPCaKYaJkaGYaJlaGYaJkaLaaPDaaiaaiaaiaPEaPFaPGaPHaPIabnaaiaaiaaiaaqaPJaPKaaqaPLaKcaaqaPMaaqaPNaaqaPOaPPaPQaPRaPSaPTaPUaPVaPWaPXaPYaAnaPZaPYaPYaQaaPYaPVaQbaPVaQcaPVaPVaQdaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQnaQnaQoaQpaQqaQraQsaQtaQuaaJaRReiwaaqaQxaQyaQzaQAaOCaQBaOEaOFaOGaQCaQDaaiaQEaQFaQFaQGaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQHaPbaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaQLaMRaMVaaiaaiaQMaDeaDeaDeaDeaQNaQOaaiaQPaQQaQRaQSaQTabXaQUaQVaaqaaiaQWaQXaQYaKOaKOaaiaQZaPuaPvaPwaRaaaiaRbaPzaRcaRdaKUaaiayVaaiaReaRfaIfaRgaRhaIiaRiaIiaRjaRkaRlaaiaRmaRnaRoaRpaRqaRraRsaRtaaaaaaaaiaRuaRvaRwaaqaRxaKcaKcaKcaRyaKcaKcaKcaaJaRzaRAaaqaOwaouaaqaRBaaqaaqaRCaRDaREaRFaRGaaqaRHaRIaaqaOwaaqaaqaaqaaqaRJaaqaaqaouaaqaaqaaqaaqaRKaRLaRLaaJaQqaRMaRNaROaRPaRQbMZaLFaLGaaqaRTaRUaRVaQAaRWaQBaOEaOFaOGaRXaRYaaiaRZaSaaSaaSbaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaQIaQJaQKaQIaQKaOVaQKaQIaQKaSeaPbaOVaSfaMVaaiaSgaDeaDeaDeaDeaShaSiaAMaSjaSkaSlaSkaSmaSnaSoaSpaSqaaiaaiafjaaiaaiaaiaaiaGGaSraSsaGGaStaaiaaiafjaaiaaiaaiaaiaSuaaiaaiaaiaaiaSvaSwaSxaSyaSxaSzaSAaaiaaiaSBaRpaRpaRpaRpaSCaSDaSEaSFaSGaaiaSHaRvaSIaaqaaqaaqaaqaaqaaqaaqaaqaaqaaJaSJaSKaSLaSMajCaSOaSPaSQaaqaSRaSSaSTaSUaSVaaqaSWaSXaSYaSZaSYaTaaTbaTcaTdaTeaTfaTgaThaTiaTjaaqaTkaTlaTmaTnaToaRMaTpaROaRPaTqaaqaTraTsaTtaTuaTvaQAaQAaaqaQDaOEaOFaOGaTwaTxaaiaTyaTzaTAaTBaTCaTDaOQaOQaTEaOSaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaTFaQJaQKaQIaQKaTGaQKaQIaQKaQJaMSaOVaTHaTIaaiaTJaDeaDeaDeaDeaDfaTKaDeaTLaTMaTNaTOaTPaSqaTQaTRaSqaTSaTTaTUaSqaTVaSqaTWaSqaTQaTXaSqaTYaTZaSqaUaaSqaUbaTTaUcaUdaUeaUfaUgaUhaUiaUjaUjaUjaUjaUjaUjaUkaUlaUmaUnaUoaUpaUqaUraUsaUtaRpaRpaUuaUvaUwaUvaUxaUyaUzaUAaUBaUCaUDaaqaUEaUFaUGaUHaUIaUIaUJaUKaULaUMaaqaUNaUOaUPaUPaUQaaqaURaUSaUTaUUaUVaUVaUWaUXaUYaUXaUZaVaaVbaVcaVdaaqaRKaRLaVeaVfaVgaVhaViaVjaVhaVkaaqaVlaVmaaqaVnaVoaQAaVpaaqaVqaVraVsaOGaQDaQDaaiaVtaVuabnafjaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaPbaOVaVvaVwaaiaVxaDeaDeaDeaDeaDfaVyaLUaVzaVAaVBaVAaVCaVDaTQaVEaVFaVGaVHaVIaVFaVFaVFaSoaVFaSoaVJaVFaVKaVFaVFaVLaSqaUbaTTaUcaUdaUdaUdaUdaVMaUdaUdaUdaUdaUdaUdaVNaVOaVPaVQaVRaVSaVTaVUaVVaVWaVXaVXaVXaVYaVZaVZaVZaWaaUDaUDaUDaWbaWcaUDaaqaWdaWeaUIaUIaWfaUIaWgaWhaULaWiaaqaWjaWkaWlaWmaWnaaqaWoaWpaWqaWraWsaWtaaqaWuaWvaWuaaqaaqaaqaouaaqaaqaRKaRLaRLaaJaWwaQqaQqaWxaQqaWyaaqaaqaaqaaqaaqaaqaaqaWzaaqaOGaOGaOFaOGaWAaWBaaqaWCaWDaWEaWFaWGaWHaWIaWJazWaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12561,14 +12660,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpaaacjpcjpcjpcjpcjpcjpcj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaacjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafpaabcwqcwrcwrcwscwtcwucwucwucwtcwucwucwucwtcwucwucwvcwrcwrcwrcwrcwrcwwcwxcwycwzcwAcwBcwCcwDcwEbYHcoLcwFaaqaaqaaqaaqbYHeiJaaicwGcwHcwIeiWcwKcwLcwMcsPcwOcwPcwQcwRcwScwTcwUcwVcvycwWcurcuvcuvcuvcuvcwXcmtcwYcwZcvDcxacxbcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcuNcxncuQcuQctKaaaaaaaabafjcxocvRcxpaaqcxqcvTckbcvTaaqcxrcxscvWcxtcxucvZcxrcxvabnaaaaaaaaicpCcpDcpCcxwcpFckdckecwccxxcxyckdcxzaaqaaqaaqaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaaacxAcxAcxAcxAcxAaabctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoaaaaabaaaaabaabcxBaabaaaaabcxBaabaaaaabcxBaabaaaaaaaaaaaaaaaaaaaaaaaacvnbAucxCcxDcxEcxFaaicxGbYHcxHcvucvucvucvucvucvucBraaicxJcxKcxLcxMcxNcxOcxPcxQcxRcxScxTcxUcxVcxWcxXcxYcxZcvzcurcyacybcuvcuvcyccmtcydcyecvDcyfcygcyhaaqcyicyjcykcylcymcyncymcyoaabctKctKctKctKctKaabaabaabcdMcypcvRcxpaaqcyqcyrcyscytcyuabtabXabXcyvabXcywaDKaaqabnaaaaaaaaicpCcpCcpCcwacyxcyycyzcrucyActYctYcyBcyCcyDcyEciVaaaaaactiaaaaabaaaaabaabaabaaacvlaaaaabaaaaabaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoafoafpaabaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaaaaabaabcyGaaiaaiaaiaaiaaicyHcyIbYHcyJbYHbYHbYHcyKcCicyMcyNcxLcxLcyOcxNcyPcyQcBscyScyTcyUcyVcyWcyXcyYcyZczaczbczcczdczeczfczgczhcziczjcxcczkczlczmcznczoczpczqczrczscztczuczvczwcuMcuNczxczyczyctKaaaaaaaabafjczzcvRczAaaqczBczCczCczDaaqczEczFczGczHczIczJczKczLctbaaaaaaczMaoiaoiaoiaoiczNczOczPczOczQczOczOczRcwcckdckdckQaaaaaactiaaacvkcvkcvkcvkcvkaabcvlaabcvkcvkcvkcvkcvkaabctiaaaaaaaaaaaaaaaaaaaaaczSaaaaaaaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaacqKcyFcqMaabcqKcyFcqMaaacqKcyFcqMaaaaaaaaaaabaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicCjaaicClcxLcxLcxMczVczWczXczYczZaaicAacAbcAccAdcAeaaicAfcuvcAgcAhcAicAjcuvcAkcAlcAmcAneiwcAocApcAqcArcAscAtcAucvDcAvcAwcAxcvMaabcvNcAycAzcAActKaaaaaaaaaafjchUcABcACaaqcADcAEcAFcAGcAHcvRcAIcAJczHcAKcALcAMcANcAOaabaaacAPcAQcARcAScATcAUcoBcAVcoBcAWcoBcftcoBcAXcAYckdaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocAZaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaacqKcyFcqMaabcqKcyFcqMaaacqKcyFcqMaaaaaaaaaaabaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicCjaaicClcxLcxLcxMczVczWczXczYczZaaicAacAbcAccAdcAeaaicAfcuvcAgcAhcAicAjcuvcAkcAlcAmcAnelhcAocApcAqcArcAscAtcAucvDcAvcAwcAxcvMaabcvNcAycAzcAActKaaaaaaaaaafjchUcABcACaaqcADcAEcAFcAGcAHcvRcAIcAJczHcAKcALcAMcANcAOaabaaacAPcAQcARcAScATcAUcoBcAVcoBcAWcoBcftcoBcAXcAYckdaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocAZaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaabaabaaicCrcCqcBecBdcBecBecBecBfcBgcBhcBecBicBjcBjcBkcBlcBncBmcBmcBocBpcCscxMcxLcxLaaicBtcBucBvcBwcBxcksaoicBycktcBzcBAcBBaaiaaicBCcBDcBEcBFcyfcygcBGcBHcBIcBJcBKcvDcAvcBLcBMcBNcxmcuNcBOczyczyctKaabaaaaaacdMcBPcBQcBRcBScBTcBUcBTcBTcBVcBWcBXcBYcBYcBZcCacCbcCccCdaabaabcCeckdckdckeckdckeckdckeckRcCfcwecCgcwecsbcCgcChaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaabcxAcxAcxAcxAcxAaaactiaaaczSaaaczSaaaaaaczSczSczSczSczSczSczSaaaaaaczSaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaabcqKcyFcqMaabaabaabaaaaaaaaaaaaaabaaaaaicEMcELcCkaaicFAcCmcCncCncCncCocCncCncCncCncCpacCcDscEBcEIcCtcCucCvcCwcCxcCxcCxcCycCzcxLcxLcxLcCAcCBcCCaaqcCDcCEcCFcCGaaiaaiaaiaaicCHcyfcygcCIcCJcCKcCLcCMcvDcCNcCOcCPcCQcCRctKctKctKctKctKaaaaaaaaaafjcCScCTcCUcCVcCWcCXcCWcCWcCYcCZcDacDbcCccDccDdcAMczHcDeaabaabawjcDfcDgcDhcDicDjcDkcDlcDmcDjcDkcDnaaicDocDpabnaaiaaaaaactjaaaaabaaaaabaaaaabaaacDqaaaaabaaaaabaabaabaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafXaabcqKcDrcqMaaacqKcDrcqMaaacqKcDrcqMaabafpaabaabaaaaaaaaaaaaaaaaaicFBcELcDtaaiaaicDuaaiaaiaaicDvaaiaaiaaiaaiaaiaaiaaiaaiaaicDwcDxcDycDzcBpcBpcBpcDAcDBcDCcDDcBpcBpcDBcDEcDFcDGcCEcDHcDIaaicDJcDKacCcDLcDMcDNcDOcDPcBKcvDcDQcDRcDScDTcDUczwcDVcuNcDWcDXcDYctKaaaaaaaaaafjcDZcEacEbcEccEdcEecEfczHcEgcEhcEicEjcEkcElcEmcEncEocEpaaaaaaawjcEqcErcEsaaqcEtcEucEvaaqcEwcExcEyaaicEzcEAabnaaaaaaaaactiaaacvkcvkcvkcvkcvkaabctkaabcvkcvkcvkcvkcvkaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaafpaabaabaaaaaaaaaaaaaaaaaicFDcELcDtaaicECcEDcoecFEcEFcEGcEHcGoaaicEJcEKcGpcHhcIcaaicENcxLcEOcxMcxLcxLcEPcEQcERcEScETcEUcEVcEWaaicEXcDGcCEcEYcEZaaiaaicFaaaicFbcFccvDcDOcDPcFdcvDcDQcDRcAvcAwcFecvMcFfcvNcFgcFhcFictKaaaaaaaaacFjcFkcFlcFlcFmacfacfarzcFncFocFpcFqcFrcFsaaiawjabnaaiccoaaaaaaawjcFtcpCcpCaaqcFucpCcpCaaqcFucpCcpCaaicFvcFwcFxaaaaabaabctiaabcwjcwkcwkcwkcwkcsgcFycsgcwocwocwocwocAZaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafoafoafpafoafoafXafpafpafpafpafoafpafpafocFzaabaaaaaaaaaaaaaaaaaaaaicJucIMcFCcBdcDtcJYcKAcFEcFFcFGcFHaaiaaicFIcKBcdzcdzcdzcFKcxMcxLcEOcxMcxLcFLcFMacCcFNcFOcFPcFQcFRauZcFScEOcxMcFTcFUaaqcFVaaiabnaaicFWcFXcvDcDOcDPcBKcvDcFYcDRcAvcFZcGacBNcGbcuNcGccDXcDXctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGdczHczHcGecGfcoAaaicGhcGicGjaaaaaaaaaawjcGkcpCcpCaaqcGlcpCcpCaaqcGlcpCcpCaaicFvcGmabnaaaaaaaaactiaabcxAcxAcxAcxAcxAaaactkaaacxAcxAcxAcxAcxAaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEQaaiaaiaaiaaiaaiaaicGnaaiaaiaaiaaiaaiaaicEQaaichPcmCcdzcdzcdzcFKcGqcGrcGscGtcGucGvcGvcGwcGxcGycGzcGAcGBcGwcGCcGDcGEcGFcGFcGGcGHcGIcFaaaicGJcGKcvDcDOcvDcGLcvDcDQcDRcAvcAwcGMcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGNczHczHcAGcGOcGPaaiaaaaaaaaaaaaaaaaaaawjcpCcpCcpCaaqcGQcpCcpCaaqcGQcpCcpCaaicGRcGSabnaaaaaaaaactiaaaaaaaabaabaabaaaaaactkaabaaaaaaaabaabaaaaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicGTcGUcGVcGWcGXcGYcGZcHacHbcepcHdcHecHfaaiaaicHgcnpcdzcdzcmFaaicHicHjcHkcHlcHmcHncHoaaicHpcHqcHrcxLcHsaaicHtcHucHvcHlcHlcHwcHxaaicFaaaicHycHzcvDcDOcvDcCIcCJcHAcHBcDScHCcHDczwcHEcuNcHFcHGcHGctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgOcHHcHIcHJcHKcHLcHMaaiaaaaaaaaaaaaaaaaaacHNaaiaaiaaiaaiaaiaaiaaiaaicHOcHOcHOccocHPcHQabnaaaaaaaaactictictictictiaaaaaaaaactkaaaaaaaaactictictictjctiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaabcqKcyFcqMaabaabaabaaaaaaaaaaaaaabaaaaaicEMcELcCkaaicFAcCmcCncCncCncCocCncCncCncCncCpacCcDscEBcEIcCtcGpcCvcCwcCxcCxcCxcCycCzcxLcxLcxLcCAcCBcCCaaqcCDcCEcCFcCGaaiaaiaaiaaicCHcyfcygcCIcCJcCKcCLcCMcvDcCNcCOcCPcCQcCRctKctKctKctKctKaaaaaaaaaafjcCScCTcCUcCVcCWcCXcCWcCWcCYcCZcDacDbcCccDccDdcAMczHcDeaabaabawjcDfcDgcDhcDicDjcDkcDlcDmcDjcDkcDnaaicDocDpabnaaiaaaaaactjaaaaabaaaaabaaaaabaaacDqaaaaabaaaaabaabaabaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafXaabcqKcDrcqMaaacqKcDrcqMaaacqKcDrcqMaabafpaabaabaaaaaaaaaaaaaaaaaicFBcELcDtaaiaaicDuaaiaaiaaicDvaaiaaiaaiaaiaaiaaiaaiaaiaaicDwcGqcDycDzcBpcBpcBpcDAcDBcDCcDDcBpcBpcDBcDEcDFcDGcCEcDHcDIaaicDJcDKacCcDLcDMcDNcDOcDPcBKcvDcDQcDRcDScDTcDUczwcDVcuNcDWcDXcDYctKaaaaaaaaaafjcDZcEacEbcEccEdcEecEfczHcEgcEhcEicEjcEkcElcEmcEncEocEpaaaaaaawjcEqcErcEsaaqcEtcEucEvaaqcEwcExcEyaaicEzcEAabnaaaaaaaaactiaaacvkcvkcvkcvkcvkaabctkaabcvkcvkcvkcvkcvkaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaafpaabaabaaaaaaaaaaaaaaaaaicFDcELcDtaaicECcEDcoecFEcEFcEGcEHcGoaaicEJcEKcGrcHhcIcaaielHeDCcEOcxMcxLcxLcEPcEQcERcEScETcEUcEVcEWaaicEXcDGcCEcEYcEZaaiaaicFaaaicFbcFccvDcDOcDPcFdcvDcDQcDRcAvcAwcFecvMcFfcvNcFgcFhcFictKaaaaaaaaacFjcFkcFlcFlcFmacfacfarzcFncFocFpcFqcFrcFsaaiawjabnaaiccoaaaaaaawjcFtcpCcpCaaqcFucpCcpCaaqcFucpCcpCaaicFvcFwcFxaaaaabaabctiaabcwjcwkcwkcwkcwkcsgcFycsgcwocwocwocwocAZaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafoafoafpafoafoafXafpafpafpafpafoafpafpafocFzaabaaaaaaaaaaaaaaaaaaaaicJucIMcFCcBdcDtcJYcKAcFEcFFcFGcFHaaiaaicFIcKBeEbeEoeEpeEmeEneEqeErcxMcxLcFLcFMacCcFNcFOcFPcFQcFRauZcFScEOcxMcFTcFUaaqcFVaaiabnaaicFWcFXcvDcDOcDPcBKcvDcFYcDRcAvcFZcGacBNcGbcuNcGccDXcDXctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGdczHczHcGecGfcoAaaicGhcGicGjaaaaaaaaaawjcGkcpCcpCaaqcGlcpCcpCaaqcGlcpCcpCaaicFvcGmabnaaaaaaaaactiaabcxAcxAcxAcxAcxAaaactkaaacxAcxAcxAcxAcxAaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEQaaiaaiaaiaaiaaiaaicGnaaiaaiaaiaaiaaiaaicEQaaichPcmCcdzcdzcCucDxcENcmFcGscGtcGucGvcGvcGwcGxcGycGzcGAcGBcGwcGCcGDcGEcGFcGFcGGcGHcGIcFaaaicGJcGKcvDcDOcvDcGLcvDcDQcDRcAvcAwcGMcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGNczHczHcAGcGOcGPaaiaaaaaaaaaaaaaaaaaaawjcpCcpCcpCaaqcGQcpCcpCaaqcGQcpCcpCaaicGRcGSabnaaaaaaaaactiaaaaaaaabaabaabaaaaaactkaabaaaaaaaabaabaaaaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicGTcGUcGVcGWcGXcGYcGZcHacHbcepcHdcHecHfaaiaaicHgcnpcdzcdzcFKaaicHicHjcHkcHlcHmcHncHoaaicHpcHqcHrcxLcHsaaicHtcHucHvcHlcHlcHwcHxaaicFaaaicHycHzcvDcDOcvDcCIcCJcHAcHBcDScHCcHDczwcHEcuNcHFcHGcHGctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgOcHHcHIcHJcHKcHLcHMaaiaaaaaaaaaaaaaaaaaacHNaaiaaiaaiaaiaaiaaiaaiaaicHOcHOcHOccocHPcHQabnaaaaaaaaactictictictictiaaaaaaaaactkaaaaaaaaactictictictjctiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaicHRcHScHTcHUcHUcHVcHWcHXcHYcHYcHZcIacIbaaiaaicpwcnpcdzcdzcuhaaicIdcIeaaicIfcIgcIgcIgaaicIhcIicIjcIkcGHaaicIgcIgcIgcIfaaicIlcImaaicFaaaicIncIocIpcIqcIrcIscItcIucztcIvcAwcIwcvMcFfcvNcIxcIycIzctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccocIAcpycpycpycpycIBccoaaaaaaaaaaaaaaaaaacICaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaicEzcIDabnaaaaaaaaaaaaaaaaaaaaaaaaaaactiaabcIEaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFaaaaaaaaacIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicIGcIHcIIcIJcIJcHdcGZcHdcIJcIJcIJcIacIKaaiaaicLfcwJcdzcdzcxIaaicINcIOaaicIPcIQcIRcISaGCcITcIUcIVcIWcGHaGCcIQcIQcIQcIXcIYcIZcJaaaicFacJbcJccJdcJecItcAmcJfcJgcJhcJicJjcJkcJlcBNcGbcuNcJmcHGcHGctKaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicDocDpabnaaicJocJpcJpcJpcJpcJpcJqaaactiaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicJrcIHcHdcHdcHdcHdcGZcHdcHdcHdcJscJtcIKaaiaaicFJcmCcdzcdzcyLaaicDJcJvaaiaaiazSaoKcJwcJxcJycHlcJzcHlcJAcJBcJwaoKazTaaiaaicJCcJDaaicFaaaicJEcJFcJecJGcJHcvDcvDcJIcArcJGcAwcJJcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJKcFvcJLcJMcJNcJOcJPcJQcJRcJPcJPckcaaactictictictictiaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13245,37 +13344,37 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadExdExdExdExdEwdEwdEwdEudEwdEwdEwdEudEudEudEwdEwdEudEudEudEudEudEudEvdEvdEvdEvdDVdDXdDXdDXdEhdEgdEgdEfaabaaaaabaaaaabaaaaabdDVdDVdDVdDVdDVdDVdDXdEhdEgdEgdEgdEhdDXdDVdDVdDVdDVdDVdDVaabaaaaabaaaaabaaaaabdEfdEmdEgdEhdDXdDXdDXdDVdEvdEvdEvdEvdEwdEvdEwaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabdEudEydEydEydEydDVdDVdDVdDXdEhdEgdEgdEfaabaaaaabaaaaabaaaaabdDVdDXdDXdDXdDXdDXdDXdEhdEgdEgdEgdEhdDXdDXdDXdDXdDXdDXdDVaabaaaaabaaaaabaaaaabdEfdEmdEgdEhdDXdDVdDVdDVdEudEudEudEudEvdEvdEvaaaaabaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabaabaabaabaabaabaabdDVdDXdDXdDXdDXdEhdEhdEhdEgdEgdEgdEhdEhdEhdDXdDXdDXdDXdDVaabaabaabaabaabaabaabdEfdEmdEmdEhdDXdDVdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEwdEvdEwdEwdEwaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabaaaaabaaaaabaaaaabdDVdDXdEhdEhdEhdEhdEmdEmdEgdEgdEgdEmdEmdEhdEhdEhdEhdDXdDVaabaaaaabaaaaabaaaaabdEfdEmdEmdEhdDXdDVdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabaaaaabaaaaabaabaabdEhdEidEhdEmdEmdEmdEmdEmdEgdEgdEgdEmdEmdEmdEmdEmdEhdEidEhaabaabaabaaaaabaaaaabdEfdEgdEmdEhdDXdDVdEwdEvdEwdEvdEwdEvdEwdEvdEwdEwdEvdEvdEvdEwdEwdEwaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEzdEzdEzdEzdEzdEzdEzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabaabaabaabaabaabdEhdEhdEmdEmdEmdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEmdEmdEmdEmdEhdEhaabaabaabaabaabaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdEAdEBdEAdECdEAdEzaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabdDVdDVdDVdDVdEhdEhdEmdEmdEmdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEmdEmdEhdEhdDVdDVdDVdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdEzdEAdEDdEAdEEdEAdEzaabaabaaaaaadEFdEFdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdDXdEidEmdEmdEgdEgdEgdEgdEgdEhdEhdEhdEGdEhdEhdEhdEgdEgdEgdEgdEmdEmdEmdEidDXdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdEzdEAdEDdEAdEEdEAdEzaabaabaabaaadEHdEIdEJdEPdEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEhdEmdEmdEgdEgdEgdEhdEhdEhdELdEMdENdEMdELdEhdEhdEhdEgdEgdEgdEmdEmdEhdEhdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabdEzdEAdEDdEAdEEdEAdEzaabaabaabaabdEOdCadEPdEPdEOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEmdEmdEmdEgdEgdEhdEhaabaabdELdEMdENdEMdELaabaabdEhdEhdEgdEgdEgdEmdEmdEhdDXdDXdDVaabdEfdEmdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEzdEzdEzdEzdEzdEFdEQdERdEFdESdETdEFdEzdEzdEzdEzdEFdEFdEUdEFdEFaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaacaabaacaacaabaabaacaabaabaacdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEmdEgdEgdEgdEhdEhaabaabaabdELdEMdENdEMdELaabaabaabdEhdEhdEmdEgdEmdEmdEhdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdEAdEAdEAdEAdEHdEPdEVdFbdEXdEYdEHdEAdEAdEAdEAdEFdEZdEPdFVdFYdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaabaabaacaacaacaacaacaacaacaacaacaacaacdDVdDXdEhdEgdEgdEhdDVdDVdDXdEhdEhdEmdEgdEgdEgdEhaabaabaabdELdELdELdFcdELdELdELaabaabaabdEhdEmdEmdEgdEmdEhdEhdDXdDVdDVdEhdEmdEgdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdFddFedFedFedEOdFfdFgdFhdFidFjdEOdFkdFkdFkdFldEFdEZdEPdEPdEPdFmdFndFoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacdDVdDXdEhdEgdEgdEhdDXdDXdDXdEhdEmdEmdEgdEgdEhdEhaabaabdELdELdFpdFpdEMdFpdFpdELdELaabaabdEhdEhdEmdEgdEmdEmdEhdDXdDXdDXdEhdEmdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdEAdEAdEAdEAdEFdFqdEPdFrdEPdFsdEFdEAdEAdEAdEAdEFdFtdEPdEPdFudEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaqaabaabaabaabaabaaqaaqaaqaaqaaqaabaacaabaacaabaacaabaacaabaacdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDXdEhdEgdEgdEhdEidEhdEhdEhdEmdEmdEmdEmdEhdELdELdELdELdEMdFpdEMdEMdEMdFpdEMdELdELdELdELdEhdEmdEmdEgdEmdEhdEhdEhdEidEhdEmdEmdEhdDVdDVaaqaaqaaqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdFvdFwdFwdFwdFxdEXdEPdFsdEPdFydFxdFzdFzdFzdEBdEFdFAdEPdEPdEPdFBdFndFCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaabaacaacaacaacaacaacaacaacaacaacaacaacaacdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdEhdEgdEgdEmdEmdEmdEmdEmdEmdEgdEmdEmdEhdEMdEMdEMdELdFpdFpdEMdENdEMdFpdFpdELdEMdEMdEMdEhdEmdEmdEgdEmdEmdEmdEmdEgdEmdEmdEgdEhdDXdDXaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEzdEAdEAdEAdEAdFDdFEdFFdEXdCadFGdFDdEAdEAdEAdEAdEFdFHdEPdEPdFIdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaacaacaacaacaacaabaabaacaacaabaacaabaacaabaacaabaacaabaacdFJdDXdFJdDXdDXdDXdDXdDXdDXdDXdDXdDXdEhdEmdEmdEmdEmdEmdEmdEmdEgdEmdEmdEmdFKdENdENdENdFLdEMdEMdEMdENdEMdEMdEMdFMdENdENdENdFNdEgdEmdEgdEgdEgdEgdEgdEgdEmdEmdEmdEhdDXdDXaacaacaacaacaacaacaacaacaacaabaacaabaacaabaacaacaacaabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdEFdEFdEFdEFdEFdEFdFOdEFdEFdEFdEFdEFdEFdEFdEFdFPdEPdEPdEPdFQdFndFRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaabaacaabaacaacaacaacaacdDXdDXdDXdFJdDXdDXdDXdDXdDXdDXdDXdDXdEhdEgdEgdEmdEgdEgdEgdEgdEgdEgdEgdEgdEhdEMdEMdEMdELdFpdFpdEMdENdEMdFpdFpdELdFSdFSdFSdEhdEmdEmdEgdEmdEmdEmdEmdEmdEmdEgdEgdEhdDXdDXaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdFTdFUdFXdEWdFWdFXdFTdEKdFZdGadGadGcdEUdFadEPdEPdGddEUdCadEPdGedEPdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaaqaabaabaabaabaabaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdEhdEgdEgdEhdGfdEhdEhdEhdGgdEmdGgdEmdEhdELdELdELdELdEMdFpdEMdEMdEMdFpdEMdELdELdELdELdEhdEmdEmdEgdEmdEhdEhdEhdEidEhdEmdEgdEhdDVdDVaaqaaqaaqaaqaaqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGhdFUdFXdFUdFUdFXdGhdGadGadGadGadGadEFdEFdEFdEFdEFdEFdEFdEFdEFdEFaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabdDVdFJdGidGjdGjdGidDXdDXdDXdGidGkdGkdGkdGkdGidGiaabaabdELdELdFpdFpdEMdFpdFpdELdELaabaabdGidGidGkdGkdGkdGkdGidDXdDXdDXdGidGjdGjdGkdDXdDVaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGhdGldFXdFUdFUdFXdGhdGmdGndGmdGadGadGodGpdGpdDjdGsdGtaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGjdGidDVdDVdDXdGidGidGkdGudGkdGudGiaabaabaabdELdELdELdFcdELdELdELaabaabaabdGidGkdGkdGjdGkdGidGidDXdDVdDVdGidGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGhdGvdFXdGwdGwdFXdGxdGmdGmdGydGadGadGzdGpdGpdGpdGAdGBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGjdGCaabdDVdDXdDXdGidGkdGkdGkdGkdGidGiaabaabaabdELdEMdENdEMdELaabaabaabdGidGidGkdGkdGjdGkdGidDXdDXdDVaabdGCdGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGxdGDdGEdFXdCEdFXdGFdGadGadGadGadGadGtdGpdGpdGpdGGdGBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdFJdGidGjdGjdGCaabdDVdDXdDXdGidGkdGudGkdGudGkdGidGiaabaabdELdEMdENdEMdELaabaabdGidGidGkdGkdGkdGkdGkdGidDXdDXdDVaabdGCdGkdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdEFdGHdEFdEFdEFdGIdEFdGadGadGadGadDedGBdGpdGpdGrdGsdGBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabdDVdDXdDXdGidGidGkdGkdGkdGkdGkdGidGidGidELdEMdENdEMdELdGidGidGidGkdGjdGjdGjdGkdGidGidDXdDXdDVaabdGCdGkdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcICaabaabdEFdCwdEFdEFdGLdGadGadGadGBdGpdGpdGpdGAdGBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabdDVdDXdDXdDXdGMdGudGkdGudGkdGudGkdGjdGidGidGidGNdGidGidGidGkdGkdGjdGjdGjdGkdGkdGOdDXdDXdDXdDVaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacICaabaabdEFdGPdGQdEFdGRdGadGadGadFDdGSdGTdGUdGGdFDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdFJdGidGjdGkdGCaabdDVdDVdDVdDVdGidGidGkdGkdGkdGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGkdGkdGidGidDVdDVdDVdDVaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacICaaaaabdEFdEFdEFdEFdEFdEFdGadGadEFdEFdEFdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaabaabaabaabaabdGidGidGudGkdGudGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGkdGkdGidGiaabaabaabaabaabaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJnaaaaaaaabaabaabaabaabdEFdGadGadEFaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaaaaabaaaaabaabaabdGidGOdGidGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGidGOdGiaabaabaabaaaaabaaaaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabdEFdGadGadEFaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdDVdFJdGidGjdGjdGCaabaaaaabaaaaabaaaaabdDVdDXdGidGidGidGidGjdGjdGjdGjdGjdGjdGjdGidGidGidGidDXdDVaabaaaaabaaaaabaaaaabdGCdGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabdEFdGadGVdEFaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaabaabaabaabaabaabdDVdDXdDXdDXdDXdGidGidGidGjdGjdGjdGidGidGidDXdDXdDXdDXdDVaabaabaabaabaabaabaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGWdGXdGXdGXdGXdGXdGXdGYdGZdEFdGJdGKdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGkdGkdGCaabaaaaabaaaaabaaaaabdDVdDXdDXdDXdDXdDXdDXdGidGjdGjdGjdGidDXdDXdDXdDXdDXdDXdDVaabaaaaabaaaaabaaaaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHcdHddHedHfdHedHfdHgdHhdHidEFdHjdHkdEFaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDVdFJdGidGkdGkdGCaabaaaaabaaaaabaaaaabdDVdDVdDVdDVdDVdDVdDXdGidGjdGjdGjdGidDXdDVdDVdDVdDVdDVdDVaabaaaaabaaaaabaaaaabdGCdGkdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHldHmdHedHfdHedHfdHedHfdHndHodHpdHqdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDVdGidGidGkdGkdGidGiaabaabaabaabaabaabaabaabaabaabaabdDVdDXdGOdGjdGjdGjdGOdDXdDVaabaabaabaabaabaabaabaabaabaabaabdGidGidGkdGkdGidGidDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHrdHsdHedHfdHedHfdHedHtdHudEFdHvdHwdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGkdGkdGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGidGidGjdGjdGjdGidGidGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGjdGjdGjdGjdGCaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHxdGXdGXdGXdGXdGXdGXdGYdGZdEFdEFdEFdEFaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGjdGkdGkdGkdGkdGkdGkdGkdGkdGkdGjdGjdGjdGkdGjdGjdGkdGjdGjdGjdGkdGkdGkdGjdGjdGjdGjdGkdGjdGkdGkdGjdGjdGjdGkdGjdGjdGjdGjdGCaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaabaaaaaaaaaaaaaaaaabaaqaaqaaqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabaaaaabaaaaabaaaaabdDVdDXdEhdEhdEhdEhdEmdEmdEgdEgdEgdEmdEmdEhdEhdEhdEhdDXdDVaabaaaaabaaaaabaaaaabdEfdEmdEmdEhdDXdDVdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvdEvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqdEIdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEYdEZaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabaaaaabaaaaabaabaabdEhdEidEhdEmdEmdEmdEmdEmdEgdEgdEgdEmdEmdEmdEmdEmdEhdEidEhaabaabaabaaaaabaaaaabdEfdEgdEmdEhdDXdDVdEwdEvdEwdEvdEwdEvdEwdEvdEwdEwdEvdEvdEvdEwdEwdEwaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDeaabaabaaaaaaaaadCwdCwdCwdCwdCwdCwdCwaaaaaaaaaaabaabaaaaaaaaaaaadDeaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabaabaabaabaabaabdEhdEhdEmdEmdEmdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEmdEmdEmdEmdEhdEhaabaabaabaabaabaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabaabaabaaaaabdCwdEAdFadEAdFbdEAdCwaaaaaaaabaabaaaaaaaaaaaaaaadDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabdDVdDVdDVdDVdEhdEhdEmdEmdEmdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEgdEmdEmdEhdEhdDVdDVdDVdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaaaaabaabaabaabdCwdEAdCEdEAdECdEAdCwaaaaabaabaabdEDdEDdEDdEDdEDdDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdDXdEidEmdEmdEgdEgdEgdEgdEgdEhdEhdEhdEGdEhdEhdEhdEgdEgdEgdEgdEmdEmdEmdEidDXdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaaaaaaaabaabaabdCwdEAdCEdEAdECdEAdCwaabaabaabaaadEHdDjdEzdEBdEHdDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEhdEmdEmdEgdEgdEgdEhdEhdEhdELdEMdENdEMdELdEhdEhdEhdEgdEgdEgdEmdEmdEhdEhdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqdDeaaaaabaabaabaabdCwdEAdEXdEAdEWdEAdCwaabaabaabaabdEOdEVdEUdEUdEOdEKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEmdEmdEmdEgdEgdEhdEhaabaabdELdEMdENdEMdELaabaabdEhdEhdEgdEgdEgdEmdEmdEhdDXdDXdDVaabdEfdEmdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqdEIdEEdCwdCwdCwdCwdCwdEDdEQdERdEDdESdETdEDdCwdCwdCwdCwdEFdEFdEJdEFdEFaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaacaabaacaacaabaabaacaabaabaacdDVdDXdEhdEgdEgdEfaabdDVdDXdDXdEhdEmdEgdEgdEgdEhdEhaabaabaabdELdEMdENdEMdELaabaabaabdEhdEhdEmdEgdEmdEmdEhdDXdDXdDVaabdEfdEgdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDeaabdCwdEAdEAdEAdEAdEHeFDeFEeFFeFzeFGdEHdEAdEAdEAdEAdEFeFHdFzeFIeFJdEDdEDdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaabaabaacaacaacaacaacaacaacaacaacaacaacdDVdDXdEhdEgdEgdEhdDVdDVdDXdEhdEhdEmdEgdEgdEgdEhaabaabaabdELdELdELdFcdELdELdELaabaabaabdEhdEmdEmdEgdEmdEhdEhdDXdDVdDVdEhdEmdEgdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaaadCweFSeFReFReFUdEOeFTdFgeFMeFLeFKdEOeFPeFOeFOeFNdEFeFQdFzdFzeFidFmdFndFoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacdDVdDXdEhdEgdEgdEhdDXdDXdDXdEhdEmdEmdEgdEgdEhdEhaabaabdELdELdFpdFpdEMdFpdFpdELdELaabaabdEhdEhdEmdEgdEmdEmdEhdDXdDXdDXdEhdEmdEmdEhdDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaaadCwdEAdEAdEAdEAdEDeFmeFneFpeFoeFmdEDdEAdEAdEAdEAdEFeFrdFzdFzeFqdEFdEFdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaqaabaabaabaabaabaaqaaqaaqaaqaaqaabaacaabaacaabaacaabaacaabaacdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDXdEhdEgdEgdEhdEidEhdEhdEhdEmdEmdEmdEmdEhdELdELdELdELdEMdFpdEMdEMdEMdFpdEMdELdELdELdELdEhdEmdEmdEgdEmdEhdEhdEhdEidEhdEmdEmdEhdDVdDVaaqaaqaaqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdCweFCeFBeFBeFAdFxeFzdEPeFxeFweFvdFxeFueFteFteFsdEFeFydFzdFzeFidFBdFndFCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaabaacaacaacaacaacaacaacaacaacaacaacaacaacdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdDXdEhdEgdEgdEmdEmdEmdEmdEmdEmdEgdEmdEmdEhdEMdEMdEMdELdFpdFpdEMdENdEMdFpdFpdELdEMdEMdEMdEhdEmdEmdEgdEmdEmdEmdEmdEgdEmdEmdEgdEhdDXdDXaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqdDeaabdCwdEAdEAdEAdEAdFDeFbeFceFfdEUeFgdFDdEAdEAdEAdEAdEFeFddFzdFzeFedEFdEFdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaacaacaacaacaacaabaabaacaacaabaacaabaacaabaacaabaacaabaacdFJdDXdFJdDXdDXdDXdDXdDXdDXdDXdDXdDXdEhdEmdEmdEmdEmdEmdEmdEmdEgdEmdEmdEmdFKdENdENdENdFLdEMdEMdEMdENdEMdEMdEMdFMdENdENdENdFNdEgdEmdEgdEgdEgdEgdEgdEgdEmdEmdEmdEhdDXdDXaacaacaacaacaacaacaacaacaacaabaacaabaacaabaacaacaacaabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqdEIdEEdEDeFldEFdEFeFkdEFdEFdEFdEFdEFeFjdEFdEFdEFdEFdEFdEFdEFeFhdFzdFzeFidFQdFndFRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaabaacaabaacaacaacaacaacdDXdDXdDXdFJdDXdDXdDXdDXdDXdDXdDXdDXdEhdEgdEgdEmdEgdEgdEgdEgdEgdEgdEgdEgdEhdEMdEMdEMdELdFpdFpdEMdENdEMdFpdFpdELdFSdFSdFSdEhdEmdEmdEgdEmdEmdEmdEmdEmdEmdEgdEgdEhdDXdDXaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDeaabdFTeELeEMeENeEOeEIdFTeEJeEKeETdFzeEUdFfeESeEQdFzeESdFfeEQdFzeEReEPdEDdEDdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaaqaabaabaabaabaabaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdDVdEhdEgdEgdEhdGfdEhdEhdEhdGgdEmdGgdEmdEhdELdELdELdELdEMdFpdEMdEMdEMdFpdEMdELdELdELdELdEhdEmdEmdEgdEmdEhdEhdEhdEidEhdEmdEgdEhdDVdDVaaqaaqaaqaaqaaqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdGheFadFzdFzeEyeEZdGheEYeEYeEXdFzeEWdEFdFddEFdEFeEVdEDdEDdEDdEDdEDaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabdDVdFJdGidGjdGjdGidDXdDXdDXdGidGkdGkdGkdGkdGidGiaabaabdELdELdFpdFpdEMdFpdFpdELdELaabaabdGidGidGkdGkdGkdGkdGidDXdDXdDXdGidGjdGjdGkdDXdDVaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdGheExdFzdFzeEyeEzdGheEAeEAeEtdFzdFzdFTeEudFAeEweEvdGtaabdyndynaaqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGjdGidDVdDVdDXdGidGidGkdGudGkdGudGiaabaabaabdELdELdELdFcdELdELdELaabaabaabdGidGkdGkdGjdGkdGidGidDXdDVdDVdGidGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdGheEBdFzdFzdFzeEDdGxeECeECeEFdFzdFzeEEeEGdFAdFFdFFdGBaabaaaaaaeEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGjdGCaabdDVdDXdDXdGidGkdGkdGkdGkdGidGiaabaabaabdELdEMdENdEMdELaabaabaabdGidGidGkdGkdGjdGkdGidDXdDXdDVaabdGCdGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdGxdGFdGGdGJdGKdGzdGAdFzdFzdFzdFzdFzdGydFAdFAdFAdGedGBaabaaaaaadDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdFJdGidGjdGjdGCaabdDVdDXdDXdGidGkdGudGkdGudGkdGidGiaabaabdELdEMdENdEMdELaabaabdGidGidGkdGkdGkdGkdGkdGidDXdDXdDVaabdGCdGkdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaabdEDdEDdGRdGPdEFdGLdEFdEFdGcdFzdFzeEsdGVdFEdFAdGUdGTdGBaabaaaaaadDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabdDVdDXdDXdGidGidGkdGkdGkdGkdGkdGidGidGidELdEMdENdEMdELdGidGidGidGkdGjdGjdGjdGkdGidGidDXdDXdDVaabdGCdGkdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDeaaaaaaaabdFGdFHdFIdFIdFPdEFdFUdFzdFzdFzdGBdFEdFAdFFdFFdGBaabaabaaadDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabdDVdDXdDXdDXdGMdGudGkdGudGkdGudGkdGjdGidGidGidGNdGidGidGidGkdGkdGjdGjdGjdGkdGkdGOdDXdDXdDXdDVaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDeaaaaaadFYdFZdFVdFWdFIdGddGadGcdFzdFzdFzdFDdGsdGndGmdGedFDaaaaabaabdDeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabdDVdFJdGidGjdGkdGCaabdDVdDVdDVdDVdGidGidGkdGkdGkdGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGkdGkdGidGidDVdDVdDVdDVaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqdFrdEYdEYdFkdEDdFldFqdFidFjdEFdEFdFhdFfdFfdEFdEFdFddEFdFedEDaaaaaaaabdDeaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaabaabaabaabaabdGidGidGudGkdGudGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGkdGkdGidGiaabaabaabaabaabaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaabaabaaqdEDdEDdEDdEDdEDdEDdFsdEFdFydFydEFdFwdFvdFudEDdFtdEYdEYdEYdEEaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaaaaabaaaaabaabaabdGidGOdGidGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGidGOdGiaabaabaabaaaaabaaaaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabdyndyndyndEDdEDdEFdFzeGbdFfdFzdFzeGcdEDaaaaaaaaaaabaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdDVdFJdGidGjdGjdGCaabaaaaabaaaaabaaaaabdDVdDXdGidGidGidGidGjdGjdGjdGjdGjdGjdGjdGidGidGidGidDXdDVaabaaaaabaaaaabaaaaabdGCdGjdGjdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabdEFdFzeFXdEFeFZeGaeFYdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGjdGkdGCaabaabaabaabaabaabaabdDVdDXdDXdDXdDXdGidGidGidGjdGjdGjdGidGidGidDXdDXdDXdDXdDVaabaabaabaabaabaabaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGWdGXdGXdGXdGXdGXdGXdGYdGZdEFeFVeFWdEDdEDdEDdEDdEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabdDVdFJdGidGkdGkdGCaabaaaaabaaaaabaaaaabdDVdDXdDXdDXdDXdDXdDXdGidGjdGjdGjdGidDXdDXdDXdDXdDXdDXdDVaabaaaaabaaaaabaaaaabdGCdGjdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHcdHddHedHfdHedHfdHgdHhdHidEFdHjdHkdEDdyndyndyndynaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdDVdFJdGidGkdGkdGCaabaaaaabaaaaabaaaaabdDVdDVdDVdDVdDVdDVdDXdGidGjdGjdGjdGidDXdDVdDVdDVdDVdDVdDVaabaaaaabaaaaabaaaaabdGCdGkdGkdGidDXdDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHldHmdHedHfdHedHfdHedHfdHndHodHpdHqdEDdynaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDVdGidGidGkdGkdGidGiaabaabaabaabaabaabaabaabaabaabaabdDVdDXdGOdGjdGjdGjdGOdDXdDVaabaabaabaabaabaabaabaabaabaabaabdGidGidGkdGkdGidGidDVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHrdHsdHedHfdHedHfdHedHtdHudEFdHvdHwdEDaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGkdGkdGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGidGidGjdGjdGjdGidGidGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGjdGjdGjdGjdGCaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHxdGXdGXdGXdGXdGXdGXdGYdGZdEDdEDdEDdEDaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGjdGkdGkdGkdGkdGkdGkdGkdGkdGkdGjdGjdGjdGkdGjdGjdGkdGjdGjdGjdGkdGkdGkdGjdGjdGjdGjdGkdGjdGkdGkdGjdGjdGjdGkdGjdGjdGjdGjdGCaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabdHyaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGkdGkdGkdGjdGjdGjdGjdGjdGjdGkdGjdGjdGjdGjdGkdGkdGjdGjdGjdGjdGkdGkdGjdGjdGkdGkdGkdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGjdGCaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGkdGkdGkdGkdGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGjdGjdGkdGkdGjdGidGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGCdGidGjdGjdGjdGjdGCaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdGidGidGidGidGidGidHzdHzdHzdHzdHAdHzdHBdHzdHBdHzdHBdHzdGidGjdGjdGjdGjdGkdGidHCdHCdHDdHDdHDdHDdHDdHDdHDdHDdHCdHCdGidGidGjdGjdGidGiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13725,7 +13824,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadynekRekRekRekRdFDdEPdEPeladEPdEPdFDekRekRekRekRdynaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyndyndyndyndyndEFelbelcelddCaeledEFdyndyndyndyndynaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdFOdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdEFdEFdEFelHelgelgelgelidEFdEFdEFdEFdEFdEFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacdEdaacaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdEFdEFdEFelxelgelgelgelidEFdEFdEFdEFdEFdEFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacdEdaacaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFTdGlelAdFXelDdGoelgelgelgelgelgdGoehSelkdGrelldGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaabaacaacdEddEdaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGhdGvdFXdFXdFXelmelgelneloelnelgelpdGpdGpdGpdGpdGBaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaacaacaacdEddEdaacelqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGxdGDdGEdGwdFXdGoelgelrelseltelgdGodGSeluelvelwdFDaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacdEddEddEdaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14070,20 +14169,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiexKexLexKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiexMexNexOaaiexPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiexNexNexQaaiawjexRexSexTaaiaaiaaiexRexSexSexSexUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexVexSexSexTaaiaaiaaiaaiexKexWexKaaiexXexYexZeyaeByaaieyceydeydeydeydaEQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeyeeyfeygeyheyieyjeykeyleymeyneyoeypeyqeyrexZeysaaieBdeydeydeydeydaEQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexVexSexSexTaaiaaiaaiaaiexKexWexKaaieDIexYexZeyaeByaaieyceydeydeydeydaEQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeyeeyfeygeDFeyieyjeykeyleymeyneyoeypeyqeyrexZeysaaieBdeydeydeydeydaEQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeyueyveyweyxeyyeyyeyzeyAeyBeyCeyDeyEeyFeyGeyHeyIeyJeyKeydeydeydeydaEQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeyLeyMeyNeyOeyPeyQeyReySeyTeyUeyVeyWeyXeyYexZeyZaaiezaeydeydeydeydezbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeyLeyMeyNeyOeyPeyQeyReySeyTeyUeyVeyWeyXeyYexZeyZaaieDDeydeydeydeydezbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezcezdezdezeaaiaaiaaiaaiezfezgezhaaiezCezjezkezlezmaaieydezoezpezqeydaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiezfezgezraaiaaiexRexSexTaaiaaiaaiexRexSexTaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexVexSexSexSexSexTaaiaaiaaiezfezseztaaiezuezvezvezvezvezxezvezvezvezyezzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezAezAezAezBeziezDaaiezEezFezGaaiezvezHezHezIezIezvezJezKezLezMezNezOezPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezAezAezAezAezAezQaaiezfezgezRaaiezSezHezHezIezIezvezTezUezVezWezvaEQaaaezXezXezXezXezXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezAezAezAezAezAeBnaaiezfezgezRaaiezSezHezHezIezIezvezTezUezVezWezvaEQaaaezXezXezXezXezXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezBezYezBezZeAaeAaeAbeAceAdeAeeAfeAgeAheAheAheAheAiezJeAjezVeAkeAleAmeAneAoeApeAqeArezXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAeAsezYezBeAteAueAveAweAxeAyeAzeAAeABezveACeADeAEezvezvezveAFezveAGaATeAHeAIeAJeAKeAreALaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezAezAezAezAezAeAMaaieANeAOeAPeAQeAReASeASeASeASeATezKezJeAUeAVeAWeAXeAYeAZeBaeBbeArezXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQezAezAezAezAezAeBceytckseyleBeeBfaaieBgeBheBieBjeBjezveBkeAEeBleAleBmaEQaaaezXezXezXezXezXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezcezdezdezdezdezeaaiaaiaaieBneBoeBpaaiezweBheBieBjeBjezveAjezJeBqeAleBreBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezcezdezdezdezdezeaaiaaiaaieCUeBoeBpaaiezweBheBieBjeBjezveAjezJeBqeAleBreBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieBtezgeBuaaiezveBvezvezvezvezvezvezvezveBvezvaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexVexSexSexTaaiaaiaaiaaieANeBweBuaaiaaiaaiaaiaaiexRexSexSexSexTaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeBxeBxeBxeANeANeANezneANezseAPeBAeyAeBBeBCeBDeBEeBEeBFeBGeBHeBIeBJaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14093,11 +14192,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieCseCteCueCveCweCxeCyeCzeCAaaieCgeCBeCgeCCeCgeCpeCgeCgaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieCDeCteCEeCFeCGeCHeCIeCteCJaaiaaieCKaaiaaiaaieCKaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieCLeCteCMeCNeCOeCPeCQeCteCRaaieCSeCTeCSaaieCSeCTeCSaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieCUeCVeCWeCXeCYeCZeCWeCVeDaaaieCSeDbeCSaaieCSeDceCSaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiezQeCVeCWeCXeCYeCZeCWeCVeDaaaieCSeDbeCSaaieCSeDceCSaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieDdeDeeDfeDfeDgeDheDieDjeDkaaieCSeCSeCSaaieCSeCSeCSaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaieDleDmaaiaaieybaaiaaieDoeDpaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieDqeDreDseDteDuaaieDveDweDxaaieDyeDzeDAeDBeicaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieDDeDEeDEeDEeDEaaieDFeDGeDHaaieDIeDJeDJeDJeDJaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiexXeDEeDEeDEeDEaaiezaeDGeDHaaieyheDJeDJeDJeDJaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaieDKeDLeDMeDLeDEaaieDHeDNeDHaaieDJeDJeDOeDJeDPaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDQeDEeDReDSeDTeDEaaiaaiaaiaaiaaieDJeDJeDJeDJeDUaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEQeDEeDEeDEeDEeDEeDQaaaaaaaaaaaieDVeDWeDXeDYeDZaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+112 -91
View File
@@ -1953,8 +1953,8 @@
"aLC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aLH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLI" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; icon_state = "manifold-b-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aLJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -2009,8 +2009,8 @@
"aMG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMJ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; icon_state = "manifold-b-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aML" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area)
"aMM" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/turf/simulated/wall,/area)
"aMN" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/chapel/main)
@@ -2203,8 +2203,8 @@
"aQs" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library)
"aQt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/library)
"aQu" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library)
"aQv" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/chapel/office)
"aQw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aQv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; icon_state = "manifold-r-f"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aQw" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/chapel/office)
"aQx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQy" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQz" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
@@ -4327,8 +4327,8 @@
"bFk" = (/obj/structure/closet/wardrobe/genetics_white,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics)
"bFl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/medical/genetics)
"bFm" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFn" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
"bFo" = (/obj/machinery/camera{c_tag = "Research Hallway West"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFn" = (/obj/machinery/camera{c_tag = "Research Hallway West"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFo" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
"bFp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFr" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -5587,6 +5587,7 @@
"cdw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/medical/ward)
"cdx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/ward)
"cdy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area)
"cdz" = (/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cdA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"cdB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "scanhide"; name = "Scanning Room Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay2)
"cdC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology)
@@ -5810,6 +5811,7 @@
"chM" = (/obj/structure/table,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"chN" = (/obj/machinery/iv_drip,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"chO" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology)
"chP" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/storage/secure)
"chQ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/biostorage)
"chR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/medical/biostorage)
"chS" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Storage APC"; pixel_x = 25},/obj/structure/cable,/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/biostorage)
@@ -6056,8 +6058,10 @@
"cmz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmA" = (/obj/machinery/computer/operating,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmB" = (/obj/machinery/optable,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmC" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cmD" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/FixOVein,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmE" = (/obj/machinery/computer/operating,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cmF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering)
"cmG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cmH" = (/obj/structure/sign/biohazard,/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area)
"cmI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology)
@@ -6093,7 +6097,7 @@
"cnm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cnn" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area)
"cno" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/break_room)
"cnp" = (/obj/machinery/disposal,/turf/simulated/floor,/area/engine/engineering)
"cnp" = (/obj/machinery/field_generator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cnq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/camera{c_tag = "Engineering Foyer"; network = list("SS13")},/obj/structure/noticeboard{pixel_y = 28},/turf/simulated/floor{icon_state = "caution"; dir = 5},/area/engine/break_room)
"cnr" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/engine/break_room)
"cns" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/engine/break_room)
@@ -6204,6 +6208,7 @@
"cpt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cpu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area)
"cpv" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology)
"cpw" = (/obj/machinery/light/small{dir = 8},/obj/machinery/field_generator,/turf/simulated/floor/plating,/area/storage/secure)
"cpx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area)
"cpy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area)
"cpz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area)
@@ -6448,7 +6453,7 @@
"cue" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Assembly Line West"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line)
"cuf" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line)
"cug" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/assembly/assembly_line)
"cuh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"cuh" = (/obj/machinery/light/small{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"cui" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"cuj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft)
"cuk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
@@ -6580,7 +6585,7 @@
"cwG" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 3; pixel_y = 3},/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/engineering)
"cwH" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/structure/table,/obj/item/weapon/book/manual/engineering_guide,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_y = 6},/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/engine/engineering)
"cwI" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light{dir = 1},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/device/modkit/unathi,/obj/item/device/modkit/tajaran,/turf/simulated/floor,/area/engine/engineering)
"cwJ" = (/obj/machinery/power/apc{cell_type = 15000; dir = 1; name = "Engineering APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/engine/engineering)
"cwJ" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cwK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
"cwL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/power/apc{dir = 1; name = "Engineering Hardsuit Storage APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/hardsuitstorage)
"cwM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/hardsuitstorage)
@@ -6631,7 +6636,7 @@
"cxF" = (/obj/machinery/power/apc{dir = 4; name = "Aft Port Solar APC"; pixel_x = 23; pixel_y = 2},/obj/machinery/camera{c_tag = "Aft Port Solar Control"; dir = 1; network = list("SS13")},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cxG" = (/obj/structure/closet/wardrobe/black,/obj/machinery/camera{c_tag = "Aft Port Solar Access"; dir = 1; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/aft)
"cxH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cxI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cxI" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/crate/internals,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"cxJ" = (/obj/machinery/computer/security/engineering,/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor,/area/engine/engineering)
"cxK" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/engine/engineering)
"cxL" = (/turf/simulated/floor,/area/engine/engineering)
@@ -6686,13 +6691,13 @@
"cyI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft)
"cyJ" = (/obj/item/stack/cable_coil{amount = 5},/turf/simulated/floor/plating,/area/maintenance/aft)
"cyK" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/aft)
"cyL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cyL" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"cyM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall/r_wall,/area)
"cyN" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/obj/machinery/power/monitor{name = "Grid Power Monitoring Computer"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engine/engineering)
"cyO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor,/area/engine/engineering)
"cyP" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/hardsuitstorage)
"cyQ" = (/obj/structure/closet/secure_closet/engineering_electrical,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/hardsuitstorage)
"cyR" = (/obj/machinery/vending/tool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/hardsuitstorage)
"cyR" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"cyS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/hardsuitstorage)
"cyT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cyU" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
@@ -6746,7 +6751,7 @@
"czQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"czR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"czS" = (/turf/space,/area/vox_station/southeast_solars)
"czT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Engineering Maintainance"; req_access_txt = "10"; req_one_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/turf/simulated/floor/plating,/area/maintenance/aft)
"czT" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"czU" = (/obj/machinery/disposal,/turf/simulated/floor,/area/atmos/control)
"czV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
"czW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
@@ -6805,8 +6810,8 @@
"cAX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cAY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cAZ" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/solar/starboard)
"cBa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cBb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/engine/reactor_core)
"cBa" = (/obj/machinery/light/small{dir = 8},/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/storage/secure)
"cBb" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cBc" = (/obj/machinery/disposal,/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
"cBd" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter SMES"; req_access_txt = "11"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cBe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
@@ -6821,9 +6826,9 @@
"cBn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cBo" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cBp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering)
"cBq" = (/obj/structure/table,/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"cBr" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/device/pipe_freezer,/obj/item/device/pipe_painter,/turf/simulated/floor,/area/engine/engineering)
"cBs" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor,/area/engine/engineering)
"cBq" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"cBr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cBs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/engine/hardsuitstorage)
"cBt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area)
"cBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office)
@@ -6865,19 +6870,19 @@
"cCf" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cCg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cCh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cCi" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable,/turf/simulated/floor,/area/engine/reactor_core)
"cCj" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/reactor_core)
"cCi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cCj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Engineering Maintainance"; req_access_txt = "10"; req_one_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/turf/simulated/floor/plating,/area/maintenance/aft)
"cCk" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cCl" = (/turf/simulated/floor,/area/engine/reactor_core)
"cCl" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engine/engineering)
"cCm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cCn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cCo" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cCp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cCq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/station_alert,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/engineering)
"cCr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/monitor{name = "Engine Power Monitoring Computer"},/obj/structure/cable,/turf/simulated/floor,/area/engine/engineering)
"cCs" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/engine/engineering)
"cCq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engine/reactor_core)
"cCr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "warning"},/area/engine/reactor_core)
"cCs" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"cCt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cCv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering)
@@ -6927,12 +6932,12 @@
"cDp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Flora Laboratories"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology/flora)
"cDq" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/starboard)
"cDr" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1"; icon_state = "catwalk1"},/area/solar/port)
"cDs" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable,/obj/machinery/camera{c_tag = "Engineering Supermatter SMES"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/engine/reactor_core)
"cDs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/monitor{name = "Engine Power Monitoring Computer"},/obj/structure/cable,/turf/simulated/floor,/area/engine/engineering)
"cDt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cDu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Engine Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cDv" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Monitoring"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/reactor_core)
"cDw" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/engine/engineering)
"cDx" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/engineering)
"cDx" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"cDy" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cDz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cDA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/engineering)
@@ -6988,19 +6993,19 @@
"cEy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/toxins/xenobiology)
"cEz" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology/flora)
"cEA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology/flora)
"cEB" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable,/turf/simulated/floor,/area/engine/reactor_core)
"cEB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor,/area/engine/engineering)
"cEC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/reactor_core)
"cED" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cEE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/turret_protected/tcomsat)
"cEF" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the supermatter core."; name = "Supermatter Monitor"; network = list("Supermatter"); pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/engine/reactor_core)
"cEG" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor,/area/engine/reactor_core)
"cEH" = (/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "EngineVent"; name = "Engine Ventilatory Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "11"},/turf/simulated/floor,/area/engine/reactor_core)
"cEI" = (/obj/machinery/driver_button{id = "enginecore"; pixel_x = 25},/obj/machinery/door/window/westleft,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; pixel_x = 10; tag = ""},/turf/simulated/floor{icon_state = "freezerfloor"},/area/engine/reactor_core)
"cEI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/item/device/pipe_painter,/turf/simulated/floor,/area/engine/engineering)
"cEJ" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 4; network = list("SS13")},/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/storage/secure)
"cEK" = (/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/storage/secure)
"cEL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/secure)
"cEM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor/plating,/area/storage/secure)
"cEN" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/dispenser,/turf/simulated/floor,/area/engine/engineering)
"cEL" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/reactor_core)
"cEM" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/reactor_core)
"cEN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/engineering)
"cEO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering)
"cEP" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor,/area/engine/engineering)
"cEQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area)
@@ -7039,17 +7044,17 @@
"cFx" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area)
"cFy" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/solar/starboard)
"cFz" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area)
"cFA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/reactor_core)
"cFB" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engine/reactor_core)
"cFA" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/reactor_core)
"cFB" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable,/obj/machinery/camera{c_tag = "Engineering Supermatter SMES"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/reactor_core)
"cFC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core)
"cFD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet/radiation,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core)
"cFE" = (/obj/machinery/camera{c_tag = "Engineering Supermatter Decontamination"; dir = 1; network = list("Supermatter","SS13")},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core)
"cFD" = (/obj/machinery/power/smes{charge = 0; chargelevel = 0},/obj/structure/cable,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/reactor_core)
"cFE" = (/turf/simulated/wall/r_wall,/area/engine/reactor_core)
"cFF" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = -6},/turf/simulated/floor,/area/engine/reactor_core)
"cFG" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Supermatter Monitoring"; dir = 1; network = list("SS13")},/obj/machinery/computer/general_air_control{frequency = 1443; name = "Supermatter Gas Mix Monitoring"; sensors = list("supermatter_gas" = "Supermatter Gas Mix")},/turf/simulated/floor,/area/engine/reactor_core)
"cFH" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core)
"cFI" = (/obj/machinery/shield_gen,/turf/simulated/floor/plating,/area/storage/secure)
"cFJ" = (/turf/simulated/floor/plating,/area/storage/secure)
"cFK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/turf/simulated/floor/plating,/area/storage/secure)
"cFK" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/storage/secure)
"cFL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/engineering)
"cFM" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering)
"cFN" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering)
@@ -7079,10 +7084,10 @@
"cGl" = (/obj/machinery/light/small{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"cGm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology/flora)
"cGn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter Engine Access"; req_access_txt = "11"},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cGo" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/storage/secure)
"cGp" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/storage/secure)
"cGq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGo" = (/obj/machinery/driver_button{id = "enginecore"; pixel_x = 25},/obj/machinery/door/window/westleft,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; pixel_x = 10; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/engine/reactor_core)
"cGp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
"cGq" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering)
"cGr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Secure Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cGs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGt" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cGu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
@@ -7124,7 +7129,7 @@
"cHe" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cHf" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/engine/reactor_core)
"cHg" = (/obj/machinery/field_generator,/turf/simulated/floor/plating,/area/storage/secure)
"cHh" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/storage/secure)
"cHh" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cHi" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering)
"cHj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering)
"cHk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering)
@@ -7171,7 +7176,7 @@
"cHZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIa" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIb" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"cIc" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure)
"cId" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/wall,/area/engine/engineering)
"cIe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_west_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cIf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/engineering)
@@ -7207,7 +7212,7 @@
"cIJ" = (/obj/machinery/power/rad_collector,/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIK" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cIL" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/storage/secure)
"cIM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/storage/secure)
"cIM" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/reactor_core)
"cIN" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "engineering_west_pump"},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plating,/area/engine/engineering)
"cIO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating,/area/engine/engineering)
"cIP" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/engine/engineering)
@@ -7241,7 +7246,7 @@
"cJr" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventilatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJs" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; dir = 6; icon_state = "intact-b"; initialize_directions = 6; level = 2; name = "pipe"},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJt" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; dir = 9; icon_state = "intact-b-f"; level = 2; name = "pipe"},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJu" = (/obj/machinery/power/emitter,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/storage/secure)
"cJu" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/reactor_core)
"cJv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "engineering_west_pump"; tag_exterior_door = "engineering_west_outer"; frequency = 1379; id_tag = "engineering_west_airlock"; tag_interior_door = "engineering_west_inner"; pixel_x = 25; req_access_txt = "10;13"; tag_chamber_sensor = "engineering_west_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "engineering_west_sensor"; pixel_x = 25; pixel_y = 12},/turf/simulated/floor/plating,/area/engine/engineering)
"cJw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area)
"cJx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area)
@@ -7271,7 +7276,7 @@
"cJV" = (/obj/machinery/power/emitter{anchored = 1; state = 2},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJW" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJX" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 9; icon_state = "intact-r"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cJY" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/storage/secure)
"cJY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet/radiation,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/reactor_core)
"cJZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_west_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cKa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cKb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering)
@@ -7299,8 +7304,8 @@
"cKx" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 8; filter_type = 1; on = 1; req_access = list(10); target_pressure = 4500},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cKy" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 8; on = 1; req_access = list(10); target_pressure = 4500},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cKz" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 10},/obj/machinery/camera{c_tag = "Engineering Supermatter Engine East"; dir = 8; network = list("Supermatter","SS13")},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cKA" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating,/area/storage/secure)
"cKB" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/secure)
"cKA" = (/obj/machinery/camera{c_tag = "Engineering Supermatter Decontamination"; dir = 1; network = list("Supermatter","SS13")},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/reactor_core)
"cKB" = (/obj/machinery/shield_gen,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cKC" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area)
"cKD" = (/obj/item/weapon/extinguisher,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cKE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity North-West"; dir = 2; network = list("Singularity","SS13"); pixel_x = 20; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/engine/engineering)
@@ -7331,7 +7336,7 @@
"cLd" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/reactor_core)
"cLe" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cLf" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/plating,/area/storage/secure)
"cLg" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating,/area/storage/secure)
"cLg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft)
"cLh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area)
"cLi" = (/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cLj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area)
@@ -7358,7 +7363,7 @@
"cLE" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 4; name = "Engine Out"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/reactor_core)
"cLF" = (/obj/machinery/atmospherics/pipe/manifold{_color = "yellow"; icon_state = "manifold-y"; level = 2},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cLG" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 9},/turf/simulated/floor/plating,/area/engine/reactor_core)
"cLH" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/radiation,/turf/simulated/floor/plating,/area/storage/secure)
"cLH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"cLI" = (/obj/structure/closet/radiation,/turf/simulated/floor/plating,/area/storage/secure)
"cLJ" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area)
"cLK" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/engine/engineering)
@@ -7397,7 +7402,7 @@
"cMr" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engine/reactor_core)
"cMs" = (/turf/simulated/floor/engine,/area/engine/reactor_core)
"cMt" = (/obj/machinery/camera{c_tag = "Engineering Supermatter Core"; dir = 1; network = list("Supermatter","SS13")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engine/reactor_core)
"cMu" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/storage/secure)
"cMu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"cMv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area)
"cMw" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area)
"cMx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area)
@@ -11247,7 +11252,7 @@
"eit" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
"eiu" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiv" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiw" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 4; name = "External"},/turf/simulated/floor,/area/atmos)
"eiw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"eix" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiz" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
@@ -11260,6 +11265,7 @@
"eiG" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production)
"eiH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/mine/production)
"eiI" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/mine/production)
"eiJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"eiK" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"eiL" = (/obj/machinery/conveyor{dir = 9; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"eiM" = (/obj/machinery/mineral/unloading_machine{icon_state = "unloader-corner"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
@@ -11272,6 +11278,7 @@
"eiT" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiW" = (/obj/machinery/power/apc{cell_type = 15000; dir = 1; name = "Engineering APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/engine/engineering)
"eiX" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters)
"eiZ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/living_quarters)
@@ -11299,6 +11306,7 @@
"ejv" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejw" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejx" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejy" = (/obj/machinery/floodlight,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"ejz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"ejB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
@@ -11321,6 +11329,7 @@
"ejS" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production)
"ejT" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/production)
"ejU" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/weapon/rcs,/turf/simulated/floor,/area/mine/production)
"ejV" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"ejW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"ejX" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station External APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
"ejY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
@@ -11343,6 +11352,7 @@
"ekp" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"ekq" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_outpost_airlock"; name = "exterior access button"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area)
"ekr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"eks" = (/obj/machinery/light/small{dir = 8},/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/storage/secure)
"ekt" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production)
"eku" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production)
"ekv" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
@@ -11359,6 +11369,7 @@
"ekG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/production)
"ekH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"ekI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/mine/production)
"ekJ" = (/obj/machinery/floodlight,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure)
"ekK" = (/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/mine/production)
"ekL" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"ekM" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
@@ -11382,6 +11393,7 @@
"ele" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/jetpack/oxygen,/turf/simulated/floor/plating,/area/djstation)
"elf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elg" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elh" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Filter to External"},/turf/simulated/floor,/area/atmos)
"eli" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/media/jukebox/dj,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elj" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
@@ -11397,6 +11409,7 @@
"elu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elv" = (/obj/machinery/light/small,/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elw" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation)
"elx" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"ely" = (/turf/simulated/wall/r_wall,/area/derelict/solar_control)
"elz" = (/obj/machinery/door/airlock/engineering{name = "Turbine Maintenance"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/derelict/solar_control)
"elA" = (/obj/item/weapon/storage/box/donkpockets,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/djstation)
@@ -11406,7 +11419,7 @@
"elE" = (/turf/simulated/wall,/area/derelict/solar_control)
"elF" = (/turf/simulated/floor,/area/derelict/solar_control)
"elG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/derelict/solar_control)
"elH" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elH" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/dispenser,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor,/area/engine/engineering)
"elI" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"elK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/derelict/solar_control)
@@ -12337,6 +12350,7 @@
"eDz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering)
"eDD" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eDE" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eDF" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
@@ -12361,6 +12375,7 @@
"eDY" = (/obj/structure/table,/obj/item/stack/rods,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eDZ" = (/obj/structure/table,/obj/item/weapon/hatchet,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eEa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area)
"eEb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEc" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom)
"eEd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"eEe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
@@ -12371,6 +12386,12 @@
"eEj" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"eEk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"eEl" = (/obj/machinery/mineral/input,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"eEm" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"eEn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/engine/engineering)
"eEo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"eEq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/engine/engineering)
"eEr" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12480,11 +12501,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEhaEhaEhaEhaEhaEhaEhaEhaEhaHMaHNaHOaHPaDeaDeaDeaDfaEYaaiaHQaHRaHSaHTaHUaaqaHVaHWaHXaHYaHYaHZaDlaDlaIaaaiaFgaGaaIbaFgaFgaaiaIcayVaIdaGVayVayVaDsaaiaIeaIeaIfaIgaIhaIiaIjaIiaIkaIlaImaInaInaaiaHjavVaIoaaqaHlaouaEwaBhaBiaaqaCIaIpaIqaIraIsaItaItaIuaIvaItaIvaIwaIxaIyaIzaIAaIBaICaIDaIEaIFaIGaIHaaqaIIaIJaIIaaqaIKaAwaAwaAwaAwaAwaILaaiaabaoJaCoaIMaINazTaaiaIOaIPaIQaBPaBPaBPaBPaBPaBPaBPaBPaBPaATaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaaiaaiaaiaaiaDbaIRaISaaiaDbaIRaISaaiaaiaaiaaiaITaDeaDeaDeaDeaDfaIUaaiaIVaIWaIXaIYaIZaaqaJaaGPaEoaJbaGPaGPaGPaJcaJdaaiaJeaJfaJgaJhaFgaaiayVayVaJiaGVayVayVaDsaaiaaiaaiaaiaJjaJkaGYaJlaGYaJkaJmaaiaaiaaiaaiaHjavVaJnaaqaHlaouaDLaBhaBiaaqaJoaJpaaqaaqaaqaaqaaqaaqaaqaJqaaqaaqaaqaaqaaqaaqaJraaqaJsaJtaJtaJtaJuaaqaJvaJwaJxaaqaIKaAwaAwaAwaAwaAwaILaaiaaaaaiaJyaJzaJAaaiaaiaJBaJCaJDaBPaJEaBPaBPaBPaBPaJFaBPaBPaERaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaJGaJHaJIaAGaAGaJJaJKaAGaAGaJLaJMaJNaaiaCZaJOaEjaDeaDeaDeaDfaEYaaiaaqaaqaouaJPaaqaaqaJaaGPaEoaaiaaiaaiaaiaaiaaiaaiaaiabnaJQaaiaaiaaiaaiaaiaaiaaiaaiaaiaDsaaiaJRaJRaIfaJSaJTaIiaIjaIiaJTaJUaJVaJWaJXaaiaHjavVaHkaaqaJYaAlaJZaBhaBiaaqaKaaJpaaqaKbaKcaKdaKdaaqaKeaKcaKfaaqaKgaKhaKiaaqaKjaaqaJsaJtaJtaJtaJuaaqaKkaKlaKmaaqaKnaKoaKoaKoaKoaKoaKpaaaaaaaaiaKqaKraKsaaiaaiaKtaKuaKvaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbaKwaKxaDeaDeaDeaDeaKyaDeaDeaDeaKyaDeaKzaKAaKBaKCaKDaKEaKEaKEaKFaEYaaiaKGaKHaKIaKJaaqaaqaKKaGPaEoaaiaKLaKMaKNaKMaKOaaiaKPaKQaKRaKSaKTaaiaKUaKUaKVaKUaKWaaiaDsaaiaGXaGYaKXaKYaJkaGYaKZaGYaJkaLaaLbaGYaHiaaiaHjavVaLcaaqaHlaCGaCHaBhaBiaaqaLdaLeaaqaLfaKcaKcaKcaLgaLhaLiaLjaaqaLkaLlaLmaLnaLoaaqaLpaLqaLraLqaLsaaqaLtaLuaLvaaiaaaaaaaaaaaaaabaaaaaaaaaaaaaaiaLwaLxaLyaaiaaiaLzaLAaLBaaqaLCaLDaLEaLEaLEaLEaLEaLEaMJaLHaLHaLIaLHaLHaLHaLHaLJaLKaLLaaiaLMaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaLNaCbaCbaCbaCbaLOaCbaCbaCbaLOaLPaLQaLRaLSaLRaLTaLUaLUaLUaLVaLWaaiaLXaLYaLZaMaaMbaaqaJaaGPaEoaaiaMcaKOaKOaKOaKOaaiaMdaMeaMfaMgaMhacCaMiaMiaMjaMiaMkaaiaDsaaiaJRaJRaIfaMlaJTaIiaMmaIiaJTaMnaImaMoaMpaaiaMqaysaMraaqaHlaCGabXabXabXabXaMsaMtaMuaMvaMwabXabXabXaaEabXabtaMxaMyaMzaMAabXaMBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoJaoLaaiaaiaaiaaiaaiaaiaMCaamaaiaaiaMDaMEaMFaMGaMHaMIabXabXabXabXabXaOxaMKabXabXaMLabXaMMabXabXaaEaMNaaqaaqaMOaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMRaMRaMSaMRaMRaMTaMUaMRaMRaMSaMVaEXaMWaMXaMYaMZaNaaNbaNbaNbaNcaNdaaiaNeaNfaNgaNhaNiaNjaNkaNlaIaaaiaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaNxaNyaNzaNAaNBaNCacfaNDaaiaaiaaiaaiaNEaJkaGYaJlaGYaJkaNFaaiaaiaaiaaiaNGaNHaNIaaqaJYaNJasTasTasTaNKaNLaNMabIaNNaNOabIaNPabIaNQabIaNRaAsaNSaNTaNUaaqaNVaNWaNXaNYaNYaNWaNZaOaaOaaOaaOaaOaaObaOcaOaaOdaOeaOfaOgaOhaOiaOiaOjaOkaOlaOmaOnaOoaLAaOpaOqaOraOsaaqaOtaOuaOvaaqaaqaQvaaqaOyaOzbjaaOBaOCaODaOEaOFaOGaOHaOIaaiaOJaOKaOLaOMaONaOOaOPaOQaORaOSaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaOUaOVaOVaOVaOWaOXaOYaOZaPaaOWaOVaPbaPcaPdaaiaERaJGaPeaDeaDeaDeaPfaPgaaiaPhaPiaPjaPkaPlaaqaPmaPnaGPaaiaPoaPpaPqaPraPsacCaPtaPuaPvaPwaPxaaiaPyaPzaPAaKUaPBaaiayVaaiaGXaGYaPCaKYaJkaGYaJlaGYaJkaLaaPDaaiaaiaaiaPEaPFaPGaPHaPIabnaaiaaiaaiaaqaPJaPKaaqaPLaKcaaqaPMaaqaPNaaqaPOaPPaPQaPRaPSaPTaPUaPVaPWaPXaPYaAnaPZaPYaPYaQaaPYaPVaQbaPVaQcaPVaPVaQdaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQnaQnaQoaQpaQqaQraQsaQtaQuaaqaRRaQwaaqaQxaQyaQzaQAaOCaQBaOEaOFaOGaQCaQDaaiaQEaQFaQFaQGaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQHaPbaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaQLaMRaMVaaiaaiaQMaDeaDeaDeaDeaQNaQOaaiaQPaQQaQRaQSaQTabXaQUaQVaaqaaiaQWaQXaQYaKOaKOaaiaQZaPuaPvaPwaRaaaiaRbaPzaRcaRdaKUaaiayVaaiaReaRfaIfaRgaRhaIiaRiaIiaRjaRkaRlaaiaRmaRnaRoaRpaRqaRraRsaRtaaaaaaaaiaRuaRvaRwaaqaRxaKcaKcaKcaRyaKcaKcaKcaaJaRzaRAaaqaOwaouaaqaRBaaqaaqaRCaRDaREaRFaRGaaqaRHaRIaaqaOwaaqaaqaaqaaqaRJaaqaaqaouaaqaaqaaqaaqaRKaRLaRLaaJaQqaRMaRNaROaRPaRQaaqaLFaLGaaqaRTaRUaRVaQAaRWaQBaOEaOFaOGaRXaRYaaiaRZaSaaSaaSbaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbaKwaKxaDeaDeaDeaDeaKyaDeaDeaDeaKyaDeaKzaKAaKBaKCaKDaKEaKEaKEaKFaEYaaiaKGaKHaKIaKJaaqaaqaKKaGPaEoaaiaKLaKMaKNaKMaKOaaiaKPaKQaKRaKSaKTaaiaKUaKUaKVaKUaKWaaiaDsaaiaGXaGYaKXaKYaJkaGYaKZaGYaJkaLaaLbaGYaHiaaiaHjavVaLcaaqaHlaCGaCHaBhaBiaaqaLdaLeaaqaLfaKcaKcaKcaLgaLhaLiaLjaaqaLkaLlaLmaLnaLoaaqaLpaLqaLraLqaLsaaqaLtaLuaLvaaiaaaaaaaaaaaaaabaaaaaaaaaaaaaaiaLwaLxaLyaaiaaiaLzaLAaLBaaqaLCaLDaLEaLEaLEaLEaMJaLEaMKaLHaLHaLIaLHaLHaLHaLHaLJaLKaLLaaiaLMaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaLNaCbaCbaCbaCbaLOaCbaCbaCbaLOaLPaLQaLRaLSaLRaLTaLUaLUaLUaLVaLWaaiaLXaLYaLZaMaaMbaaqaJaaGPaEoaaiaMcaKOaKOaKOaKOaaiaMdaMeaMfaMgaMhacCaMiaMiaMjaMiaMkaaiaDsaaiaJRaJRaIfaMlaJTaIiaMmaIiaJTaMnaImaMoaMpaaiaMqaysaMraaqaHlaCGabXabXabXabXaMsaMtaMuaMvaMwabXabXabXaaEabXabtaMxaMyaMzaMAabXaMBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoJaoLaaiaaiaaiaaiaaiaaiaMCaamaaiaaiaMDaMEaMFaMGaMHaMIabXabXabXabXaaEaOxaQvabXabXaMLabXaMMabXabXaaEaMNaaqaaqaMOaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMRaMRaMSaMRaMRaMTaMUaMRaMRaMSaMVaEXaMWaMXaMYaMZaNaaNbaNbaNbaNcaNdaaiaNeaNfaNgaNhaNiaNjaNkaNlaIaaaiaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaNxaNyaNzaNAaNBaNCacfaNDaaiaaiaaiaaiaNEaJkaGYaJlaGYaJkaNFaaiaaiaaiaaiaNGaNHaNIaaqaJYaNJasTasTasTaNKaNLaNMabIaNNaNOabIaNPabIaNQabIaNRaAsaNSaNTaNUaaqaNVaNWaNXaNYaNYaNWaNZaOaaOaaOaaOaaOaaObaOcaOaaOdaOeaOfaOgaOhaOiaOiaOjaOkaOlaOmaOnaOoaLAaOpaOqaOraOsaaqaOtaOuaOvaaJaaqaQwaaqaOyaOzbjaaOBaOCaODaOEaOFaOGaOHaOIaaiaOJaOKaOLaOMaONaOOaOPaOQaORaOSaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaOUaOVaOVaOVaOWaOXaOYaOZaPaaOWaOVaPbaPcaPdaaiaERaJGaPeaDeaDeaDeaPfaPgaaiaPhaPiaPjaPkaPlaaqaPmaPnaGPaaiaPoaPpaPqaPraPsacCaPtaPuaPvaPwaPxaaiaPyaPzaPAaKUaPBaaiayVaaiaGXaGYaPCaKYaJkaGYaJlaGYaJkaLaaPDaaiaaiaaiaPEaPFaPGaPHaPIabnaaiaaiaaiaaqaPJaPKaaqaPLaKcaaqaPMaaqaPNaaqaPOaPPaPQaPRaPSaPTaPUaPVaPWaPXaPYaAnaPZaPYaPYaQaaPYaPVaQbaPVaQcaPVaPVaQdaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQnaQnaQoaQpaQqaQraQsaQtaQuaaJaRReiwaaqaQxaQyaQzaQAaOCaQBaOEaOFaOGaQCaQDaaiaQEaQFaQFaQGaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQHaPbaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaQLaMRaMVaaiaaiaQMaDeaDeaDeaDeaQNaQOaaiaQPaQQaQRaQSaQTabXaQUaQVaaqaaiaQWaQXaQYaKOaKOaaiaQZaPuaPvaPwaRaaaiaRbaPzaRcaRdaKUaaiayVaaiaReaRfaIfaRgaRhaIiaRiaIiaRjaRkaRlaaiaRmaRnaRoaRpaRqaRraRsaRtaaaaaaaaiaRuaRvaRwaaqaRxaKcaKcaKcaRyaKcaKcaKcaaJaRzaRAaaqaOwaouaaqaRBaaqaaqaRCaRDaREaRFaRGaaqaRHaRIaaqaOwaaqaaqaaqaaqaRJaaqaaqaouaaqaaqaaqaaqaRKaRLaRLaaJaQqaRMaRNaROaRPaRQbMZaLFaLGaaqaRTaRUaRVaQAaRWaQBaOEaOFaOGaRXaRYaaiaRZaSaaSaaSbaOQaOQaOQaOQaORaOSaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaQIaQJaQKaQIaQKaOVaQKaQIaQKaSeaPbaOVaSfaMVaaiaSgaDeaDeaDeaDeaShaSiaAMaSjaSkaSlaSkaSmaSnaSoaSpaSqaaiaaiafjaaiaaiaaiaaiaGGaSraSsaGGaStaaiaaiafjaaiaaiaaiaaiaSuaaiaaiaaiaaiaSvaSwaSxaSyaSxaSzaSAaaiaaiaSBaRpaRpaRpaRpaSCaSDaSEaSFaSGaaiaSHaRvaSIaaqaaqaaqaaqaaqaaqaaqaaqaaqaaJaSJaSKaSLaSMajCaSOaSPaSQaaqaSRaSSaSTaSUaSVaaqaSWaSXaSYaSZaSYaTaaTbaTcaTdaTeaTfaTgaThaTiaTjaaqaTkaTlaTmaTnaToaRMaTpaROaRPaTqaaqaTraTsaTtaTuaTvaQAaQAaaqaQDaOEaOFaOGaTwaTxaaiaTyaTzaTAaTBaTCaTDaOQaOQaTEaOSaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaTFaQJaQKaQIaQKaTGaQKaQIaQKaQJaMSaOVaTHaTIaaiaTJaDeaDeaDeaDeaDfaTKaDeaTLaTMaTNaTOaTPaSqaTQaTRaSqaTSaTTaTUaSqaTVaSqaTWaSqaTQaTXaSqaTYaTZaSqaUaaSqaUbaTTaUcaUdaUeaUfaUgaUhaUiaUjaUjaUjaUjaUjaUjaUkaUlaUmaUnaUoaUpaUqaUraUsaUtaRpaRpaUuaUvaUwaUvaUxaUyaUzaUAaUBaUCaUDaaqaUEaUFaUGaUHaUIaUIaUJaUKaULaUMaaqaUNaUOaUPaUPaUQaaqaURaUSaUTaUUaUVaUVaUWaUXaUYaUXaUZaVaaVbaVcaVdaaqaRKaRLaVeaVfaVgaVhaViaVjaVhaVkaaqaVlaVmaaqaVnaVoaQAaVpaaqaVqaVraVsaOGaQDaQDaaiaVtaVuabnafjaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScaSdaQIaQJaQKaQIaQKaOVaQKaQIaQKaQJaPbaOVaVvaVwaaiaVxaDeaDeaDeaDeaDfaVyaLUaVzaVAaVBaVAaVCaVDaTQaVEaVFaVGaVHaVIaVFaVFaVFaSoaVFaSoaVJaVFaVKaVFaVFaVLaSqaUbaTTaUcaUdaUdaUdaUdaVMaUdaUdaUdaUdaUdaUdaVNaVOaVPaVQaVRaVSaVTaVUaVVaVWaVXaVXaVXaVYaVZaVZaVZaWaaUDaUDaUDaWbaWcaUDaaqaWdaWeaUIaUIaWfaUIaWgaWhaULaWiaaqaWjaWkaWlaWmaWnaaqaWoaWpaWqaWraWsaWtaaqaWuaWvaWuaaqaaqaaqaouaaqaaqaRKaRLaRLaaJaWwaQqaQqaWxaQqaWyaaqaaqaaqaaqaaqaaqaaqaWzaaqaOGaOGaOFaOGaWAaWBaaqaWCaWDaWEaWFaWGaWHaWIaWJazWaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12512,7 +12533,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaGGaGHbvMbobbnobnobpKbpLbnoaaibyUbjJbjKbjKbyVabIaSobjMbdXaaqbyWbqabyXbyYbyZbzabzbbzcbzdbzdbzebzfbzgbzhbyYbzibzjaaqbwdboRbzkbzlbzmbxVbzobzpbzqbzrbzsaaibuDaaiaaibztbzubzvbtlbzwbzxacfbzyaaiabnaaiaaiaaiaaiaaibzzaaibzAboRbybaaibzBbzCbzCbzDbzEaaqbzFbzGbzHbzIbzJbzKbzLbzHbzMbzNbzObzPbzQbzRbzSbzTbzUbzVbzWbzXbzYbzZbAabAbbAcbAdbAebAfbAfbAgbAhbAiaaqbAjbqVbqVbAkbAlbwYbAmaaqbAnbAobApaaqbxJbxLaSGbArbjxaaiaaibAsaaiaaibAtbAubAubAubAvaaibxibxlbxkbxlbxlbAwbxiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbAybAzbpIbpJbocbocbodboebocaaibAAbiCbiDbABbACbADbAEbAFaSqaaqbAGbqabyXbyYbAHaaqbAIbAJbqbbqbbAKbALbAMbzhbyYbANbAObAPbwdboRbAQbadbzmbwxbASbATbAUbAVbAWbAXabubzxacfarzbAYbxTbAYbzxbAZaaiaaiaaibBabBbbBcbBdbBebBfbBgacfbBhboRbybbuTbBibBjbBkbBlbBmaaqbBnbBobBpbBqbBrbBsbBtbBubBvbBwbBxbBybBzbBAbBBbarbBDbBEbBFbBGbBHaaibBIbBJbBKbBLaaibBMbBNbBObBPbBPaaqbBQbBRbBSaaqbBTbwYbBUaCZbBVbBWbBXbBYbBZbCabCbbCcbCdbCebwvbCgbChbwwbCjbCjbCkbClbCmbCnbCobvJbvKbCpbvKbvJbCqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaaabCrbobbnobnobnobCsbCtbCuaaibCvbCwbCxbCybCzaoibCAbCBaSqaaqbCCbCDbCEbCFbCGbCHbCIbCJbCKbCKbCLbCHbCMbCNbyYbCObCPaaqbCQboRbAQbadbzmaaibCRbCSbCTbCUbCVabnbCWbCXbCYbgPacfbCZbDabgPbDbbDcbDdaaibDebDfbDgbDhbDibDibDjbDkbDlboRbDmaaiaaqbDnbjxbDobDpaaqbBnbDqaaqbDrbDsbBsbDtaaqbBnbDubDvaaqaaqaaqaouaaqaaqaaqbDwamwaaqaaiaaibDxaaqaaqaaiaaiaaqaaJaaqaaqaaqaaqaaqaaqaaqbDybDzaCnaCobDAbDBbDCbDDbDDbDEbDFbDGbDHbDIbDJbDKbDLbuLbDNbDNbDObBZbDPaaibDQbDRbDSbwgaaibDUaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaoJaoLazMaoJaoLaaiaoJaoLaaiaaibDVafjaaibxAaaqaaqaaqaaqazlbDWaoiaoibDXaoibDYbDZbEabEbbEcbEdbEebqbbEfbqbbEgbzfbEhbqbbyYbqbbEibjxbwdboRbEjbEkbElaaibEmbEnbEobEpbEqabnbErbEsbEtbEubnFbEwbExbEybEzbEAbEBaaibECbEDbEEbEFbEGbEHbEIaaibEJbEKbybbELbEMbENbEObEPbEQbERbESbBobjxbETbEUbEVbEWbjxbBnbDubDvbEXbEYbEZbFabFbbFcbFdbFebFfaaqbFgbFhbFibFjbFkbFlbFmbCebFnbDDbDDbFobFpbDDbFqbFrbFsbFtbFubDDbFvbFwbFxbFybFzbFAaaiabnaaiaaiaaibFBaaiaaibAtbAvaaibDMbFDbFEbFFbFGbFHbFIbFJaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaoJaoLazMaoJaoLaaiaoJaoLaaiaaibDVafjaaibxAaaqaaqaaqaaqazlbDWaoiaoibDXaoibDYbDZbEabEbbEcbEdbEebqbbEfbqbbEgbzfbEhbqbbyYbqbbEibjxbwdboRbEjbEkbElaaibEmbEnbEobEpbEqabnbErbEsbEtbEubnFbEwbExbEybEzbEAbEBaaibECbEDbEEbEFbEGbEHbEIaaibEJbEKbybbELbEMbENbEObEPbEQbERbESbBobjxbETbEUbEVbEWbjxbBnbDubDvbEXbEYbEZbFabFbbFcbFdbFebFfaaqbFgbFhbFibFjbFkbFlbFmbCebFobDDbDDbFnbFpbDDbFqbFrbFsbFtbFubDDbFvbFwbFxbFybFzbFAaaiabnaaiaaiaaibFBaaiaaibAtbAvaaibDMbFDbFEbFFbFGbFHbFIbFJaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaabzlbFLbFMbFMbFMbFNbFObFPbFPbFPbFPbFQbFPbFPbFRbFPbFPbFPbFPbFPbFSbFTbFUbFPamwbFVbqbbqbbqbbEgbFWbFXbFYbyYbFZbGabGbbwdboRbGcbCibzmaaibGebGfbGgbCSbGhabnbGibGjbGkaaibrRbGmbnEacCbGobGpbGqaaibGrbGsbGtbGubEGbEHbEIaaibGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGaaqaaqbGHbGIaaqaaqbBnbDubDvbjxbGJbGKbGKbGKbGLbGKbGMbGNbGObGPbGQbGRbGRbGSbGTbGUbGVbGWbBZbBZbGXbBZbGYbBZbGZbBZbHabHbbHbbHcbHdbHebHfbHgbHhbHibHjbHkbHlaaibHmbHnaaaaaaaaaaaibHobHpbHqbHrbHsbHtbCfaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaabadbHvbHwbHwbHwbHxbHybFPbFPbFPbFPbFPbFPbFPbFRbFPbFPbFPbFPbFPbFSbFTbFUbFPamwbHzbHAbHBbHCbHDbHEbHFbHGbHHbHIbHJbjxbwdboRbHKaaqaaqaaiaaiaaiaaiaaibHLabnaaibHMabnacCabnbHNaaiaaiaaiaaiaaiaaiabnaaiaaiaaiaaiaaiaaiaaibHOboRbHPbnSaaqbHQbHRaaqaaqbBnbHSbHTbEQbHUbHVbHWbHXbHYbESbHZbIabIbbIcbIdbIdbIdbIebIdbIfbIgbIhbIibIjbIkbFibIlaaiaaiaaiaaiaaiaaibImaaiaaiaaiaaJbInaaqaaqbIobIpbIqbIrbHfbIsbItbIubIvbIwbIxaaibHmbIyaaaaaaaaaaaibIzbIAaaibCnaaiaaibCnaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbIBaoKaCobICbIDbIDbIDbIEbIFbIDbHwbHwbHwbHwbHwbIGbIHbHwbHwbIGbHwbHwbHybIIbIJbFPazlaoiaoiaoiaoiaoiaoibIKbEdaaqaaqaaqaaqbwdboRbILbIMbINbIObIPbIQbIRbISbITbIUbIVbIWbIXbIYbIZbJabJbbJcbJdbJebJfbJebJgbJhbJibnQbJjboRbJkbJlbJmboRbJnaaqbJobJpbJqbJrbJsbBnbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDaaqbJEbJFbJGbJHbJIbGKbJJbJKaaqbJLbFibFibFibJMaaibJNbJObJPbJQbJRbJSbJTbJUaaicbObJWbJXaaqaaqbJYbIqbJZbKabKbbKcbKdbKebKfbKgaaibKhaaiaaaaaaaaaaaiaaiaaiaaiaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12545,35 +12566,35 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafoaaacqKcrxcqMaaacqKcrxcqMaaacqKcrxcqMaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaATcoLbQzcqOcrycoZcrzcrAcrBcrBcpRcoZcqOcrCcoZcoZcoZcoZcrDcrEclycrFbSwcrGcrHcrIcrJcrKcpicqWcrLcrMcpicrNcmtaaiauYacCcrOcrPabuaaiabnabnafjaaiaaiaaiafjaaiaaiaaaaaaaaaaaaaaaaaaaabaaaafjcrQcoucrRchUcrSckbckbcrlcrTcrUcrVcrWcrUcrVcrWcrUcrXabnaabaabaaicowcoxcoycrYcrZcoBcsacsbcsccsdckdcseaaiaaacsfcsgcsgcsgcsgcsgcsgcsgcsgcsgcsgcsgcshaaaaabaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaagaaaaaaaaaafpaabcqKcrxcqMaaacqKcrxcqMaabcqKcrxcqMaabaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaERcoLaaqcsicoZcsjcskcslcsmcsncsmcsocsmcspcsqcoUcsrcqOcqOcqRcsscstcsucsvcswcsxcsycszcsAcsBcsCcsDcsEcsFcmtcsGcsHcsIcsJcsKcsLcsMcsNcsOcpTcsQcsRcsScsTcsUaabaaaaaaaaaaaaaaaaaaaabaabafjcpvcsVcsWcsXcsYckbckbckbcsZckbckbckbckbckbckbckbctactbaaaaaaaaicpCcpCcpCctccpFckdctdctectfctgckdcthaaiaaiaaiaaiaaaaaactictictictjaabaabaabaabctkaabaabaabaabaabafXctictiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaabaaacqKcrxcqMaabcqKcrxcqMaaacqKcrxcqMaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabaabaaaaaaaaictlaaqctmctnctnctoaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqctpaaqaaJaaqaaictqctrctscttctuctvctwctxcmtctycsHcsIctzcsKctActBctCctDctEctFctGctHctIctJaabctKctKctKctKctKaaaaaaaabafjctLcouctMctNctOckbckbckbctPckbckbckbckbckbctQckbctRctSaaaaaaaaicpCcpCcpCcrYctTcoBctUctVctWctXctYctYctZcuacubaaiaaaaaactiaaaaabaaaaabaaaaaaaaacucaaaaabaabaaaaaaaaaaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoafoafpaabaaacqKcrxcqMaabcqKcrxcqMaaacqKcrxcqMaabaaaaaaaaaaaaaaaaaaaaaaaaaabcudaaiaaiaaiaaiaaiaaicoLaaqcuecufcufcugabIcuhcuicuicuicuicuicuicujcuicuicukcukcuiculcumcuncuoaaicupcuqcurcuscutcuucuvcuwcuxcuycuzcuAcuBcuCcuDctBcuEcuFcuGcuHcuIcuJcuKcuLcuMcuNcuOcuPcuQctKaaaaaaaaacuRampcuSampchUcuTcuUcuVcuUabIcuWcuXcuYcuZcvacvbcvccvdabnaaaaaaaaiaaqaaqaaqaaqcveckdctdcvfcvgcvhckdckdcvickdcvjaaiaaaaaactiaaacvkcvkcvkcvkcvkaabcvlaabcvkcvkcvkcvkcvkaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaacjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoaaaaabaaaaabaabcvmaabaabaabcvmaabaaaaabcvmaabaaaaaaaaaaaaaaaaaaaaaaaacvnbAucvocvpcvqcvrcvscvtcvucvvaaqaaqcvwcvxaaqaaqbYIaaiaaiaaiaaiaaiaaiafjaaiaaiaaiaaiaaiabnafjaaiaaicexcvycvzcurcuvcuvcuvcuvcvAcmtcvBcvCcvDcvEcvFcuDcvGcuEcuFcvHcvIcvJcvKcvLcvMaabcvNcvOcuQcvPctKaaaaaaaaaafjcvQcvRcvSaaqciRcvTcvUcvVaaqcrocrncvWcvXcvYcvZcrocrnabnaaaaaaaaicowcoxcoycwacrZcoBcwbcwccwdcwecwecwfcwgcwhcwiaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocwpaabctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaacjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafpaabcwqcwrcwrcwscwtcwucwucwucwtcwucwucwucwtcwucwucwvcwrcwrcwrcwrcwrcwwcwxcwycwzcwAcwBcwCcwDcwEbYHcoLcwFaaqaaqaaqaaqbYHbYIaaicwGcwHcwIcwJcwKcwLcwMcsPcwOcwPcwQcwRcwScwTcwUcwVcvycwWcurcuvcuvcuvcuvcwXcmtcwYcwZcvDcxacxbcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcuNcxncuQcuQctKaaaaaaaabafjcxocvRcxpaaqcxqcvTckbcvTaaqcxrcxscvWcxtcxucvZcxrcxvabnaaaaaaaaicpCcpDcpCcxwcpFckdckecwccxxcxyckdcxzaaqaaqaaqaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaaacxAcxAcxAcxAcxAaabctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoaaaaabaaaaabaabcxBaabaaaaabcxBaabaaaaabcxBaabaaaaaaaaaaaaaaaaaaaaaaaacvnbAucxCcxDcxEcxFaaicxGbYHcxHcvucvucvucvucvucvucxIaaicxJcxKcxLcxMcxNcxOcxPcxQcxRcxScxTcxUcxVcxWcxXcxYcxZcvzcurcyacybcuvcuvcyccmtcydcyecvDcyfcygcyhaaqcyicyjcykcylcymcyncymcyoaabctKctKctKctKctKaabaabaabcdMcypcvRcxpaaqcyqcyrcyscytcyuabtabXabXcyvabXcywaDKaaqabnaaaaaaaaicpCcpCcpCcwacyxcyycyzcrucyActYctYcyBcyCcyDcyEciVaaaaaactiaaaaabaaaaabaabaabaaacvlaaaaabaaaaabaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoafoafpaabaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaaaaabaabcyGaaiaaiaaiaaiaaicyHcyIbYHcyJbYHbYHbYHcyKcyLcyMcyNcxLcxLcyOcxNcyPcyQcyRcyScyTcyUcyVcyWcyXcyYcyZczaczbczcczdczeczfczgczhcziczjcxcczkczlczmcznczoczpczqczrczscztczuczvczwcuMcuNczxczyczyctKaaaaaaaabafjczzcvRczAaaqczBczCczCczDaaqczEczFczGczHczIczJczKczLctbaaaaaaczMaoiaoiaoiaoiczNczOczPczOczQczOczOczRcwcckdckdckQaaaaaactiaaacvkcvkcvkcvkcvkaabcvlaabcvkcvkcvkcvkcvkaabctiaaaaaaaaaaaaaaaaaaaaaczSaaaaaaaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaacqKcyFcqMaabcqKcyFcqMaaacqKcyFcqMaaaaaaaaaaabaaaaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiczTckscnpcxLcxLcxMczVczWczXczYczZaaicAacAbcAccAdcAeaaicAfcuvcAgcAhcAicAjcuvcAkcAlcAmcAneiwcAocApcAqcArcAscAtcAucvDcAvcAwcAxcvMaabcvNcAycAzcAActKaaaaaaaaaafjchUcABcACaaqcADcAEcAFcAGcAHcvRcAIcAJczHcAKcALcAMcANcAOaabaaacAPcAQcARcAScATcAUcoBcAVcoBcAWcoBcftcoBcAXcAYckdaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocAZaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaaaaabaabaaicBacBbcBecBdcBecBecBecBfcBgcBhcBecBicBjcBkcBlcBmcBncBmcBocBpcBqcBrcBscxLaaicBtcBucBvcBwcBxcksaoicBycktcBzcBAcBBaaiaaicBCcBDcBEcBFcyfcygcBGcBHcBIcBJcBKcvDcAvcBLcBMcBNcxmcuNcBOczyczyctKaabaaaaaacdMcBPcBQcBRcBScBTcBUcBTcBTcBVcBWcBXcBYcBYcBZcCacCbcCccCdaabaabcCeckdckdckeckdckeckdckeckRcCfcwecCgcwecsbcCgcChaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaabcxAcxAcxAcxAcxAaaactiaaaczSaaaczSaaaaaaczSczSczSczSczSczSczSaaaaaaczSaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaabcqKcyFcqMaabaabaabaaaaaaaaaaaaaabaabaaaaaicCicCjcCkaaicClcCmcCncCncCncCocCncCncCncCpacCcCqcCrcCscCtcCucCvcCwcCxcCxcCxcCycCzcxLcxLcxLcCAcCBcCCaaqcCDcCEcCFcCGaaiaaiaaiaaicCHcyfcygcCIcCJcCKcCLcCMcvDcCNcCOcCPcCQcCRctKctKctKctKctKaaaaaaaaaafjcCScCTcCUcCVcCWcCXcCWcCWcCYcCZcDacDbcCccDccDdcAMczHcDeaabaabawjcDfcDgcDhcDicDjcDkcDlcDmcDjcDkcDnaaicDocDpabnaaiaaaaaactjaaaaabaaaaabaaaaabaaacDqaaaaabaaaaabaabaabaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafXaabcqKcDrcqMaaacqKcDrcqMaaacqKcDrcqMaabafpaabaabaaaaaaaaaaabaaaaaaaaicDscCjcDtaaiaaicDuaaiaaiaaicDvaaiaaiaaiaaiaaiaaiaaiaaicDwcDxcDycDzcBpcBpcBpcDAcDBcDCcDDcBpcBpcDBcDEcDFcDGcCEcDHcDIaaicDJcDKacCcDLcDMcDNcDOcDPcBKcvDcDQcDRcDScDTcDUczwcDVcuNcDWcDXcDYctKaaaaaaaaaafjcDZcEacEbcEccEdcEecEfczHcEgcEhcEicEjcEkcElcEmcEncEocEpaaaaaaawjcEqcErcEsaaqcEtcEucEvaaqcEwcExcEyaaicEzcEAabnaaaaaaaaactiaaacvkcvkcvkcvkcvkaabctkaabcvkcvkcvkcvkcvkaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaafpaabaabaaaaaaaaaaaaaaaaaaaaicEBcCjcDtaaicECcEDcoeaaicEFcEGcEHcEIaaicEJcEKcELcEMaaicENcxLcEOcxMcxLcxLcEPcEQcERcEScETcEUcEVcEWaaicEXcDGcCEcEYcEZaaiaaicFaaaicFbcFccvDcDOcDPcFdcvDcDQcDRcAvcAwcFecvMcFfcvNcFgcFhcFictKaaaaaaaaacFjcFkcFlcFlcFmacfacfarzcFncFocFpcFqcFrcFsaaiawjabnaaiccoaaaaaaawjcFtcpCcpCaaqcFucpCcpCaaqcFucpCcpCaaicFvcFwcFxaaaaabaabctiaabcwjcwkcwkcwkcwkcsgcFycsgcwocwocwocwocAZaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafoafoafpafoafoafXafpafpafpafpafoafpafpafocFzaabaaaaaaaaaaaaaaaaaaaaaaaicFAcFBcFCcBdcDtcFDcFEaaicFFcFGcFHaaiaaicFIcFIcFJcFJcFKcxMcxLcEOcxMcxLcFLcFMacCcFNcFOcFPcFQcFRauZcFScEOcxMcFTcFUaaqcFVaaiabnaaicFWcFXcvDcDOcDPcBKcvDcFYcDRcAvcFZcGacBNcGbcuNcGccDXcDXctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGdczHczHcGecGfcoAaaicGhcGicGjaaaaaaaaaawjcGkcpCcpCaaqcGlcpCcpCaaqcGlcpCcpCaaicFvcGmabnaaaaaaaaactiaabcxAcxAcxAcxAcxAaaactkaaacxAcxAcxAcxAcxAaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEQaaiaaiaaiaaiaaiaaicGnaaiaaiaaiaaiaaiaaicEQaaicGocGpcFJcFJcFKcGqcGrcGscGtcGucGvcGvcGwcGxcGycGzcGAcGBcGwcGCcGDcGEcGFcGFcGGcGHcGIcFaaaicGJcGKcvDcDOcvDcGLcvDcDQcDRcAvcAwcGMcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGNczHczHcAGcGOcGPaaiaaaaaaaaaaaaaaaaaaawjcpCcpCcpCaaqcGQcpCcpCaaqcGQcpCcpCaaicGRcGSabnaaaaaaaaactiaaaaaaaabaabaabaaaaaactkaabaaaaaaaabaabaaaaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicGTcGUcGVcGWcGXcGYcGZcHacHbcepcHdcHecHfaaiaaicHgcHgcFJcHhaaicHicHjcHkcHlcHmcHncHoaaicHpcHqcHrcxLcHsaaicHtcHucHvcHlcHlcHwcHxaaicFaaaicHycHzcvDcDOcvDcCIcCJcHAcHBcDScHCcHDczwcHEcuNcHFcHGcHGctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgOcHHcHIcHJcHKcHLcHMaaiaaaaaaaaaaaaaaaaaacHNaaiaaiaaiaaiaaiaaiaaiaaicHOcHOcHOccocHPcHQabnaaaaaaaaactictictictictiaaaaaaaaactkaaaaaaaaactictictictjctiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaicHRcHScHTcHUcHUcHVcHWcHXcHYcHYcHZcIacIbaaiaaicHgcHgcFJcIcaaicIdcIeaaicIfcIgcIgcIgaaicIhcIicIjcIkcGHaaicIgcIgcIgcIfaaicIlcImaaicFaaaicIncIocIpcIqcIrcIscItcIucztcIvcAwcIwcvMcFfcvNcIxcIycIzctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccocIAcpycpycpycpycIBccoaaaaaaaaaaaaaaaaaacICaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaicEzcIDabnaaaaaaaaaaaaaaaaaaaaaaaaaaactiaabcIEaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFaaaaaaaaacIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicIGcIHcIIcIJcIJcHdcGZcHdcIJcIJcIJcIacIKaaiaaicILcILcFJcIMaaicINcIOaaicIPcIQcIRcISaGCcITcIUcIVcIWcGHaGCcIQcIQcIQcIXcIYcIZcJaaaicFacJbcJccJdcJecItcAmcJfcJgcJhcJicJjcJkcJlcBNcGbcuNcJmcHGcHGctKaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicDocDpabnaaicJocJpcJpcJpcJpcJpcJqaaactiaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicJrcIHcHdcHdcHdcHdcGZcHdcHdcHdcJscJtcIKaaiaaicJucILcFJcFJaaicDJcJvaaiaaiazSaoKcJwcJxcJycHlcJzcHlcJAcJBcJwaoKazTaaiaaicJCcJDaaicFaaaicJEcJFcJecJGcJHcvDcvDcJIcArcJGcAwcJJcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJKcFvcJLcJMcJNcJOcJPcJQcJRcJPcJPckcaaactictictictictiaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFaaacIFaaaaaacIFcIFcIFcIFcIFcIFcIFaaaaaacIFaaacIFaaaaaaaaaaaaaaaaaaaaaaaicJScHRcJTcJTcJUcHdcJVcHdcHdcHdcIacJWcJXaaiaaicILcJYcFJcFJaaiaaicJZaaicKacKbcKbaINaEVaoKaoKaoKaoKaoKaEVaCocKbcKbcKcaaicKdaaiaaicFaaaicKecKfcKgcKhcKicKjcKkcKhcKlcKhcKmcItcKncFfaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccEzcKocKpcKqcKocKocKocKocKocKockcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaicKrcKscKtcKucKvcKwcKwcKwcKwcKtcKxcKycKzaaiaaicKAcKBcFJcFJaaicKCcKDcKEcKFaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacKGcKHcKIcKJaaicKKacCcKLcKMcKNcKOcKPcKQcKRcKScvDcKTcKUcKVcKWcFfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccKXcKocKYcKocKocKocKocKocKocKZckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaicLacLbcHdcLcazSaoKaoKaoKaoLcLdcLecHdcLaaaiaaicLfcLgcFJcFJaaicLhcLicLiaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacLicLicLhaaicDJaaicLjcLkcLlcLmcLncLocLpcLmcLpcLqcLpcLqcLrcFfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccKocKocLscLtcLucLvcLvcLvcLvcLwckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaczSaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaicLacLxcJTcLycLzcLAcLBcLCcLDcLEcLFcKtcLGaaiaaicLHcLIcFJcFJaaicLJcLKcLiaabaabaabcLLaaaaaaaaaaaacLLaaaaaacLLaabaabaabcLicLMcLNaaicDJaaiaabcLOaabcLPcLQcLRcLScLTcLScLUcLScLUcLVcLWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccLXcLYcLZcMacMbcMccMccMccMdcMcckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaicLacHdcHdcLcazWcLdcMecMfazWcLdcHdcHdcHdaaiaaicFJcFJcFJcFJaaicMgcLicMhaaaaaaaabaaaaaaaaaaaaaaacMiaaaaaaaaaaabaaaaaacLicLicMgaaicDJaaictKcMjcvNcMjctKcMjcvNcMjctKcMkcvNcMlctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMmcJpcJpcJpcJpcJpcJpcJpcJpcJpcJpcMnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaicMocHdcMpcMqaERcMrcMscMtaERcLdcMpcHdcHdaaiaaicFJcFJcMucFJaaicMvcMwcLiaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacLicMxcMyaaicDJaaictKcMzcMAcMBctKcMCcMDcMEctKcMFcMGcMHctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaicMIaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicLhcLiaaaaaaaabcLLaabaabaacaacaacaabcMJaaaaabaaaaaacLicLhaaiaaicDJaaictKcMKcMLcMKctKcMMcMNcMMctKcMOcMPcMQctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaicMSaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicMTcLiaaaaaaaabaaaaaaaabcMUcMVaacaabaaaaaaaabaaaaaacLicMWaaiaaicDJaaictKcMKcMXcMKctKcMMcMYcMMctKcMQcMZcMQctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicMIaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaicLhcLiaaaaaaaabaaacNaaabaacaacaacaabaabcLLaabaaaaaacLicLhaaiaaicDJaaictKctKctKctKctKctKctKctKctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicMxcMycLiaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacLicMvcMwaaicDJaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaicMgcLicNcaaaaaacNdaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacLicLicMgaaicNeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicNgcNhcLiaabaabaabcLLaaaaaacLLaaaaaaaaaaaacLLaabcNiaabcLicNjcNkaaicNlaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaaaaacIFaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaacIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicNmcNncNoaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacNpcNncNqaaicDJcNrcNscNscNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoafoafpaabaaacqKcrxcqMaabcqKcrxcqMaaacqKcrxcqMaabaaaaaaaaaaaaaaaaaaaaaaaaaabcudaaiaaiaaiaaiaaiaaicoLaaqcuecufcufcugabIcMucLHcLHcLHcLHcLgcuicujcuicuicukcukcuiculcumcuncuoaaicupcuqcurcuscutcuucuvcuwcuxcuycuzcuAcuBcuCcuDctBcuEcuFcuGcuHcuIcuJcuKcuLcuMcuNcuOcuPcuQctKaaaaaaaaacuRampcuSampchUcuTcuUcuVcuUabIcuWcuXcuYcuZcvacvbcvccvdabnaaaaaaaaiaaqaaqaaqaaqcveckdctdcvfcvgcvhckdckdcvickdcvjaaiaaaaaactiaaacvkcvkcvkcvkcvkaabcvlaabcvkcvkcvkcvkcvkaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaacjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoaaaaabaaaaabaabcvmaabaabaabcvmaabaaaaabcvmaabaaaaaaaaaaaaaaaaaaaaaaaacvnbAucvocvpcvqcvrcvscvtcvucvvaaqaaqcvwcvxaaqaaqeiJaaiaaiaaiaaiawjaaiafjaaiaaiaaiaaiaaiabnafjaaiaaicexcvycvzcurcuvcuvcuvcuvcvAcmtcvBcvCcvDcvEcvFcuDcvGcuEcuFcvHcvIcvJcvKcvLcvMaabcvNcvOcuQcvPctKaaaaaaaaaafjcvQcvRcvSaaqciRcvTcvUcvVaaqcrocrncvWcvXcvYcvZcrocrnabnaaaaaaaaicowcoxcoycwacrZcoBcwbcwccwdcwecwecwfcwgcwhcwiaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocwpaabctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaacjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafpaabcwqcwrcwrcwscwtcwucwucwucwtcwucwucwucwtcwucwucwvcwrcwrcwrcwrcwrcwwcwxcwycwzcwAcwBcwCcwDcwEbYHcoLcwFaaqaaqaaqaaqbYHeiJaaicwGcwHcwIeiWcwKcwLcwMcsPcwOcwPcwQcwRcwScwTcwUcwVcvycwWcurcuvcuvcuvcuvcwXcmtcwYcwZcvDcxacxbcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcuNcxncuQcuQctKaaaaaaaabafjcxocvRcxpaaqcxqcvTckbcvTaaqcxrcxscvWcxtcxucvZcxrcxvabnaaaaaaaaicpCcpDcpCcxwcpFckdckecwccxxcxyckdcxzaaqaaqaaqaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaaacxAcxAcxAcxAcxAaabctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoaaaaabaaaaabaabcxBaabaaaaabcxBaabaaaaabcxBaabaaaaaaaaaaaaaaaaaaaaaaaacvnbAucxCcxDcxEcxFaaicxGbYHcxHcvucvucvucvucvucvucBraaicxJcxKcxLcxMcxNcxOcxPcxQcxRcxScxTcxUcxVcxWcxXcxYcxZcvzcurcyacybcuvcuvcyccmtcydcyecvDcyfcygcyhaaqcyicyjcykcylcymcyncymcyoaabctKctKctKctKctKaabaabaabcdMcypcvRcxpaaqcyqcyrcyscytcyuabtabXabXcyvabXcywaDKaaqabnaaaaaaaaicpCcpCcpCcwacyxcyycyzcrucyActYctYcyBcyCcyDcyEciVaaaaaactiaaaaabaaaaabaabaabaaacvlaaaaabaaaaabaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaafoafoafpaabaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaaaaabaabcyGaaiaaiaaiaaiaaicyHcyIbYHcyJbYHbYHbYHcyKcCicyMcyNcxLcxLcyOcxNcyPcyQcBscyScyTcyUcyVcyWcyXcyYcyZczaczbczcczdczeczfczgczhcziczjcxcczkczlczmcznczoczpczqczrczscztczuczvczwcuMcuNczxczyczyctKaaaaaaaabafjczzcvRczAaaqczBczCczCczDaaqczEczFczGczHczIczJczKczLctbaaaaaaczMaoiaoiaoiaoiczNczOczPczOczQczOczOczRcwcckdckdckQaaaaaactiaaacvkcvkcvkcvkcvkaabcvlaabcvkcvkcvkcvkcvkaabctiaaaaaaaaaaaaaaaaaaaaaczSaaaaaaaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjpcjpcjpcjpcjpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaacqKcyFcqMaabcqKcyFcqMaaacqKcyFcqMaaaaaaaaaaabaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicCjaaicClcxLcxLcxMczVczWczXczYczZaaicAacAbcAccAdcAeaaicAfcuvcAgcAhcAicAjcuvcAkcAlcAmcAnelhcAocApcAqcArcAscAtcAucvDcAvcAwcAxcvMaabcvNcAycAzcAActKaaaaaaaaaafjchUcABcACaaqcADcAEcAFcAGcAHcvRcAIcAJczHcAKcALcAMcANcAOaabaaacAPcAQcARcAScATcAUcoBcAVcoBcAWcoBcftcoBcAXcAYckdaaiaabaabctiaabcwjcwkcwkcwkcwkcwlcwmcwncwocwocwocwocAZaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaaacqKcyFcqMaabaaaaaaaaaaaaaaaaaaaabaabaaicCrcCqcBecBdcBecBecBecBfcBgcBhcBecBicBjcBjcBkcBlcBncBmcBmcBocBpcCscxMcxLcxLaaicBtcBucBvcBwcBxcksaoicBycktcBzcBAcBBaaiaaicBCcBDcBEcBFcyfcygcBGcBHcBIcBJcBKcvDcAvcBLcBMcBNcxmcuNcBOczyczyctKaabaaaaaacdMcBPcBQcBRcBScBTcBUcBTcBTcBVcBWcBXcBYcBYcBZcCacCbcCccCdaabaabcCeckdckdckeckdckeckdckeckRcCfcwecCgcwecsbcCgcChaaiaaaaaactiaabcxAcxAcxAcxAcxAaaacvlaabcxAcxAcxAcxAcxAaaactiaaaczSaaaczSaaaaaaczSczSczSczSczSczSczSaaaaaaczSaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaabcqKcyFcqMaaacqKcyFcqMaabcqKcyFcqMaabaabaabaaaaaaaaaaaaaabaaaaaicEMcELcCkaaicFAcCmcCncCncCncCocCncCncCncCncCpacCcDscEBcEIcCtcGpcCvcCwcCxcCxcCxcCycCzcxLcxLcxLcCAcCBcCCaaqcCDcCEcCFcCGaaiaaiaaiaaicCHcyfcygcCIcCJcCKcCLcCMcvDcCNcCOcCPcCQcCRctKctKctKctKctKaaaaaaaaaafjcCScCTcCUcCVcCWcCXcCWcCWcCYcCZcDacDbcCccDccDdcAMczHcDeaabaabawjcDfcDgcDhcDicDjcDkcDlcDmcDjcDkcDnaaicDocDpabnaaiaaaaaactjaaaaabaaaaabaaaaabaaacDqaaaaabaaaaabaabaabaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafXaabcqKcDrcqMaaacqKcDrcqMaaacqKcDrcqMaabafpaabaabaaaaaaaaaaaaaaaaaicFBcELcDtaaiaaicDuaaiaaiaaicDvaaiaaiaaiaaiaaiaaiaaiaaiaaicDwcGqcDycDzcBpcBpcBpcDAcDBcDCcDDcBpcBpcDBcDEcDFcDGcCEcDHcDIaaicDJcDKacCcDLcDMcDNcDOcDPcBKcvDcDQcDRcDScDTcDUczwcDVcuNcDWcDXcDYctKaaaaaaaaaafjcDZcEacEbcEccEdcEecEfczHcEgcEhcEicEjcEkcElcEmcEncEocEpaaaaaaawjcEqcErcEsaaqcEtcEucEvaaqcEwcExcEyaaicEzcEAabnaaaaaaaaactiaaacvkcvkcvkcvkcvkaabctkaabcvkcvkcvkcvkcvkaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafpaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaafpaabaabaaaaaaaaaaaaaaaaaicFDcELcDtaaicECcEDcoecFEcEFcEGcEHcGoaaicEJcEKcGrcHhcIcaaielHeDCcEOcxMcxLcxLcEPcEQcERcEScETcEUcEVcEWaaicEXcDGcCEcEYcEZaaiaaicFaaaicFbcFccvDcDOcDPcFdcvDcDQcDRcAvcAwcFecvMcFfcvNcFgcFhcFictKaaaaaaaaacFjcFkcFlcFlcFmacfacfarzcFncFocFpcFqcFrcFsaaiawjabnaaiccoaaaaaaawjcFtcpCcpCaaqcFucpCcpCaaqcFucpCcpCaaicFvcFwcFxaaaaabaabctiaabcwjcwkcwkcwkcwkcsgcFycsgcwocwocwocwocAZaabctiaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaafoafoafpafoafoafXafpafpafpafpafoafpafpafocFzaabaaaaaaaaaaaaaaaaaaaaicJucIMcFCcBdcDtcJYcKAcFEcFFcFGcFHaaiaaicFIcKBeEbeEoeEpeEmeEneEqeErcxMcxLcFLcFMacCcFNcFOcFPcFQcFRauZcFScEOcxMcFTcFUaaqcFVaaiabnaaicFWcFXcvDcDOcDPcBKcvDcFYcDRcAvcFZcGacBNcGbcuNcGccDXcDXctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGdczHczHcGecGfcoAaaicGhcGicGjaaaaaaaaaawjcGkcpCcpCaaqcGlcpCcpCaaqcGlcpCcpCaaicFvcGmabnaaaaaaaaactiaabcxAcxAcxAcxAcxAaaactkaaacxAcxAcxAcxAcxAaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEQaaiaaiaaiaaiaaiaaicGnaaiaaiaaiaaiaaiaaicEQaaichPcmCcdzcdzcCucDxcENcmFcGscGtcGucGvcGvcGwcGxcGycGzcGAcGBcGwcGCcGDcGEcGFcGFcGGcGHcGIcFaaaicGJcGKcvDcDOcvDcGLcvDcDQcDRcAvcAwcGMcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjcGNczHczHcAGcGOcGPaaiaaaaaaaaaaaaaaaaaaawjcpCcpCcpCaaqcGQcpCcpCaaqcGQcpCcpCaaicGRcGSabnaaaaaaaaactiaaaaaaaabaabaabaaaaaactkaabaaaaaaaabaabaaaaaactiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwcrwcrwaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicGTcGUcGVcGWcGXcGYcGZcHacHbcepcHdcHecHfaaiaaicHgcnpcdzcdzcFKaaicHicHjcHkcHlcHmcHncHoaaicHpcHqcHrcxLcHsaaicHtcHucHvcHlcHlcHwcHxaaicFaaaicHycHzcvDcDOcvDcCIcCJcHAcHBcDScHCcHDczwcHEcuNcHFcHGcHGctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgOcHHcHIcHJcHKcHLcHMaaiaaaaaaaaaaaaaaaaaacHNaaiaaiaaiaaiaaiaaiaaiaaicHOcHOcHOccocHPcHQabnaaaaaaaaactictictictictiaaaaaaaaactkaaaaaaaaactictictictjctiaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrwcrwcrwcrwcrwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaicHRcHScHTcHUcHUcHVcHWcHXcHYcHYcHZcIacIbaaiaaicpwcnpcdzcdzcuhaaicIdcIeaaicIfcIgcIgcIgaaicIhcIicIjcIkcGHaaicIgcIgcIgcIfaaicIlcImaaicFaaaicIncIocIpcIqcIrcIscItcIucztcIvcAwcIwcvMcFfcvNcIxcIycIzctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccocIAcpycpycpycpycIBccoaaaaaaaaaaaaaaaaaacICaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaicEzcIDabnaaaaaaaaaaaaaaaaaaaaaaaaaaactiaabcIEaabctiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFaaaaaaaaacIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicIGcIHcIIcIJcIJcHdcGZcHdcIJcIJcIJcIacIKaaiaaicLfcwJcdzcdzcxIaaicINcIOaaicIPcIQcIRcISaGCcITcIUcIVcIWcGHaGCcIQcIQcIQcIXcIYcIZcJaaaicFacJbcJccJdcJecItcAmcJfcJgcJhcJicJjcJkcJlcBNcGbcuNcJmcHGcHGctKaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicDocDpabnaaicJocJpcJpcJpcJpcJpcJqaaactiaaaaabaaactiaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicJrcIHcHdcHdcHdcHdcGZcHdcHdcHdcJscJtcIKaaiaaicFJcmCcdzcdzcyLaaicDJcJvaaiaaiazSaoKcJwcJxcJycHlcJzcHlcJAcJBcJwaoKazTaaiaaicJCcJDaaicFaaaicJEcJFcJecJGcJHcvDcvDcJIcArcJGcAwcJJcvMcFfctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJKcFvcJLcJMcJNcJOcJPcJQcJRcJPcJPckcaaactictictictictiaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFaaacIFaaaaaacIFcIFcIFcIFcIFcIFcIFaaaaaacIFaaacIFaaaaaaaaaaaaaaaaaaaaicJScHRcJTcJTcJUcHdcJVcHdcHdcHdcIacJWcJXaaiaaicBaczTcdzcdzcyRaaiaaicJZaaicKacKbcKbaINaEVaoKaoKaoKaoKaoKaEVaCocKbcKbcKcaaicKdaaiaaicFaaaicKecKfcKgcKhcKicKjcKkcKhcKlcKhcKmcItcKncFfaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccEzcKocKpcKqcKocKocKocKocKocKockcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaicKrcKscKtcKucKvcKwcKwcKwcKwcKtcKxcKycKzaaiaaicLIcBbcdzcdzcBqaaicKCcKDcKEcKFaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacKGcKHcKIcKJaaicKKacCcKLcKMcKNcKOcKPcKQcKRcKScvDcKTcKUcKVcKWcFfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccKXcKocKYcKocKocKocKocKocKocKZckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSaaaczSczSczSczSczSczSczSczSczSaaaczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaicLacLbcHdcLcazSaoKaoKaoKaoLcLdcLecHdcLaaaiaaicFJcmCcdzcdzcBqaaicLhcLicLiaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacLicLicLhaaicDJaaicLjcLkcLlcLmcLncLocLpcLmcLpcLqcLpcLqcLrcFfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccKocKocLscLtcLucLvcLvcLvcLvcLwckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaczSaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaicLacLxcJTcLycLzcLAcLBcLCcLDcLEcLFcKtcLGaaiaaieksejVcdzcdzekJaaicLJcLKcLiaabaabaabcLLaaaaaaaaaaaacLLaaaaaacLLaabaabaabcLicLMcLNaaicDJaaiaabcLOaabcLPcLQcLRcLScLTcLScLUcLScLUcLVcLWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackccLXcLYcLZcMacMbcMccMccMccMdcMcckcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaicLacHdcHdcLcazWcLdcMecMfazWcLdcHdcHdcHdaaiaaicILejVcdzcdzejyaaicMgcLicMhaaaaaaaabaaaaaaaaaaaaaaacMiaaaaaaaaaaabaaaaaacLicLicMgaaicDJaaictKcMjcvNcMjctKcMjcvNcMjctKcMkcvNcMlctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMmcJpcJpcJpcJpcJpcJpcJpcJpcJpcJpcMnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaicMocHdcMpcMqaERcMrcMscMtaERcLdcMpcHdcHdaaiaaicILcmCcdzcdzejyaaicMvcMwcLiaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacLicMxcMyaaicDJaaictKcMzcMAcMBctKcMCcMDcMEctKcMFcMGcMHctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczSczSczSczSczSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaicMIaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicLhcLiaaaaaaaabcLLaabaabaacaacaacaabcMJaaaaabaaaaaacLicLhaaiaaicDJaaictKcMKcMLcMKctKcMMcMNcMMctKcMOcMPcMQctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaicMSaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicMTcLiaaaaaaaabaaaaaaaabcMUcMVaacaabaaaaaaaabaaaaaacLicMWaaiaaicDJaaictKcMKcMXcMKctKcMMcMYcMMctKcMQcMZcMQctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicMIaaiaaaaaaaaaaaaaaaaaaaaaaabdynaaiaaiaaiaaiaaicLhcLiaaaaaaaabaaacNaaabaacaacaacaabaabcLLaabaaaaaacLicLhaaiaaicDJaaictKctKctKctKctKctKctKctKctKctKctKctKctKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdynaaiaaiaaicMxcMycLiaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacLicMvcMwaaicDJaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaabaabdynaaiaaicMgcLicNcaaaaaacNdaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacLicLicMgaaicNeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaacIFcIFcIFaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaacIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdynaaicNgcNhcLiaabaabaabcLLaaaaaacLLaaaaaaaaaaaacLLaabcNiaabcLicNjcNkaaicNlaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaaaaacIFaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaacIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaicNmcNncNoaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacNpcNncNqaaicDJcNrcNscNscNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEQaaicexcKGcNoaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacNpcKFcexaaiaaicNucNvcNwcNxcNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbcNbcNbcNbcNbaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaiaaicKGcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKFaaiaaiaabcEQcNzcNAcNscNscNBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNbcNbcNbcNbcNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIFcIFcIFcIFcIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMRcMRcMRcMRcMRcMRcMRcMRcMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNfcNfcNfcNfcNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13714,7 +13735,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadynekRekRekRekRdFDdEPdEPeladEPdEPdFDekRekRekRekRdynaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyndyndyndyndyndEFelbelcelddCaeledEFdyndyndyndyndynaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdFOdEFdEFdEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdEFdEFdEFelHelgelgelgelidEFdEFdEFdEFdEFdEFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacdEdaacaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEFdEFdEFdEFdEFdEFelxelgelgelgelidEFdEFdEFdEFdEFdEFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacdEdaacaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFTdGlelAdFXelDdGoelgelgelgelgelgdGoehSelkdGrelldGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaabaacaacdEddEdaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGhdGvdFXdFXdFXelmelgelneloelnelgelpdGpdGpdGpdGpdGBaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaacaacaacdEddEdaacelqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGxdGDdGEdGwdFXdGoelgelrelseltelgdGodGSeluelvelwdFDaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacdEddEddEdaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+1 -1
View File
@@ -16,7 +16,7 @@
</script>
<script type='text/javascript' src='libraries.min.js'></script> <script type='text/javascript' src='nano_utility.js'></script> <script type='text/javascript' src='nano_template.js'></script> <script type='text/javascript' src='nano_state_manager.js'></script> <script type='text/javascript' src='nano_state.js'></script> <script type='text/javascript' src='nano_state_default.js'></script> <script type='text/javascript' src='nano_base_callbacks.js'></script> <script type='text/javascript' src='nano_base_helpers.js'></script> <link rel='stylesheet' type='text/css' href='shared.css'> <link rel='stylesheet' type='text/css' href='icons.css'> <link rel='stylesheet' type='text/css' href='layout_default.css'>
</head>
<body scroll=auto data-template-data='{"main":"chem_dispenser.tmpl","layout":"layout_default.tmpl"}' data-url-parameters='{"src":"[0x210068f3]"}' data-initial-data='{"config":{"title":"Chem Dispenser 5000","srcObject":{"name":"chem dispenser"},"stateKey":"default","status":2,"autoUpdateLayout":0,"autoUpdateContent":1,"showMap":0,"mapZLevel":1,"user":{"name":"Unknown"}},"data":{"amount":30,"energy":100,"maxEnergy":100,"isBeakerLoaded":1,"beakerContents":[],"beakerCurrentVolume":0,"beakerMaxVolume":50,"chemicals":[{"title":"Aluminum","id":"aluminum","commands":{"dispense":"aluminum"}},{"title":"Carbon","id":"carbon","commands":{"dispense":"carbon"}},{"title":"Chlorine","id":"chlorine","commands":{"dispense":"chlorine"}},{"title":"Copper","id":"copper","commands":{"dispense":"copper"}},{"title":"Ethanol","id":"ethanol","commands":{"dispense":"ethanol"}},{"title":"Fluorine","id":"fluorine","commands":{"dispense":"fluorine"}},{"title":"Hydrogen","id":"hydrogen","commands":{"dispense":"hydrogen"}},{"title":"Iron","id":"iron","commands":{"dispense":"iron"}},{"title":"Lithium","id":"lithium","commands":{"dispense":"lithium"}},{"title":"Mercury","id":"mercury","commands":{"dispense":"mercury"}},{"title":"Nitrogen","id":"nitrogen","commands":{"dispense":"nitrogen"}},{"title":"Oxygen","id":"oxygen","commands":{"dispense":"oxygen"}},{"title":"Phosphorus","id":"phosphorus","commands":{"dispense":"phosphorus"}},{"title":"Potassium","id":"potassium","commands":{"dispense":"potassium"}},{"title":"Radium","id":"radium","commands":{"dispense":"radium"}},{"title":"Sulphuric acid","id":"sacid","commands":{"dispense":"sacid"}},{"title":"Silicon","id":"silicon","commands":{"dispense":"silicon"}},{"title":"Sodium","id":"sodium","commands":{"dispense":"sodium"}},{"title":"Sugar","id":"sugar","commands":{"dispense":"sugar"}},{"title":"Sulfur","id":"sulfur","commands":{"dispense":"sulfur"}},{"title":"Tungsten","id":"tungsten","commands":{"dispense":"tungsten"}},{"title":"Water","id":"water","commands":{"dispense":"water"}}]}}'>
<body scroll=auto data-template-data='{"main":"pda.tmpl","layout":"layout_default.tmpl"}' data-url-parameters='{"src":"[0x2101574b]"}' data-initial-data='{"config":{"title":"Personal Data Assistant","srcObject":{"name":"PDA-Astor Wheeler (Blueshield)"},"stateKey":"default","status":2,"autoUpdateLayout":0,"autoUpdateContent":1,"showMap":0,"mapZLevel":1,"user":{"name":"Astor Wheeler"}},"data":{"owner":"Astor Wheeler","ownjob":"Blueshield","mode":0,"scanmode":0,"fon":1,"pai":0,"note":"Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!","silent":0,"toff":0,"active_conversation":null,"idInserted":0,"idLink":"--------","cart_loaded":1,"cartridge":{"access":{"access_security":1,"access_engine":0,"access_atmos":0,"access_medical":0,"access_clown":0,"access_mime":0,"access_janitor":1,"access_quartermaster":1,"access_hydroponics":0,"access_reagent_scanner":0,"access_remote_door":0,"access_status_display":1,"access_detonate_pda":0},"name":"HumanResources9001","radio":3},"stationTime":"12:13","newMessage":0,"messagescount":null,"messages":null}}'>
<div id='uiLayout'>
</div>
<noscript>