diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 07f562c4961..427b286800b 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -99,70 +99,6 @@
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
return
-/mob/living/carbon/alien/humanoid/RangedAttack(var/atom/A)
- if(!large && a_intent == "harm")
- Neurotox(A)
- return
- else if(large && a_intent == "harm")
- NeuroAOE(A)
- return
-
-/mob/living/carbon/alien/humanoid/proc/Neurotox(atom/A)
- if(world.time < next_attack)
- return
-
- var/turf/T = get_turf(src)
- var/turf/U = get_turf(A) // Get the tile infront of the move, based on their direction
-
- if(!isturf(U) || !isturf(T))
- return
-
- var/obj/item/projectile/bullet/neurotoxin/NT = new /obj/item/projectile/bullet/neurotoxin(loc)
- NT.firer = src
-// NT.def_zone = get_organ_target()
- NT.original = A
- NT.current = T
- NT.yo = U.y - T.y
- NT.xo = U.x - T.x
- spawn(1)
- NT.process()
- next_attack = world.time + 60
-
-/mob/living/carbon/alien/humanoid/proc/NeuroAOE(atom/A)
- if(world.time < next_attack)
- return
-
- var/direction = get_dir(src,A)
- var/turf/T = get_turf(A)
- var/turf/T1 = get_step(T,turn(direction, 90))
- var/turf/T2 = get_step(T,turn(direction, -90))
-
- var/list/the_targets = list(T,T1,T2)
-
- for(var/a=0, a<5, a++)
- spawn(0)
- var/obj/effect/effect/water/D = new /obj/effect/effect/water( get_turf(src) )
- D.color = "#00FF21"
- var/turf/my_target = pick(the_targets)
- for(var/b=0, b<5, b++)
- if(!step_towards(D,my_target)) return
- if(!D) return
-// D.reagents.reaction(get_turf(D))
- for(var/atom/atm in get_turf(D))
- if(!D) return
- if(istype(atm, /mob/living/carbon/alien))
- return
- if(istype(atm, /mob/living/carbon))
- var/mob/living/carbon/C = atm
- C.Weaken(5)
- C.adjustToxLoss(20)
- C << "You were drenched with neurotoxin!"
-// D.reagents.reaction(atm, TOUCH) // Touch, since we sprayed it.
- if(D.loc == my_target) break
- sleep(2)
- next_attack = world.time + 60
-
-
// Babby aliens
/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A)
A.attack_larva(src)
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 5e9d0f70042..2e71bd1ac69 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -108,14 +108,6 @@ var/list/uplink_items = list()
cost = 8
job = list("Clown")
-//Detective
-/datum/uplink_item/jobspecific/evidenceforger
- name = "Evidence Forger"
- desc = "An evidence scanner that allows you forge evidence by setting the output before scanning the item."
- item = /obj/item/device/detective_scanner/forger
- cost = 6
- job = list("Detective")
-
/datum/uplink_item/jobspecific/conversionkit
name = "Conversion Kit Bundle"
desc = "A bundle that comes with a professional revolver conversion kit and 1 box of .357 ammo. The kit allows you to convert your revolver to fire lethal rounds or vice versa, modification is nearly perfect and will not result in catastrophic failure."
diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index a37ac4c2ce4..76005df5f1f 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -23,7 +23,7 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
//world << "Room spawned at [start_loc.x],[start_loc.y],[start_loc.z]"
if(!wall)
- wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin)
+ wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/structure/alien/resin)
if(!floor)
floor = pick(/turf/simulated/floor,/turf/simulated/floor/engine)
@@ -44,9 +44,9 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
if(x == 0 || x==x_size-1 || y==0 || y==y_size-1)
- if(wall == /obj/effect/alien/resin)
+ if(wall == /obj/structure/alien/resin)
T = new floor(cur_loc)
- new /obj/effect/alien/resin(T)
+ new /obj/structure/alien/resin(T)
else
T = new wall(cur_loc)
room_turfs["walls"] += T
@@ -74,7 +74,7 @@ proc/admin_spawn_room_at_pos()
if("Regular wall")
wall=/turf/simulated/wall
if("Resin wall")
- wall=/obj/effect/alien/resin
+ wall=/obj/structure/alien/resin
switch(alert("Floor type",null,"Regular floor","Reinforced floor"))
if("Regular floor")
floor=/turf/simulated/floor
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index def6c6e4c11..b58e3bf099f 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -251,35 +251,32 @@ its easier to just keep the beam vertical.
/atom/proc/add_hiddenprint(mob/living/M as mob)
if(isnull(M)) return
if(isnull(M.key)) return
- if (!( src.flags ) & FPRINT)
- return
- if (ishuman(M))
+ if(ishuman(M))
var/mob/living/carbon/human/H = M
- if (!istype(H.dna, /datum/dna))
+ if(!istype(H.dna, /datum/dna))
return 0
- if (H.gloves)
- if(src.fingerprintslast != H.key)
- src.fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key)
- src.fingerprintslast = H.key
+ if(H.gloves)
+ if(fingerprintslast != H.ckey)
+ fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key)
+ fingerprintslast = H.ckey
return 0
- if (!( src.fingerprints ))
- if(src.fingerprintslast != H.key)
- src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",H.real_name, H.key)
- src.fingerprintslast = H.key
+ if(!( fingerprints ))
+ if(fingerprintslast != H.ckey)
+ fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",H.real_name, H.key)
+ fingerprintslast = H.ckey
return 1
else
- if(src.fingerprintslast != M.key)
- src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",M.real_name, M.key)
- src.fingerprintslast = M.key
+ if(fingerprintslast != M.ckey)
+ fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",M.real_name, M.key)
+ fingerprintslast = M.ckey
return
+
+//Set ignoregloves to add prints irrespective of the mob having gloves on.
/atom/proc/add_fingerprint(mob/living/M as mob, ignoregloves = 0)
if(isnull(M)) return
- if(isAI(M)) return
if(isnull(M.key)) return
- if (!( src.flags ) & FPRINT)
- return
- if (ishuman(M))
+ if(ishuman(M))
//Add the list if it does not exist.
if(!fingerprintshidden)
fingerprintshidden = list()
@@ -301,25 +298,25 @@ its easier to just keep the beam vertical.
H.dna.real_name = H.real_name
H.check_dna()
- //Now, deal with gloves.
- if (H.gloves && H.gloves != src)
- if(fingerprintslast != H.key)
- fingerprintshidden += text("\[[]\](Wearing gloves). Real name: [], Key: []",time_stamp(), H.real_name, H.key)
- fingerprintslast = H.key
- H.gloves.add_fingerprint(M)
+ //Check if the gloves (if any) hide fingerprints
+ if(H.gloves)
+ var/obj/item/clothing/gloves/G = H.gloves
+ if(G.transfer_prints)
+ ignoregloves = 1
- //Deal with gloves the pass finger/palm prints.
+ //Now, deal with gloves.
if(!ignoregloves)
- if(H.gloves != src)
- if(prob(75) && istype(H.gloves, /obj/item/clothing/gloves/latex))
- return 0
- else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex))
- return 0
+ if(H.gloves && H.gloves != src)
+ if(fingerprintslast != H.ckey)
+ fingerprintshidden += text("\[[]\](Wearing gloves). Real name: [], Key: []",time_stamp(), H.real_name, H.key)
+ fingerprintslast = H.ckey
+ H.gloves.add_fingerprint(M)
+ return 0
//More adminstuffz
- if(fingerprintslast != H.key)
+ if(fingerprintslast != H.ckey)
fingerprintshidden += text("\[[]\]Real name: [], Key: []",time_stamp(), H.real_name, H.key)
- fingerprintslast = H.key
+ fingerprintslast = H.ckey
//Make the list if it does not exist.
if(!fingerprints)
@@ -329,75 +326,37 @@ its easier to just keep the beam vertical.
var/full_print = md5(H.dna.uni_identity)
// Add the fingerprints
- //
- if(fingerprints[full_print])
- switch(stringpercent(fingerprints[full_print])) //tells us how many stars are in the current prints.
-
- if(28 to 32)
- if(prob(1))
- fingerprints[full_print] = full_print // You rolled a one buddy.
- else
- fingerprints[full_print] = stars(full_print, rand(0,40)) // 24 to 32
-
- if(24 to 27)
- if(prob(3))
- fingerprints[full_print] = full_print //Sucks to be you.
- else
- fingerprints[full_print] = stars(full_print, rand(15, 55)) // 20 to 29
-
- if(20 to 23)
- if(prob(5))
- fingerprints[full_print] = full_print //Had a good run didn't ya.
- else
- fingerprints[full_print] = stars(full_print, rand(30, 70)) // 15 to 25
-
- if(16 to 19)
- if(prob(5))
- fingerprints[full_print] = full_print //Welp.
- else
- fingerprints[full_print] = stars(full_print, rand(40, 100)) // 0 to 21
-
- if(0 to 15)
- if(prob(5))
- fingerprints[full_print] = stars(full_print, rand(0,50)) // small chance you can smudge.
- else
- fingerprints[full_print] = full_print
-
- else
- fingerprints[full_print] = stars(full_print, rand(0, 20)) //Initial touch, not leaving much evidence the first time.
-
+ fingerprints[full_print] = full_print
return 1
else
//Smudge up dem prints some
- if(fingerprintslast != M.key)
+ if(fingerprintslast != M.ckey)
fingerprintshidden += text("\[[]\]Real name: [], Key: []",time_stamp(), M.real_name, M.key)
- fingerprintslast = M.key
+ fingerprintslast = M.ckey
- //Cleaning up shit.
- if(fingerprints && !fingerprints.len)
- del(fingerprints)
return
/atom/proc/transfer_fingerprints_to(var/atom/A)
- if(!istype(A.fingerprints,/list))
+ // Make sure everything are lists.
+ if(!islist(A.fingerprints))
A.fingerprints = list()
-
- if(!istype(A.fingerprintshidden,/list))
+ if(!islist(A.fingerprintshidden))
A.fingerprintshidden = list()
- if(!istype(fingerprintshidden, /list))
+ if(!islist(fingerprints))
+ fingerprints = list()
+ if(!islist(fingerprintshidden))
fingerprintshidden = list()
- //skytodo
- //A.fingerprints |= fingerprints //detective
- //A.fingerprintshidden |= fingerprintshidden //admin
- if(A.fingerprints && fingerprints)
+ // Transfer
+ if(fingerprints)
A.fingerprints |= fingerprints.Copy() //detective
- if(A.fingerprintshidden && fingerprintshidden)
- A.fingerprintshidden |= fingerprintshidden.Copy() //admin A.fingerprintslast = fingerprintslast
+ if(fingerprintshidden)
+ A.fingerprintshidden |= fingerprintshidden.Copy() //admin
+ A.fingerprintslast = fingerprintslast
//returns 1 if made bloody, returns 0 otherwise
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index dfa42e7c1da..0054205f05c 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -24,6 +24,7 @@
var/check_records = 1 //Does it check security records?
var/arrest_type = 0 //If true, don't handcuff
var/harmbaton = 0
+ var/base_icon = "secbot"
radio_frequency = SEC_FREQ //Security channel
radio_name = "Security"
bot_type = SEC_BOT
@@ -54,6 +55,8 @@
/obj/machinery/bot/secbot/buzzsky
name = "Officer Buzzsky"
desc = "It's Officer Buzzsky! Rusted and falling apart, he seems less than thrilled with the crew for leaving him in his current state."
+ base_icon = "rustbot"
+ icon_state = "rustbot0"
declare_arrests = 0
arrest_type = 1
harmbaton = 1
@@ -72,7 +75,7 @@
/obj/machinery/bot/secbot/New()
..()
- icon_state = "secbot[on]"
+ icon_state = "[base_icon][on]"
spawn(3)
var/datum/job/detective/J = new/datum/job/detective
@@ -83,12 +86,12 @@
/obj/machinery/bot/secbot/turn_on()
..()
- icon_state = "secbot[on]"
+ icon_state = "[base_icon][on]"
updateUsrDialog()
/obj/machinery/bot/secbot/turn_off()
..()
- icon_state = "secbot[on]"
+ icon_state = "[base_icon][on]"
updateUsrDialog()
/obj/machinery/bot/secbot/bot_reset()
@@ -199,7 +202,7 @@ Auto Patrol: []"},
oldtarget_name = user.name
visible_message("[src] buzzes oddly!")
declare_arrests = 0
- icon_state = "secbot[on]"
+ icon_state = "[base_icon][on]"
/obj/machinery/bot/secbot/bot_process()
if (!..())
@@ -227,9 +230,9 @@ Auto Patrol: []"},
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
if(harmbaton)
playsound(loc, 'sound/weapons/genhit1.ogg', 50, 1, -1)
- icon_state = "secbot-c"
+ icon_state = "[base_icon]-c"
spawn(2)
- icon_state = "secbot[on]"
+ icon_state = "[base_icon][on]"
var/mob/living/carbon/M = target
if(istype(M, /mob/living/carbon/human))
if( M.stuttering < 5 && !(M_HULK in M.mutations) )
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 32ea115a9f3..c3a05eae825 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -1,22 +1,20 @@
-/* Alien Effects!
+/* Alien shit!
* Contains:
- * effect/alien
+ * structure/alien
* Resin
* Weeds
- * Acid
* Egg
+ * effect/acid
*/
-/*
- * effect/alien
- */
-/obj/effect/alien
+
+/obj/structure/alien
icon = 'icons/mob/alien.dmi'
/*
* Resin
*/
-/obj/effect/alien/resin
+/obj/structure/alien/resin
name = "resin"
desc = "Looks like some kind of thick resin."
icon_state = "resin"
@@ -25,54 +23,54 @@
anchored = 1
var/health = 200
var/resintype = null
-
-/obj/effect/alien/resin/New(location)
+/obj/structure/alien/resin/New(location)
relativewall_neighbours()
..()
return
-/obj/effect/alien/resin/Destroy()
+/obj/structure/alien/resin/Destroy()
var/turf/T = loc
loc = null
T.relativewall_neighbours()
..()
-/obj/effect/alien/resin/Move()
+/obj/structure/alien/resin/Move()
..()
-/obj/effect/alien/resin/wall
+/obj/structure/alien/resin/wall
name = "resin wall"
desc = "Thick resin solidified into a wall."
- icon_state = "resinwall" //same as resin, but consistency ho!
-
-/obj/effect/alien/resin/wall/New()
+ icon_state = "wall0" //same as resin, but consistency ho!
+ resintype = "wall"
+
+/obj/structure/alien/resin/wall/New()
relativewall_neighbours()
..()
-
-/obj/effect/alien/resin/membrane
+/obj/structure/alien/resin/membrane
name = "resin membrane"
desc = "Resin just thin enough to let light pass through."
- icon_state = "resinmembrane"
+ icon_state = "membrane0"
opacity = 0
health = 120
+ resintype = "membrane"
-/obj/effect/alien/resin/membrane/New()
+/obj/structure/alien/resin/membrane/New()
relativewall_neighbours()
..()
-/obj/effect/alien/resin/proc/healthcheck()
+/obj/structure/alien/resin/proc/healthcheck()
if(health <=0)
- qdel(src)
+ del(src)
-/obj/effect/alien/resin/bullet_act(obj/item/projectile/Proj)
+/obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
-/obj/effect/alien/resin/ex_act(severity, target)
+/obj/structure/alien/resin/ex_act(severity, target)
switch(severity)
if(1.0)
health -= 150
@@ -83,12 +81,12 @@
healthcheck()
-/obj/effect/alien/resin/blob_act()
+/obj/structure/alien/resin/blob_act()
health -= 50
healthcheck()
-/obj/effect/alien/resin/hitby(atom/movable/AM)
+/obj/structure/alien/resin/hitby(atom/movable/AM)
..()
visible_message("[src] was hit by [AM].")
var/tforce = 0
@@ -102,19 +100,18 @@
healthcheck()
-/obj/effect/alien/resin/attack_hand(mob/living/user)
+/obj/structure/alien/resin/attack_hand(mob/living/user)
if(M_HULK in user.mutations)
-
user.visible_message("[user] destroys [src]!")
health = 0
healthcheck()
-/obj/effect/alien/resin/attack_paw(mob/user)
+/obj/structure/alien/resin/attack_paw(mob/user)
return attack_hand(user)
-/obj/effect/alien/resin/attack_alien(mob/living/user)
+/obj/structure/alien/resin/attack_alien(mob/living/user)
if(islarva(user))
return
user.visible_message("[user] claws at the resin!")
@@ -125,121 +122,87 @@
healthcheck()
-/obj/effect/alien/resin/attackby(obj/item/I, mob/living/user)
+/obj/structure/alien/resin/attackby(obj/item/I, mob/living/user)
health -= I.force
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
healthcheck()
..()
-/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target, height=0)
+/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0)
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density
-
+
+
/*
* Weeds
*/
+
#define NODERANGE 3
-/obj/effect/alien/weeds
- name = "weeds"
- desc = "Strange, alien-looking purple weeds."
+/obj/structure/alien/weeds
+ gender = PLURAL
+ name = "resin floor"
+ desc = "A thick resin surface covers the floor."
icon_state = "weeds"
-
anchored = 1
density = 0
layer = 2
var/health = 15
- var/obj/effect/alien/weeds/node/linked_node = null
-
-/obj/effect/alien/weeds/node
- name = "purple sac"
- desc = "A purple sac covering alien weeds."
- icon_state = "weednode"
- layer = 3
- luminosity = NODERANGE
- var/node_range = NODERANGE
- var/list/obj/effect/alien/weeds/connected_weeds
-
-/obj/effect/alien/weeds/node/New()
- connected_weeds = new()
- ..(src.loc, src)
-
-/obj/effect/alien/weeds/node/Destroy()
- for(var/obj/effect/alien/weeds/W in connected_weeds)
- processing_objects.Add(W) // Start processing the weeds so they lose health when there's no connected node
- ..()
-
-/obj/effect/alien/weeds/process()
- if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range))
- if(prob(50))
- health -= 1
- else if(prob(50))
- health -= 2
- else if(prob(25))
- health -= 3
- healthcheck()
-
-/obj/effect/alien/weeds/New(pos, var/obj/effect/alien/weeds/node/N)
- ..()
+ var/obj/structure/alien/weeds/node/linked_node = null
+
+/obj/structure/alien/weeds/New(pos, node)
+ ..()
+ linked_node = node
if(istype(loc, /turf/space))
- qdel(src)
+ del(src)
return
-
- linked_node = N
- if(linked_node)
- linked_node.connected_weeds.Add(src)
-
- if(icon_state == "weeds")icon_state = pick("weeds", "weeds1", "weeds2")
+ if(icon_state == "weeds")
+ icon_state = pick("weeds", "weeds1", "weeds2")
+ fullUpdateWeedOverlays()
spawn(rand(150, 200))
if(src)
Life()
- return
-/obj/effect/alien/weeds/Destroy()
- if(linked_node)
- linked_node.connected_weeds.Remove(src)
- linked_node = null
- processing_objects.Remove(src)
+/obj/structure/alien/weeds/Destroy()
+ var/turf/T = loc
+ loc = null
+ for (var/obj/structure/alien/weeds/W in range(1,T))
+ W.updateWeedOverlays()
..()
-
-/obj/effect/alien/weeds/proc/Life()
+
+/obj/structure/alien/weeds/proc/Life()
set background = BACKGROUND_ENABLED
var/turf/U = get_turf(src)
- if (istype(U, /turf/space))
+ if(istype(U, /turf/space))
del(src)
return
- if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range) )
- healthcheck()
- return
-
direction_loop:
for(var/dirn in cardinal)
-
var/turf/T = get_step(src, dirn)
- if (!istype(T) || T.density || locate(/obj/effect/alien/weeds) in T || istype(T.loc, /area/arrival) || istype(T, /turf/space))
+ if (!istype(T) || T.density || locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space))
continue
+ if(!linked_node || get_dist(linked_node, src) > linked_node.node_range)
+ return
+
for(var/obj/O in T)
if(O.density)
continue direction_loop
- new /obj/effect/alien/weeds(T, linked_node)
-
-/obj/effect/alien/weeds/ex_act(severity,target)
- qdel(src)
-
-/obj/effect/alien/weeds/fire_act(null, temperature, volume)
- if(temperature > T0C+200)
- health -= 1 * temperature
- healthcheck()
+ new /obj/structure/alien/weeds(T, linked_node)
-/obj/effect/alien/weeds/attackby(obj/item/I, mob/user)
+
+/obj/structure/alien/weeds/ex_act(severity, target)
+ del(src)
+
+
+/obj/structure/alien/weeds/attackby(obj/item/I, mob/user)
if(I.attack_verb.len)
visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!")
else
@@ -253,72 +216,58 @@
playsound(loc, 'sound/items/Welder.ogg', 100, 1)
health -= damage
- healthcheck()
-
-/obj/effect/alien/weeds/proc/healthcheck()
+ healthcheck()
+
+
+/obj/structure/alien/weeds/proc/healthcheck()
if(health <= 0)
- qdel(src)
-
-/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ del(src)
+
+
+/obj/structure/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
health -= 5
healthcheck()
-
-/*
- * Acid
- */
-/obj/effect/alien/acid
- name = "acid"
- desc = "Burbling corrossive stuff. I wouldn't want to touch it."
- icon_state = "acid"
- density = 0
- opacity = 0
- anchored = 1
+/obj/structure/alien/weeds/proc/updateWeedOverlays()
- var/atom/target
- var/ticks = 0
- var/target_strength = 0
+ overlays.Cut()
+ var/turf/N = get_step(src, NORTH)
+ var/turf/S = get_step(src, SOUTH)
+ var/turf/E = get_step(src, EAST)
+ var/turf/W = get_step(src, WEST)
+ if(!locate(/obj/structure/alien) in N.contents)
+ if(istype(N, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_s", layer=2, pixel_y = 32)
+ if(!locate(/obj/structure/alien) in S.contents)
+ if(istype(S, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_n", layer=2, pixel_y = -32)
+ if(!locate(/obj/structure/alien) in E.contents)
+ if(istype(E, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_w", layer=2, pixel_x = 32)
+ if(!locate(/obj/structure/alien) in W.contents)
+ if(istype(W, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_e", layer=2, pixel_x = -32)
-/obj/effect/alien/acid/New(loc, target)
- ..(loc)
- src.target = target
- if(isturf(target)) // Turf take twice as long to take down.
- target_strength = 8
- else
- target_strength = 4
- tick()
+/obj/structure/alien/weeds/proc/fullUpdateWeedOverlays()
+ for (var/obj/structure/alien/weeds/W in range(1,src))
+ W.updateWeedOverlays()
-/obj/effect/alien/acid/proc/tick()
- if(!target)
- del(src)
+//Weed nodes
+/obj/structure/alien/weeds/node
+ name = "glowing resin"
+ desc = "Blue bioluminescence shines from beneath the surface."
+ icon_state = "weednode"
+ luminosity = 1
+ var/node_range = NODERANGE
- ticks += 1
- if(ticks >= target_strength)
+/obj/structure/alien/weeds/node/New()
+ ..(loc, src)
- for(var/mob/O in hearers(src, null))
- O.show_message("\green [src.target] collapses under its own weight into a puddle of goop and undigested debris!", 1)
+#undef NODERANGE
- if(istype(target, /turf/simulated/wall)) // I hate turf code.
- var/turf/simulated/wall/W = target
- W.dismantle_wall(1)
- else
- del(target)
- del(src)
- return
-
- switch(target_strength - ticks)
- if(6)
- visible_message("\green [src.target] is holding up against the acid!")
- if(4)
- visible_message("\green [src.target]\s structure is being melted by the acid!")
- if(2)
- visible_message("\green [src.target] is struggling to withstand the acid!")
- if(0 to 1)
- visible_message("\green [src.target] begins to crumble under the acid!")
- spawn(rand(150, 200)) tick()
/*
* Egg
@@ -332,7 +281,7 @@
#define MIN_GROWTH_TIME 1800 //time it takes to grow a hugger
#define MAX_GROWTH_TIME 3000
-/obj/effect/alien/egg
+/obj/structure/alien/egg
name = "egg"
desc = "A large mottled egg."
icon_state = "egg_growing"
@@ -342,20 +291,20 @@
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
-/obj/effect/alien/egg/New()
+/obj/structure/alien/egg/New()
new /obj/item/clothing/mask/facehugger(src)
..()
spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
Grow()
-/obj/effect/alien/egg/attack_paw(mob/user)
+/obj/structure/alien/egg/attack_paw(mob/user)
if(isalien(user))
switch(status)
if(BURST)
user << "You clear the hatched egg."
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
- qdel(src)
+ del(src)
return
if(GROWING)
user << "The child is not developed yet."
@@ -368,19 +317,20 @@
return attack_hand(user)
-/obj/effect/alien/egg/attack_hand(mob/user)
+/obj/structure/alien/egg/attack_hand(mob/user)
user << "It feels slimy."
-/obj/effect/alien/egg/proc/GetFacehugger()
+
+/obj/structure/alien/egg/proc/GetFacehugger()
return locate(/obj/item/clothing/mask/facehugger) in contents
-/obj/effect/alien/egg/proc/Grow()
+/obj/structure/alien/egg/proc/Grow()
icon_state = "egg"
status = GROWN
-/obj/effect/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
+/obj/structure/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
if(status == GROWN || status == GROWING)
icon_state = "egg_hatched"
flick("egg_opening", src)
@@ -399,13 +349,13 @@
break
-/obj/effect/alien/egg/bullet_act(obj/item/projectile/Proj)
+/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
-/obj/effect/alien/egg/attackby(obj/item/I, mob/user)
+/obj/structure/alien/egg/attackby(obj/item/I, mob/user)
if(I.attack_verb.len)
visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!")
else
@@ -423,21 +373,21 @@
healthcheck()
-/obj/effect/alien/egg/proc/healthcheck()
+/obj/structure/alien/egg/proc/healthcheck()
if(health <= 0)
if(status != BURST && status != BURSTING)
Burst()
else if(status == BURST && prob(50))
- qdel(src) //Remove the egg after it has been hit after bursting.
+ del(src) //Remove the egg after it has been hit after bursting.
-/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 500)
health -= 5
healthcheck()
-/obj/effect/alien/egg/HasProximity(atom/movable/AM)
+/obj/structure/alien/egg/HasProximity(atom/movable/AM)
if(status == GROWN)
if(!CanHug(AM))
return
@@ -455,3 +405,72 @@
#undef MIN_GROWTH_TIME
#undef MAX_GROWTH_TIME
+
+/*
+ * Acid
+ */
+/obj/effect/acid
+ gender = PLURAL
+ name = "acid"
+ desc = "Burbling corrossive stuff."
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "acid"
+ density = 0
+ opacity = 0
+ anchored = 1
+ unacidable = 1
+ var/atom/target
+ var/ticks = 0
+ var/target_strength = 0
+
+
+/obj/effect/acid/New(loc, targ)
+ ..(loc)
+ target = targ
+
+ //handle APCs and newscasters and stuff nicely
+ pixel_x = target.pixel_x
+ pixel_y = target.pixel_y
+
+ if(isturf(target)) //Turfs take twice as long to take down.
+ target_strength = 640
+ else
+ target_strength = 320
+ tick()
+
+
+/obj/effect/acid/proc/tick()
+ if(!target)
+ del(src)
+
+ ticks++
+
+ if(ticks >= target_strength)
+ target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!")
+
+ if(istype(target, /turf/simulated/wall))
+ var/turf/simulated/wall/W = target
+ W.dismantle_wall(1)
+ else
+ del(target)
+
+ del(src)
+ return
+
+ x = target.x
+ y = target.y
+ z = target.z
+
+ switch(target_strength - ticks)
+ if(480)
+ visible_message("[target] is holding up against the acid!")
+ if(320)
+ visible_message("[target] is being melted by the acid!")
+ if(160)
+ visible_message("[target] is struggling to withstand the acid!")
+ if(80)
+ visible_message("[target] begins to crumble under the acid!")
+
+ spawn(1)
+ if(src)
+ tick()
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index c64cff22fdd..813e9fd4517 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -141,9 +141,12 @@ var/last_chew = 0
..()
if(istype(I, /obj/item/stack/rods))
var/obj/item/stack/rods/R = I
- var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod
- R.use(1)
- user.put_in_hands(W)
- user << "You wrap the cable restraint around the top of the rod."
- del(src)
-
+ if (R.use(1))
+ var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod
+ user.u_equip(src)
+ user.put_in_hands(W)
+ user << "You wrap the cable restraint around the top of the rod."
+ del(src)
+ else
+ user << "You need one rod to make a wired rod."
+ return
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index d7e501ea6e1..2e9ed7b70c9 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -196,4 +196,12 @@
throwforce = 5
stunforce = 5
hitcost = 3750
- slot_flags = null
\ No newline at end of file
+ slot_flags = null
+
+/obj/item/weapon/melee/baton/cattleprod/update_icon()
+ if(status)
+ icon_state = "stunprod_active"
+ else if(!bcell)
+ icon_state = "stunprod_nocell"
+ else
+ icon_state = "stunprod"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 71b12cff1f7..43618e46b73 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -167,6 +167,10 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
..()
if(istype(I, /obj/item/weapon/shard))
var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear
+
+ user.u_equip(I)
+ user.u_equip(src)
+
user.put_in_hands(S)
user << "You fasten the glass shard to the top of the rod with the cable."
del(I)
@@ -174,6 +178,10 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
else if(istype(I, /obj/item/weapon/wirecutters))
var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod
+
+ user.u_equip(I)
+ user.u_equip(src)
+
user.put_in_hands(P)
user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward."
del(I)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index b9a4004bdf2..5404f9d6389 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -147,7 +147,7 @@
new /obj/item/clothing/gloves/latex(src)
new /obj/item/device/radio/headset/heads/cmo(src)
new /obj/item/clothing/gloves/latex(src)
- new /obj/item/weapon/defibrillator(src)
+ new /obj/item/weapon/defibrillator/loaded(src)
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/device/flash(src)
new /obj/item/weapon/reagent_containers/hypospray(src)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index a45e2436b80..f1322e17ad3 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -22,7 +22,7 @@
"[buckled_mob.name] struggles to break free of the gelatinous resin...",\
"You struggle to break free from the gelatinous resin...",\
"You hear squelching...")
- spawn(1200)
+ spawn(600)
if(user && buckled_mob && user.buckled == src)
buckled_mob.pixel_y = 0
unbuckle()
@@ -51,11 +51,21 @@
M.loc = src.loc
M.dir = src.dir
M.update_canmove()
- M.pixel_y = 6
+ M.pixel_y += 1
+ M.pixel_x += 2
+ M.anchored = anchored
src.buckled_mob = M
src.add_fingerprint(user)
+ src.overlays += image('icons/mob/alien.dmi', "nestoverlay", layer=6)
return
+/obj/structure/stool/bed/nest/unbuckle()
+ if(buckled_mob)
+ buckled_mob.pixel_y -= 1
+ buckled_mob.pixel_x -= 2
+ overlays.Cut()
+ ..()
+
/obj/structure/stool/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force
health = max(0, health - aforce)
diff --git a/code/game/smoothwall.dm b/code/game/smoothwall.dm
index c9078fa9192..bcd9fa88a24 100644
--- a/code/game/smoothwall.dm
+++ b/code/game/smoothwall.dm
@@ -95,4 +95,18 @@
// DE-HACK
/turf/simulated/wall/vault/relativewall()
+ return
+
+
+//Xeno wall smoothing
+/obj/structure/alien/resin/relativewall()
+
+ var/junction = 0 //will be used to determine from which side the wall is connected to other walls
+
+ for(var/obj/structure/alien/resin/W in orange(src,1))
+ if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
+ junction |= get_dir(src,W)
+ var/obj/structure/alien/resin/resin = src
+ resin.icon_state = "[resin.resintype][junction]"
+
return
\ No newline at end of file
diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm
index 047fa29e506..93c94aebf8e 100644
--- a/code/modules/DetectiveWork/detective_work.dm
+++ b/code/modules/DetectiveWork/detective_work.dm
@@ -5,10 +5,10 @@ atom/var/list/suit_fibers
atom/proc/add_fibers(mob/living/carbon/human/M)
if(M.gloves && istype(M.gloves,/obj/item/clothing/))
var/obj/item/clothing/gloves/G = M.gloves
- if(G.transfer_blood) //bloodied gloves transfer blood to touched objects
+ if(G.transfer_blood > 1) //bloodied gloves transfer blood to touched objects
if(add_blood(G.bloody_hands_mob)) //only reduces the bloodiness of our gloves if the item wasn't already bloody
G.transfer_blood--
- else if(M.bloody_hands)
+ else if(M.bloody_hands > 1)
if(add_blood(M.bloody_hands_mob))
M.bloody_hands--
if(!suit_fibers) suit_fibers = list()
@@ -19,13 +19,13 @@ atom/proc/add_fibers(mob/living/carbon/human/M)
if(prob(10*item_multiplier) && !(fibertext in suit_fibers))
//world.log << "Added fibertext: [fibertext]"
suit_fibers += fibertext
- if(!(M.wear_suit.body_parts_covered & 32))
+ if(!(M.wear_suit.body_parts_covered & UPPER_TORSO))
if(M.w_uniform)
fibertext = "Fibers from \a [M.w_uniform]."
if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed.
//world.log << "Added fibertext: [fibertext]"
suit_fibers += fibertext
- if(!(M.wear_suit.body_parts_covered & 64))
+ if(!(M.wear_suit.body_parts_covered & HANDS))
if(M.gloves)
fibertext = "Material from a pair of [M.gloves.name]."
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
@@ -45,583 +45,4 @@ atom/proc/add_fibers(mob/living/carbon/human/M)
fibertext = "Material from a pair of [M.gloves.name]."
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
//world.log << "Added fibertext: [fibertext]"
- suit_fibers += "Material from a pair of [M.gloves.name]."
- if(!suit_fibers.len) del suit_fibers
-
-var/const/FINGERPRINT_COMPLETE = 6 //This is the output of the stringpercent(print) proc, and means about 80% of
- //the print must be there for it to be complete. (Prints are 32 digits)
-
-obj/machinery/computer/forensic_scanning
- name = "\improper High-Res Forensic Scanning Computer"
- icon_state = "forensic"
- var/obj/item/scanning
- var/temp = ""
- var/canclear = 1
- var/authenticated = 0
-
-//Here's the structure for files: each entry is a list, and entry one in that list is the string of their
-//full and scrambled fingerprint. This acts as the method to arrange evidence. Each subsequent entry is list
-//in the form (from entries):
-// 1: Object
-// 2: All prints on the object
-// 3: All fibers on the object
-// 4: All blood on the object
-//This is then used to show what objects were used to "find" the full print, as well as the fibers on it.
- var/list/files
-//This holds objects (1) without prints, and their fibers(2) and blood(3).
- var/list/misc
- var/obj/item/weapon/f_card/card
-
- var/scan_data = ""
- var/scan_name = ""
- var/scan_process = 0
-
- req_access = list(access_forensics_lockers)
-
-
- New()
- ..()
- new /obj/item/weapon/book/manual/detective(get_turf(src))
- return
-
-
- attack_ai(mob/user)
- return attack_hand(user)
-
-
- attack_hand(mob/user)
- if(..())
- return
- user.set_machine(src)
- var/dat = ""
- var/isai = 0
- if(istype(usr,/mob/living/silicon))
- isai = 1
- if(temp)
- dat += "[temp]
"
- if(canclear) dat += "{Clear Screen}"
- else
- if(!authenticated)
- dat += "{Log In}"
- else
- dat += "{Log Out}
"
- if(scanning)
- if(scan_process)
- dat += "Scan Object: {[scanning.name]}
"
- dat += "{Cancel Scan} {Print}
"
- else
- if(isai) dat += "Scan Object: {[scanning.name]}
"
- else dat += "Scan Object: {[scanning.name]}
"
- dat += "{Scan} {Print}
"
- else
- if(isai) dat += "{No Object Inserted}
"
- else dat += "{No Object Inserted}
"
- dat += "{Scan} {Print}
"
- dat += "{Access Database}
"
- dat += "[scan_data]"
- if(scan_data && !scan_process)
- dat += "
{Erase Data}"
- user << browse(dat,"window=scanner")
- onclose(user,"scanner")
-
-
- Topic(href,href_list)
- switch(href_list["operation"])
- if("login")
- var/mob/M = usr
- if(istype(M,/mob/living/silicon))
- authenticated = 1
- updateDialog()
- return
- if (allowed(M))
- authenticated = 1
- if("logout")
- authenticated = 0
- if("clear")
- if(canclear)
- temp = null
- if("eject")
- if(scanning)
- scanning.loc = loc
- scanning = null
- else
- temp = "Eject Failed: No Object"
- if("insert")
- var/mob/M = usr
- var/obj/item/I = M.get_active_hand()
- if(I && istype(I))
- if(istype(I, /obj/item/weapon/evidencebag))
- scanning = I.contents[1]
- scanning.loc = src
- I.overlays -= scanning
- I.icon_state = "evidenceobj"
- else
- scanning = I
- M.drop_item()
- I.loc = src
- else
- usr << "Invalid Object Rejected."
- if("card") //Processing a fingerprint card.
- var/mob/M = usr
- var/obj/item/I = M.get_active_hand()
- if(!(I && istype(I,/obj/item/weapon/f_card)))
- I = card
- if(I && istype(I,/obj/item/weapon/f_card))
- card = I
- if(!card.fingerprints)
- card.fingerprints = list()
- if(card.amount > 1 || !card.fingerprints.len)
- usr << "\red ERROR: No prints/too many cards."
- if(card.loc == src)
- card.loc = src.loc
- card = null
- return
- M.drop_item()
- I.loc = src
- process_card()
- else
- usr << "\red Invalid Object Rejected."
- if("database") //Viewing all records in each database
- canclear = 1
- if(href_list["delete_record"])
- delete_dossier(href_list["delete_record"])
- if(href_list["delete_aux"])
- delete_record(href_list["delete_aux"])
- if((!misc || !misc.len) && (!files || !files.len))
- temp = "Database is empty."
- else
- if(files && files.len)
- temp = "Criminal Evidence Database
"
- temp += "Consolidated data points:
"
- for(var/print in files)
- var/list/file = files[print]
- temp += "{[file[2]]}
"
- temp += "
{Insert Finger Print Card (To complete a Dossier)}
"
- else
- temp = ""
- if(misc && misc.len)
- temp += "Auxiliary Evidence Database
"
- temp += "This is where anything without fingerprints goes.
"
- for(var/atom in misc)
- var/list/data_entry = misc[atom]
- temp += "{[data_entry[3]]}
"
- if("record") //Viewing a record from the "files" database.
- canclear = 0
- if(files)
- var/list/dossier = files[href_list["identifier"]]
- if(href_list["ren"])
- var/new_title = copytext(sanitize(input("Rename to what?", "Dossier Editing", "Dossier [files.Find(href_list["identifier"])]") as null|text),1,MAX_MESSAGE_LEN)
- if(new_title)
- dossier[2] = new_title
- else
- usr << "Illegal or blank name."
- temp = "Criminal Evidence Database
"
- temp += "Consolidated data points: [dossier[2]]
"
- var/print_string = "Fingerprints: Print not complete!
"
- if(stringpercent(dossier[1]) <= FINGERPRINT_COMPLETE)
- print_string = "Fingerprints: (80% or higher completion reached)
[dossier[1]]
"
- temp += print_string
- for(var/object in dossier)
- if(object == dossier[1] || object == dossier[2])
- continue
- temp += "
"
- var/list/outputs = dossier[object]
- var/list/prints = outputs[1]
- temp += "Object: [outputs[4]]
"
- temp += " Fingerprints:
"
- temp += " [prints.len] Unique fingerprints found.
"
- var/complete_prints = 0
- for(var/print in prints)
- if(stringpercent(prints[print]) <= FINGERPRINT_COMPLETE)
- complete_prints++
- temp += " [prints[print]]
"
- if(complete_prints)
- temp += " And [prints.len - complete_prints] unknown unique prints.
"
- else
- temp += " No prints of sufficient completeness.
"
- var/list/fibers = outputs[2]
- if(fibers && fibers.len)
- temp += " Fibers:
"
- for(var/j = 1, j <= fibers.len, j++)
- temp += " [fibers[j]]
"
- var/list/blood = outputs[3]
- if(blood && blood.len)
- temp += " Blood:
"
- for(var/named in blood)
- temp += " Type: [blood[named]], DNA: [named]
"
- temp += "
{Rename this Dossier}"
- temp += "
{Delete this Dossier}"
- temp += "
{Print}"
- else
- temp = "ERROR. Database not found!
"
- temp += "
{Return}"
- if("databaseprint") //Printing from the "files" database.
- if(files)
- var/obj/item/weapon/paper/P = new(loc)
- var/list/dossier = files[href_list["identifier"]]
- P.name = "\improper Database File ([dossier[2]])"
- P.overlays += "paper_words"
- P.info = "Criminal Evidence Database
"
- P.info += "Consolidated data points: [dossier[2]]
"
- var/print_string = "Fingerprints: Print not complete!
"
- if(stringpercent(dossier[1]) <= FINGERPRINT_COMPLETE)
- print_string = "Fingerprints: (80% or higher completion reached)
[dossier[1]]
"
- P.info += print_string
- for(var/object in dossier)
- if(object == dossier[1] || object == dossier[2])
- continue
- P.info += "
"
- var/list/outputs = dossier[object]
- var/list/prints = outputs[1]
- P.info += "Object: [outputs[4]]
"
- P.info += " Fingerprints:
"
- P.info += " [prints.len] Unique fingerprints found.
"
- var/complete_prints = 0
- for(var/print in prints)
- if(stringpercent(prints[print]) <= FINGERPRINT_COMPLETE)
- complete_prints++
- P.info += " [prints[print]]
"
- if(complete_prints)
- P.info += " And [prints.len - complete_prints] unknown unique prints.
"
- else
- P.info += " No prints of sufficient completeness.
"
- var/list/fibers = outputs[2]
- if(fibers && fibers.len)
- P.info += " Fibers:
"
- for(var/j = 1, j <= fibers.len, j++)
- P.info += " [fibers[j]]
"
- var/list/blood = outputs[3]
- if(blood && blood.len)
- P.info += " Blood:
"
- for(var/named in blood)
- P.info += " Type: [blood[named]], DNA: [named]
"
- else
- usr << "ERROR. Database not found!
"
- if("auxiliary") //Viewing a record from the "misc" database.
- canclear = 0
- if(misc)
- temp = "Auxiliary Evidence Database
"
- var/list/outputs = misc[href_list["identifier"]]
- temp += "Consolidated data points: [outputs[3]]
"
- var/list/prints = outputs[4]
- if(prints)
- temp += " Fingerprints:
"
- temp += " [prints.len] Unique fingerprints found.
"
- var/complete_prints = 0
- for(var/print in prints)
- if(stringpercent(prints[print]) <= FINGERPRINT_COMPLETE)
- complete_prints++
- temp += " [prints[print]]
"
- if(complete_prints)
- temp += " And [prints.len - complete_prints] unknown unique prints.
"
- else
- temp += " No prints of sufficient completeness.
"
- var/list/fibers = outputs[1]
- if(fibers && fibers.len)
- temp += " Fibers:
"
- for(var/fiber in fibers)
- temp += " [fiber]
"
- var/list/blood = outputs[2]
- if(blood && blood.len)
- temp += " Blood:
"
- for(var/named in blood)
- temp += " Type: [blood[named]], DNA: [named]
"
- temp += "
{Delete This Record}"
- temp += "
{Print}"
- else
- temp = "ERROR. Database not found!
"
- temp += "
{Return}"
- if("auxiliaryprint") //Printing from the "misc" database.
- if(misc)
- var/obj/item/weapon/paper/P = new(loc)
- var/list/outputs = misc[href_list["identifier"]]
- P.name = "\improper Auxiliary Database File ([outputs[3]])"
- P.overlays += "paper_words"
- P.info = "Auxiliary Evidence Database
"
- P.info += "Consolidated data points: [outputs[3]]
"
- var/list/prints = outputs[4]
- if(prints)
- P.info += " Fingerprints:
"
- P.info += " [prints.len] Unique fingerprints found.
"
- var/complete_prints = 0
- for(var/print in prints)
- if(stringpercent(prints[print]) <= FINGERPRINT_COMPLETE)
- complete_prints++
- P.info += " [prints[print]]
"
- if(complete_prints)
- P.info += " And [prints.len - complete_prints] unknown unique prints.
"
- else
- P.info += " No prints of sufficient completeness.
"
- var/list/fibers = outputs[1]
- if(fibers && fibers.len)
- P.info += " Fibers:
"
- for(var/fiber in fibers)
- P.info += " [fiber]
"
- var/list/blood = outputs[2]
- if(blood && blood.len)
- P.info += " Blood:
"
- for(var/named in blood)
- P.info += " Type: [blood[named]], DNA: [named]
"
- else
- usr << "ERROR. Database not found!
"
- if("scan")
- if(istype(scanning,/obj/item/weapon/f_card))
- card = scanning
- scanning = initial(scanning)
- process_card()
- else if(scanning)
- scan_process = 3
- scan_data = "Scanning [scanning]: 25% complete"
- updateDialog()
- sleep(50)
- if(!scan_process)
- scan_data = null
- updateDialog()
- return
- scan_data = "Scanning [scanning]: 50% complete"
- updateDialog()
- scan_process = 2
- sleep(50)
- if(!scan_process)
- scan_data = null
- updateDialog()
- return
- scan_data = "Scanning [scanning]: 75% complete"
- updateDialog()
- scan_process = 1
- sleep(50)
- if(!scan_process)
- scan_data = null
- updateDialog()
- return
- if(scanning)
- scan_process = 0
- scan_name = scanning.name
- scan_data = "[scanning]
"
- if (scanning.blood_DNA)
- scan_data += "Blood Found:
"
- for(var/blood in scanning.blood_DNA)
- scan_data += "Blood type: [scanning.blood_DNA[blood]]\nDNA: [blood]
"
- else
- scan_data += "No Blood Found
"
- if(!scanning.fingerprints)
- scan_data += "No Fingerprints Found
"
- else
- scan_data += "Isolated [scanning.fingerprints.len] Fingerprints. Loaded into database.
"
- add_data(scanning)
-
- if(!scanning.suit_fibers)
- scan_data += "No Fibers/Materials Located
"
- else
- scan_data += "Fibers/Materials Found:
"
- for(var/data in scanning.suit_fibers)
- scan_data += "- [data]
"
- if(istype(scanning,/obj/item/device/detective_scanner) || (istype(scanning, /obj/item/device/pda) && scanning:cartridge && scanning:cartridge.access_security))
- scan_data += "
Data transfered from \the [scanning] to Database.
"
- add_data_scanner(scanning)
- else if(!scanning.fingerprints)
- scan_data += "
Add to Database?
"
- else
- temp = "Scan Failed: No Object"
-
-
- if("print") //Printing scan data
- if(scan_data)
- temp = "Scan Data Printed."
- var/obj/item/weapon/paper/P = new(loc)
- P.name = "\improper Scan Data ([scan_name])"
- P.info = "[scan_data]"
- P.overlays += "paper_words"
- else
- temp = "Print Failed: No Data"
- if("erase")
- scan_data = ""
- if("cancel")
- scan_process = 0
- if("add") //Adding an object (Manually) to the database.
- if(scanning)
- add_data(scanning)
- else
- temp = "Data Transfer Failed: No Object."
- if("rename")
- if(!files || !files[href_list["identifier"]])
- temp = "ERROR: Record/Database not found!"
- else
- var/new_title = copytext(sanitize(input("Rename to what?", "Dossier Editing", "Dossier [files.Find(href_list["identifier"])]") as null|text),1,MAX_MESSAGE_LEN)
- if(new_title)
- var/list/file = files[href_list["identifier"]]
- file[2] = new_title
- updateUsrDialog()
-
- ex_act()
- return
-
-
- proc/add_data_scanner(var/obj/item/device/W)
- if(istype(W, /obj/item/device/detective_scanner))
- var/obj/item/device/detective_scanner/D = W
- if(D.stored)
- for(var/atom in D.stored)
- var/list/data = D.stored[atom]
- add_data_master(atom,data[1],data[2],data[3],data[4])
- D.stored = list()
- else if(istype(W, /obj/item/device/pda) && W:cartridge && W:cartridge.access_security)
- if(W:cartridge.stored_data)
- for(var/atom in W:cartridge.stored_data)
- var/list/data = W:cartridge.stored_data[atom]
- add_data_master(atom,data[1],data[2],data[3],data[4])
- W:cartridge.stored_data = list()
- return
-
- proc/add_data(var/atom/scanned_atom)
- return add_data_master("\ref [scanned_atom]", scanned_atom.fingerprints,\
- scanned_atom.suit_fibers, scanned_atom.blood_DNA, "[scanned_atom.name] (Direct Scan)")
-
-
-
-/********************************
-*****DO NOT DIRECTLY CALL ME*****
-********************************/
- proc/add_data_master(var/atom_reference, var/list/atom_fingerprints, var/list/atom_suit_fibers, var/list/atom_blood_DNA, var/atom_name)
-//What follows is massive. It cross references all stored data in the scanner with the other stored data,
-//and what is already in the computer. Not sure how bad the lag may/may not be.
-
- if(!misc)
- misc = list()
- var/list/data_entry = misc[atom_reference]
- if(data_entry)
- var/list/fibers = data_entry[1]
- if(!fibers)
- fibers = list()
- if(atom_suit_fibers)
- for(var/fiber in atom_suit_fibers) //Fibers~~~
- if(!fibers.Find(fiber)) //It isn't! Add!
- fibers += fiber
- var/list/blood = data_entry[2]
- if(!blood)
- blood = list()
- if(atom_blood_DNA)
- for(var/main_blood in atom_blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = atom_blood_DNA[blood]
- var/list/prints = data_entry[4]
- if(!prints && atom_fingerprints)
- prints = list()
- if(atom_fingerprints)
- for(var/print in atom_fingerprints)
- if(!prints[print])
- prints[print] = atom_fingerprints[print]
- else
- var/list/templist[4]
- templist[1] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
- templist[2] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
- templist[3] = atom_name
- templist[4] = atom_fingerprints ? atom_fingerprints.Copy() : null
- misc[atom_reference] = templist //Store it!
- //Has prints.
- if(atom_fingerprints)
- if(!files)
- files = list()
- for(var/main_print in atom_fingerprints)
- data_entry = files[main_print]
- if(data_entry)//The print is already in here!
- var/list/internal_atom = data_entry[atom_reference] //Lets see if we can find the current object
- if(internal_atom)
- //We must be on a roll! Just update what needs to be updated.
- var/list/internal_prints = internal_atom[1]
- for(var/print in atom_fingerprints) //Sorry for the double loop! D:
- var/associated_print = internal_prints[print]
- var/reference_print = atom_fingerprints[print]
- if(associated_print && associated_print != reference_print) //It does not match
- internal_prints[print] = stringmerge(associated_print, reference_print)
- else if(!associated_print)
- internal_prints[print] = reference_print
- //If the main print was updated, lets update the master as well.
- if(print == main_print && (!associated_print || (associated_print && associated_print != reference_print)))
- update_fingerprints(main_print, internal_prints[print])
- //Fibers.
- var/list/fibers = internal_atom[2]
- if(!fibers)
- fibers = list()
- if(atom_suit_fibers)
- for(var/fiber in atom_suit_fibers) //Fibers~~~
- if(!fibers.Find(fiber)) //It isn't! Add!
- fibers += fiber
- //Blood.
- var/list/blood = internal_atom[3]
- if(!blood)
- blood = list()
- if(atom_blood_DNA)
- for(var/main_blood in atom_blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = atom_blood_DNA[blood]
-
- continue
- //It's not in there! We gotta add it.
- update_fingerprints(main_print, atom_fingerprints[main_print])
- var/list/data_point[4]
- data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
- data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
- data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
- data_point[4] = atom_name
- data_entry[atom_reference] = data_point
- continue
- //No print at all! New data entry, go!
- var/list/data_point[4]
- data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
- data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
- data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
- data_point[4] = atom_name
- var/list/new_file[2]
- new_file[1] = atom_fingerprints[main_print]
- new_file[2] = "Dossier [files.len + 1]"
- new_file[atom_reference] = data_point
- files[main_print] = new_file
- return 1
-/********************************
-***END DO NOT DIRECTLY CALL ME***
-********************************/
-
- proc/update_fingerprints(var/ref_print, var/new_print)
- var/list/master = files[ref_print]
- if(master)
- master[1] = stringmerge(master[1],new_print)
- else
- CRASH("Fucking hell. Something went wrong, and it tried to update a null print or something. Tell SkyMarshal (and give him this call stack)")
- return
-
- proc/process_card() //Same as above, but for fingerprint cards
- if(card.fingerprints && !(card.amount > 1) && islist(card.fingerprints) && files && files.len)
- usr << "You insert the card, and it is destroyed by the machinery in the process of comparing prints."
- var/found = 0
- for(var/master_print in card.fingerprints)
- var/list/data_entry = files[master_print]
- if(data_entry)
- found = 1
- data_entry[1] = master_print
- if(found)
- usr << "The machinery finds it can complete a match."
- else
- usr << "No match found."
- del(card)
- else
- usr << "\red ERROR: No prints/too many cards."
- if(card.loc == src)
- card.loc = src.loc
- card = null
- return
- return
-
- proc/delete_record(var/atom_ref) //Deletes an entry in the misc database at the given location
- if(misc && misc.len)
- misc.Remove(atom_ref)
- return
-
- proc/delete_dossier(var/print) //Deletes a Dossier at a given location.
- if(files && files.len)
- files.Remove(print)
- return
-
- detective
- icon_state = "old"
- name = "PowerScan Mk.I"
\ No newline at end of file
+ suit_fibers += "Material from a pair of [M.gloves.name]."
\ No newline at end of file
diff --git a/code/modules/DetectiveWork/evidence.dm b/code/modules/DetectiveWork/evidence.dm
index 0c414417813..807c6138406 100644
--- a/code/modules/DetectiveWork/evidence.dm
+++ b/code/modules/DetectiveWork/evidence.dm
@@ -1,4 +1,4 @@
-//CONTAINS: Evidence bags and fingerprint cards
+//CONTAINS: Evidence bags
/obj/item/weapon/evidencebag
name = "evidence bag"
@@ -8,17 +8,22 @@
item_state = ""
w_class = 1
-/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user as mob, proximity)
- if(!proximity) return
- if(!in_range(I, user))
+/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user,proximity)
+ if(!proximity || loc == I)
return
+ evidencebagEquip(I, user)
+/obj/item/weapon/evidencebag/attackby(obj/item/I, mob/user)
+ if(evidencebagEquip(I, user))
+ return 1
+
+/obj/item/weapon/evidencebag/proc/evidencebagEquip(obj/item/I, mob/user)
if(!istype(I) || I.anchored == 1)
- return ..()
+ return
if(istype(I, /obj/item/weapon/evidencebag))
user << "You find putting an evidence bag in another evidence bag to be slightly absurd."
- return
+ return 1 //now this is podracing
if(I.w_class > 3)
user << "[I] won't fit in [src]."
@@ -26,7 +31,7 @@
if(contents.len)
user << "[src] already has something inside it."
- return ..()
+ return
if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up.
if(istype(I.loc,/obj/item/weapon/storage)) //in a container.
@@ -40,8 +45,8 @@
else
return
- user.visible_message("[user] puts [I] into [src]", "You put [I] inside [src].",\
- "You hear a rustle as someone puts something into a plastic bag.")
+ user.visible_message("[user] puts [I] into [src].", "You put [I] inside [src].",\
+ "You hear a rustle as someone puts something into a plastic bag.")
icon_state = "evidence"
@@ -58,14 +63,13 @@
desc = "An evidence bag containing [I]. [I.desc]"
I.loc = src
w_class = I.w_class
- return
-
+ return 1
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
if(contents.len)
var/obj/item/I = contents[1]
- user.visible_message("[user] takes [I] out of [src]", "You take [I] out of [src].",\
- "You hear someone rustle around in a plastic bag, and remove something.")
+ user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\
+ "You hear someone rustle around in a plastic bag, and remove something.")
overlays.Cut() //remove the overlays
user.put_in_hands(I)
w_class = 1
@@ -88,24 +92,4 @@
new /obj/item/weapon/evidencebag(src)
new /obj/item/weapon/evidencebag(src)
..()
- return
-
-/obj/item/weapon/f_card
- name = "finger print card"
- desc = "Used to take fingerprints."
- icon = 'icons/obj/card.dmi'
- icon_state = "fingerprint0"
- var/amount = 10.0
- item_state = "paper"
- throwforce = 1
- w_class = 1.0
- throw_speed = 3
- throw_range = 5
-
-
-/obj/item/weapon/fcardholder
- name = "fingerprint card case"
- desc = "Apply finger print card."
- icon = 'icons/obj/items.dmi'
- icon_state = "fcardholder0"
- item_state = "clipboard"
+ return
\ No newline at end of file
diff --git a/code/modules/DetectiveWork/footprints_and_rag.dm b/code/modules/DetectiveWork/footprints_and_rag.dm
index 899498029d3..04df3a507e6 100644
--- a/code/modules/DetectiveWork/footprints_and_rag.dm
+++ b/code/modules/DetectiveWork/footprints_and_rag.dm
@@ -1,3 +1,4 @@
+
/mob
var/bloody_hands = 0
var/mob/living/carbon/human/bloody_hands_mob
@@ -26,19 +27,16 @@
can_be_placed_into = null
flags = FPRINT | TABLEPASS | OPENCONTAINER | NOBLUDGEON
-/obj/item/weapon/reagent_containers/glass/rag/attack_self(mob/user as mob)
- return
-
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(ismob(target) && target.reagents && reagents.total_volume)
- user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
+ user.visible_message("[user] has smothered \the [target] with \the [src]!", "You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
src.reagents.reaction(target, TOUCH)
- spawn(5) src.reagents.clear_reagents()
+ src.reagents.clear_reagents()
return
else
..()
-/obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
+/obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob,proximity)
if(!proximity) return
if(istype(A) && src in user)
user.visible_message("[user] starts to wipe down [A] with [src]!")
@@ -46,10 +44,3 @@
user.visible_message("[user] finishes wiping off the [A]!")
A.clean_blood()
return
-
-/obj/item/weapon/reagent_containers/glass/rag/examine()
- if (!usr)
- return
- usr << "That's \a [src]."
- usr << desc
- return
\ No newline at end of file
diff --git a/code/modules/DetectiveWork/scanner.dm b/code/modules/DetectiveWork/scanner.dm
index 48d4812bac1..38c65445bb0 100644
--- a/code/modules/DetectiveWork/scanner.dm
+++ b/code/modules/DetectiveWork/scanner.dm
@@ -1,401 +1,173 @@
//CONTAINS: Detective's Scanner
+// TODO: Split everything into easy to manage procs.
/obj/item/device/detective_scanner
- name = "Scanner"
- desc = "Used to scan objects for DNA and fingerprints."
+ name = "forensic scanner"
+ desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings."
icon_state = "forensic1"
- var/amount = 20.0
- var/list/stored = list()
w_class = 3.0
item_state = "electronic"
flags = FPRINT | TABLEPASS | CONDUCT | NOBLUDGEON
slot_flags = SLOT_BELT
+ var/scanning = 0
+ var/list/log = list()
- attackby(obj/item/weapon/f_card/W as obj, mob/user as mob)
- ..()
- if (istype(W, /obj/item/weapon/f_card))
- if (W.fingerprints)
- return
- if (src.amount == 20)
- return
- if (W.amount + src.amount > 20)
- src.amount = 20
- W.amount = W.amount + src.amount - 20
- else
- src.amount += W.amount
- //W = null
- del(W)
- add_fingerprint(user)
- if (W)
- W.add_fingerprint(user)
- return
+/obj/item/device/detective_scanner/attack_self(var/mob/user)
+ if(log.len && !scanning)
+ scanning = 1
+ user << "Printing report, please wait..."
- attack(mob/living/carbon/human/M as mob, mob/user as mob)
- if (!ishuman(M))
- user << "\red [M] is not human and cannot have the fingerprints."
- flick("forensic0",src)
- return 0
- if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
- user << "\blue No fingerprints found on [M]"
- flick("forensic0",src)
- return 0
- else
- if (src.amount < 1)
- user << text("\blue Fingerprints scanned on [M]. Need more cards to print.")
- else
- src.amount--
- var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
- F.amount = 1
- F.add_fingerprint(M)
- F.icon_state = "fingerprint1"
- F.name = text("FPrintC- '[M.name]'")
+ spawn(100)
- user << "\blue Done printing."
- user << "\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]"
- if ( !M.blood_DNA || !M.blood_DNA.len )
- user << "\blue No blood found on [M]"
- if(M.blood_DNA)
- del(M.blood_DNA)
- else
- user << "\blue Blood found on [M]. Analysing..."
- spawn(15)
- for(var/blood in M.blood_DNA)
- user << "\blue Blood type: [M.blood_DNA[blood]]\nDNA: [blood]"
- return
+ // Create our paper
+ var/obj/item/weapon/paper/P = new(get_turf(src))
+ P.name = "paper- 'Scanner Report'"
+ P.info = "Scanner Report
"
+ P.info += list2text(log, "
")
+ P.info += "
Notes:
"
+ P.info_links = P.info
- afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
- if(!proximity) return
- if(loc != user)
- return
- if(istype(A,/obj/machinery/computer/forensic_scanning)) //breaks shit.
- return
- if(istype(A,/obj/item/weapon/f_card))
- user << "The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\""
- flick("forensic0",src)
- return
+ if(ismob(loc))
+ var/mob/M = loc
+ M.put_in_hands(P)
+ M << "Report printed. Log cleared."
- add_fingerprint(user)
+ // Clear the logs
+ log = list()
+ scanning = 0
+ else
+ user << "The scanner has no logs or is in use."
+
+/obj/item/device/detective_scanner/attack(mob/living/M as mob, mob/user as mob)
+ return
- //Special case for blood splaters.
- if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable/blood/gibs))
- if(!isnull(A.blood_DNA))
- for(var/blood in A.blood_DNA)
- user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
- flick("forensic2",src)
- return
+/obj/item/device/detective_scanner/afterattack(atom/A, mob/user as mob, proximity)
+ scan(A, user)
- //General
- if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!",\
- "You hear a faint hum of electrical equipment.")
- flick("forensic0",src)
- return 0
+/obj/item/device/detective_scanner/proc/scan(var/atom/A, var/mob/user)
- if(add_data(A))
- user << "\blue Object already in internal memory. Consolidating data..."
- flick("forensic2",src)
- return
-
-
- //PRINTS
- if(!A.fingerprints || !A.fingerprints.len)
- if(A.fingerprints)
- del(A.fingerprints)
- else
- user << "\blue Isolated [A.fingerprints.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- var/list/complete_prints = list()
- for(var/i in A.fingerprints)
- var/print = A.fingerprints[i]
- if(stringpercent(print) <= FINGERPRINT_COMPLETE)
- complete_prints += print
- if(complete_prints.len < 1)
- user << "\blue No intact prints found"
- else
- user << "\blue Found [complete_prints.len] intact prints"
- for(var/i in complete_prints)
- user << "\blue [i]"
-
- //FIBERS
- if(A.suit_fibers)
- user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- flick("forensic2",src)
-
- //Blood
- if (A.blood_DNA)
- user << "\blue Blood found on [A]. Analysing..."
- spawn(15)
- for(var/blood in A.blood_DNA)
- user << "Blood type: \red [A.blood_DNA[blood]] \t \black DNA: \red [blood]"
- if(prob(80) || !A.fingerprints)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "You finish scanning \the [A].",\
- "You hear a faint hum of electrical equipment.")
- flick("forensic2",src)
- return 0
- else
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]\n[user.gender == MALE ? "He" : "She"] seems to perk up slightly at the readout." ,\
- "The results of the scan pique your interest.",\
- "You hear a faint hum of electrical equipment, and someone making a thoughtful noise.")
- flick("forensic2",src)
- return 0
- return
-
- proc/add_data(atom/A as mob|obj|turf|area)
- //I love associative lists.
- var/list/data_entry = stored["\ref [A]"]
- if(islist(data_entry)) //Yay, it was already stored!
- //Merge the fingerprints.
- var/list/data_prints = data_entry[1]
- for(var/print in A.fingerprints)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = A.fingerprints[print]
- else
- data_prints[print] = stringmerge(data_prints[print],A.fingerprints[print])
-
- //Now the fibers
- var/list/fibers = data_entry[2]
- if(!fibers)
- fibers = list()
- if(A.suit_fibers && A.suit_fibers.len)
- for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
- if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
- fibers += A.suit_fibers[j]
- var/list/blood = data_entry[3]
- if(!blood)
- blood = list()
- if(A.blood_DNA && A.blood_DNA.len)
- for(var/main_blood in A.blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = A.blood_DNA[blood]
- return 1
- var/list/sum_list[4] //Pack it back up!
- sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
- sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
- sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
- sum_list[4] = "\The [A] in \the [get_area(A)]"
- stored["\ref [A]"] = sum_list
- return 0
-
-/obj/item/device/detective_scanner/forger
- var/list/custom_forgery[3]
- var/forging = 0
-
- New()
- ..()
- custom_forgery[1] = list()
- custom_forgery[2] = list()
- custom_forgery[3] = list()
-
- attack_self(var/mob/user as mob)
- var/list/customprints = list()
- var/list/customfiber = list()
- var/list/customblood = list()
- if(forging)
- user << "\red You are already forging evidence"
- return 0
- clear_forgery()
- //fingerprint loop
- while(1)
- var/print = html_encode(input(usr,"Please enter a custom fingerprint or hit cancel to finish fingerprints") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!print )
- break
- customprints[print] = print
- while(1)
- var/fiber = html_encode(input(usr,"Please enter a custom fiber/material trace or hit cancel to finish fibers/materials") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!fiber)
- break
- customfiber[fiber] = null
- while(1)
- var/blood = html_encode(input(usr,"Please enter a custom Blood DNA or hit cancel to finish forging") as text|null)
- var/bloodtype = html_encode(input(usr,"Please enter a custom Blood Type") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!blood)
- break
- customblood[blood] = bloodtype
- forging = 0
- if(!customprints.len && !customfiber.len)
- user << "\blue No forgery saved."
- return
- user << "\blue Forgery saved and will be tied to the next applicable scanned item."
- custom_forgery[1] = customprints ? customprints.Copy() : null
- custom_forgery[2] = customfiber ? customfiber.Copy() : null
- custom_forgery[3] = customblood ? customblood.Copy() : null
-
-//shameless copy pasting
- afterattack(atom/A as obj|turf|area, mob/user as mob)
- var/list/custom_finger = list()
- var/list/custom_fiber = list()
- var/list/custom_blood = list()
-
- if(custom_forgery)
- custom_finger = custom_forgery[1]
- custom_fiber = custom_forgery[2]
- custom_blood = custom_forgery[3]
-
- if(!in_range(A,user))
+ if(!scanning)
+ // Can remotely scan objects and mobs.
+ if(!in_range(A, user) && !(A in view(world.view, user)))
return
if(loc != user)
return
- if(istype(A,/obj/machinery/computer/forensic_scanning)) //breaks shit.
- return
- if(istype(A,/obj/item/weapon/f_card))
- user << "The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\""
- return
- add_fingerprint(user)
+ scanning = 1
+
+ user.visible_message("\The [user] points the [src.name] at \the [A] and performs a forensic scan.")
+ user << "You scan \the [A]. The scanner is now analysing the results..."
- //Special case for blood splaters.
- if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune))
- if(!isnull(A.blood_DNA))
- for(var/blood in A.blood_DNA)
- user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
- return
+ // GATHER INFORMATION
- //General
- if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA)
- if(!custom_finger.len && !custom_fiber.len && !custom_blood.len)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!",\
- "You hear a faint hum of electrical equipment.")
- return 0
+ //Make our lists
+ var/list/fingerprints = list()
+ var/list/blood = list()
+ var/list/fibers = list()
+ var/list/reagents = list()
+
+ var/target_name = A.name
+
+ // Start gathering
+
+ if(A.blood_DNA && A.blood_DNA.len)
+ blood = A.blood_DNA.Copy()
+
+ if(A.suit_fibers && A.suit_fibers.len)
+ fibers = A.suit_fibers.Copy()
+
+ if(ishuman(A))
+
+ var/mob/living/carbon/human/H = A
+ if (istype(H.dna, /datum/dna) && !H.gloves)
+ fingerprints += md5(H.dna.uni_identity)
+
+ else if(!ismob(A))
+
+ if(A.fingerprints && A.fingerprints.len)
+ fingerprints = A.fingerprints.Copy()
+
+ // Only get reagents from non-mobs.
+ if(A.reagents && A.reagents.reagent_list.len)
+
+ for(var/datum/reagent/R in A.reagents.reagent_list)
+ reagents[R.name] = R.volume
+
+ // Get blood data from the blood reagent.
+ if(istype(R, /datum/reagent/blood))
+
+ if(R.data["blood_DNA"] && R.data["blood_type"])
+ var/blood_DNA = R.data["blood_DNA"]
+ var/blood_type = R.data["blood_type"]
+ blood[blood_DNA] = blood_type
+
+ // We gathered everything. Create a fork and slowly display the results to the holder of the scanner.
+
+ spawn(0)
+
+ var/found_something = 0
+ add_log("[worldtime2text()][get_timestamp()] - [target_name]", 0)
+
+ // Fingerprints
+ if(fingerprints && fingerprints.len)
+ sleep(30)
+ add_log("Prints:")
+ for(var/finger in fingerprints)
+ add_log("[finger]")
+ found_something = 1
+
+ // Blood
+ if (blood && blood.len)
+ sleep(30)
+ add_log("Blood:")
+ found_something = 1
+ for(var/B in blood)
+ add_log("Type: [blood[B]] DNA: [B]")
+
+ //Fibers
+ if(fibers && fibers.len)
+ sleep(30)
+ add_log("Fibers:")
+ for(var/fiber in fibers)
+ add_log("[fiber]")
+ found_something = 1
+
+ //Reagents
+ if(reagents && reagents.len)
+ sleep(30)
+ add_log("Reagents:")
+ for(var/R in reagents)
+ add_log("Reagent: [R] Volume: [reagents[R]]")
+ found_something = 1
+
+ // Get a new user
+ var/mob/holder = null
+ if(ismob(src.loc))
+ holder = src.loc
+
+ if(!found_something)
+ add_log("# No forensic traces found #", 0) // Don't display this to the holder user
+ if(holder)
+ holder << "Unable to locate any fingerprints, materials, fibers, or blood on \the [target_name]!"
else
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A], loading custom forgery instead.",\
- "You hear a faint hum of electrical equipment.")
+ if(holder)
+ holder << "You finish scanning \the [target_name]."
-
- if(add_data(A))
- user << "\blue Object already in internal memory. Consolidating data..."
+ add_log("---------------------------------------------------------", 0)
+ scanning = 0
return
+/obj/item/device/detective_scanner/proc/add_log(var/msg, var/broadcast = 1)
+ if(scanning)
+ if(broadcast && ismob(loc))
+ var/mob/M = loc
+ M << msg
+ log += " [msg]"
+ else
+ CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!")
- //PRINTS
- if(!A.fingerprints || !A.fingerprints.len)
- if(A.fingerprints)
- del(A.fingerprints)
- if(custom_finger.len)
- user << "\blue Isolated [custom_finger.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- user << "\blue Found [custom_finger.len] intact prints"
- for(var/i in custom_finger)
- user << "\blue [i]"
- else if(A.fingerprints && A.fingerprints.len)
- user << "\blue Isolated [A.fingerprints.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- var/list/complete_prints = list()
- for(var/i in A.fingerprints)
- var/print = A.fingerprints[i]
- if(stringpercent(print) <= FINGERPRINT_COMPLETE)
- complete_prints += print
- if(complete_prints.len < 1)
- user << "\blue No intact prints found"
- else
- user << "\blue Found [complete_prints.len] intact prints"
- for(var/i in complete_prints)
- user << "\blue [i]"
-
- //FIBERS
- if(custom_fiber.len)
- user << "\blue Forged Fibers/Materials Data Found: Scan with Hi-Res Forensic Scanner to retrieve."
- else if(A.suit_fibers)
- user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
-
-
- //Blood
- if(custom_blood.len)
- user << "\blue Forged Blood found. Analysing..."
- spawn(15)
- for(var/blood in custom_blood)
- user << "Blood type: \red [custom_blood[blood]] \t \black DNA: \red [blood]"
- else if (A.blood_DNA)
- user << "\blue Blood found on [A]. Analysing..."
- spawn(15)
- for(var/blood in A.blood_DNA)
- user << "Blood type: \red [A.blood_DNA[blood]] \t \black DNA: \red [blood]"
- return
-
- add_data(atom/A as mob|obj|turf|area)
- //I love associative lists.
- var/list/data_entry = stored["\ref [A]"]
- var/list/custom_finger = list()
- var/list/custom_fiber = list()
- var/list/custom_blood = list()
-
- if(custom_forgery)
- custom_finger = custom_forgery[1]
- custom_fiber = custom_forgery[2]
- custom_blood = custom_forgery[3]
-
- if(islist(data_entry)) //Yay, it was already stored!
- //Merge the fingerprints.
- var/list/data_prints = data_entry[1]
- if(custom_finger.len)
- for(var/print in custom_finger)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = custom_finger
- else
- data_prints[print] = stringmerge(data_prints[print],custom_finger[print])
- else
- for(var/print in A.fingerprints)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = A.fingerprints[print]
- else
- data_prints[print] = stringmerge(data_prints[print],A.fingerprints[print])
-
- //Now the fibers
- var/list/fibers = data_entry[2]
- if(!fibers)
- fibers = list()
- if(custom_fiber.len)
- for(var/j = 1, j <= custom_fiber.len, j++) //Fibers~~~
- if(!fibers.Find(custom_fiber[j])) //It isn't! Add!
- fibers += custom_fiber[j]
-
- else if(A.suit_fibers && A.suit_fibers.len)
- for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
- if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
- fibers += A.suit_fibers[j]
- var/list/blood = data_entry[3]
- if(!blood)
- blood = list()
- if(custom_blood.len)
- for(var/main_blood in custom_blood)
- if(!blood[main_blood])
- blood[main_blood] = custom_blood[blood]
- else if(A.blood_DNA && A.blood_DNA.len)
- for(var/main_blood in A.blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = A.blood_DNA[blood]
- return 1
- var/list/sum_list[4] //Pack it back up!
- if(custom_finger.len || custom_fiber.len || custom_blood.len)
- sum_list[1] = custom_finger ? custom_finger.Copy() : null
- sum_list[2] = custom_fiber ? custom_fiber.Copy() : null
- sum_list[3] = custom_blood ? custom_blood.Copy() : null
- else
- sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
- sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
- sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
- sum_list[4] = "\The [A] in \the [get_area(A)]"
- stored["\ref [A]"] = sum_list
- clear_forgery()
- return 0
-
- proc/clear_forgery()
- if(custom_forgery.len)
- custom_forgery[1] = list()
- custom_forgery[2] = list()
- custom_forgery[3] = list()
\ No newline at end of file
+/proc/get_timestamp()
+ return time2text(world.time + 432000, ":ss")
\ No newline at end of file
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 1a95fb5595f..87ffd249bdb 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -9,7 +9,7 @@
while sprite_sheets should be used for "flexible" clothing items that do not need to be refitted (e.g. vox wearing jumpsuits).
*/
var/list/sprite_sheets_refit = null
-
+
//BS12: Species-restricted clothing check.
/obj/item/clothing/mob_can_equip(M as mob, slot)
@@ -53,12 +53,12 @@
icon_override = sprite_sheets[target_species]
else
icon_override = initial(icon_override)
-
+
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
icon = sprite_sheets_obj[target_species]
else
icon = initial(icon)
-
+
//Ears: currently only used for headsets and earmuffs
/obj/item/clothing/ears
name = "ears"
@@ -153,6 +153,7 @@ BLIND // can't see anything
body_parts_covered = HANDS
slot_flags = SLOT_GLOVES
attack_verb = list("challenged")
+ var/transfer_prints = FALSE
var/pickpocket = 0 //Master pickpocket?
var/clipped = 0
species_restricted = list("exclude","Unathi","Tajaran")
@@ -181,7 +182,7 @@ BLIND // can't see anything
set src in usr
..()
return
-
+
/obj/item/clothing/under/proc/set_sensors(mob/usr as mob)
var/mob/M = usr
if (istype(M, /mob/dead/)) return
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 6e42aac7e44..6aa8c1c8d7d 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -63,6 +63,7 @@
siemens_coefficient = 0.30
permeability_coefficient = 0.01
_color="white"
+ transfer_prints = TRUE
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/mask.dmi'
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
deleted file mode 100644
index 48d4812bac1..00000000000
--- a/code/modules/detectivework/scanner.dm
+++ /dev/null
@@ -1,401 +0,0 @@
-//CONTAINS: Detective's Scanner
-
-
-/obj/item/device/detective_scanner
- name = "Scanner"
- desc = "Used to scan objects for DNA and fingerprints."
- icon_state = "forensic1"
- var/amount = 20.0
- var/list/stored = list()
- w_class = 3.0
- item_state = "electronic"
- flags = FPRINT | TABLEPASS | CONDUCT | NOBLUDGEON
- slot_flags = SLOT_BELT
-
- attackby(obj/item/weapon/f_card/W as obj, mob/user as mob)
- ..()
- if (istype(W, /obj/item/weapon/f_card))
- if (W.fingerprints)
- return
- if (src.amount == 20)
- return
- if (W.amount + src.amount > 20)
- src.amount = 20
- W.amount = W.amount + src.amount - 20
- else
- src.amount += W.amount
- //W = null
- del(W)
- add_fingerprint(user)
- if (W)
- W.add_fingerprint(user)
- return
-
- attack(mob/living/carbon/human/M as mob, mob/user as mob)
- if (!ishuman(M))
- user << "\red [M] is not human and cannot have the fingerprints."
- flick("forensic0",src)
- return 0
- if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
- user << "\blue No fingerprints found on [M]"
- flick("forensic0",src)
- return 0
- else
- if (src.amount < 1)
- user << text("\blue Fingerprints scanned on [M]. Need more cards to print.")
- else
- src.amount--
- var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
- F.amount = 1
- F.add_fingerprint(M)
- F.icon_state = "fingerprint1"
- F.name = text("FPrintC- '[M.name]'")
-
- user << "\blue Done printing."
- user << "\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]"
- if ( !M.blood_DNA || !M.blood_DNA.len )
- user << "\blue No blood found on [M]"
- if(M.blood_DNA)
- del(M.blood_DNA)
- else
- user << "\blue Blood found on [M]. Analysing..."
- spawn(15)
- for(var/blood in M.blood_DNA)
- user << "\blue Blood type: [M.blood_DNA[blood]]\nDNA: [blood]"
- return
-
- afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
- if(!proximity) return
- if(loc != user)
- return
- if(istype(A,/obj/machinery/computer/forensic_scanning)) //breaks shit.
- return
- if(istype(A,/obj/item/weapon/f_card))
- user << "The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\""
- flick("forensic0",src)
- return
-
- add_fingerprint(user)
-
-
- //Special case for blood splaters.
- if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable/blood/gibs))
- if(!isnull(A.blood_DNA))
- for(var/blood in A.blood_DNA)
- user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
- flick("forensic2",src)
- return
-
- //General
- if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!",\
- "You hear a faint hum of electrical equipment.")
- flick("forensic0",src)
- return 0
-
- if(add_data(A))
- user << "\blue Object already in internal memory. Consolidating data..."
- flick("forensic2",src)
- return
-
-
- //PRINTS
- if(!A.fingerprints || !A.fingerprints.len)
- if(A.fingerprints)
- del(A.fingerprints)
- else
- user << "\blue Isolated [A.fingerprints.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- var/list/complete_prints = list()
- for(var/i in A.fingerprints)
- var/print = A.fingerprints[i]
- if(stringpercent(print) <= FINGERPRINT_COMPLETE)
- complete_prints += print
- if(complete_prints.len < 1)
- user << "\blue No intact prints found"
- else
- user << "\blue Found [complete_prints.len] intact prints"
- for(var/i in complete_prints)
- user << "\blue [i]"
-
- //FIBERS
- if(A.suit_fibers)
- user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- flick("forensic2",src)
-
- //Blood
- if (A.blood_DNA)
- user << "\blue Blood found on [A]. Analysing..."
- spawn(15)
- for(var/blood in A.blood_DNA)
- user << "Blood type: \red [A.blood_DNA[blood]] \t \black DNA: \red [blood]"
- if(prob(80) || !A.fingerprints)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "You finish scanning \the [A].",\
- "You hear a faint hum of electrical equipment.")
- flick("forensic2",src)
- return 0
- else
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]\n[user.gender == MALE ? "He" : "She"] seems to perk up slightly at the readout." ,\
- "The results of the scan pique your interest.",\
- "You hear a faint hum of electrical equipment, and someone making a thoughtful noise.")
- flick("forensic2",src)
- return 0
- return
-
- proc/add_data(atom/A as mob|obj|turf|area)
- //I love associative lists.
- var/list/data_entry = stored["\ref [A]"]
- if(islist(data_entry)) //Yay, it was already stored!
- //Merge the fingerprints.
- var/list/data_prints = data_entry[1]
- for(var/print in A.fingerprints)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = A.fingerprints[print]
- else
- data_prints[print] = stringmerge(data_prints[print],A.fingerprints[print])
-
- //Now the fibers
- var/list/fibers = data_entry[2]
- if(!fibers)
- fibers = list()
- if(A.suit_fibers && A.suit_fibers.len)
- for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
- if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
- fibers += A.suit_fibers[j]
- var/list/blood = data_entry[3]
- if(!blood)
- blood = list()
- if(A.blood_DNA && A.blood_DNA.len)
- for(var/main_blood in A.blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = A.blood_DNA[blood]
- return 1
- var/list/sum_list[4] //Pack it back up!
- sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
- sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
- sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
- sum_list[4] = "\The [A] in \the [get_area(A)]"
- stored["\ref [A]"] = sum_list
- return 0
-
-/obj/item/device/detective_scanner/forger
- var/list/custom_forgery[3]
- var/forging = 0
-
- New()
- ..()
- custom_forgery[1] = list()
- custom_forgery[2] = list()
- custom_forgery[3] = list()
-
- attack_self(var/mob/user as mob)
- var/list/customprints = list()
- var/list/customfiber = list()
- var/list/customblood = list()
- if(forging)
- user << "\red You are already forging evidence"
- return 0
- clear_forgery()
- //fingerprint loop
- while(1)
- var/print = html_encode(input(usr,"Please enter a custom fingerprint or hit cancel to finish fingerprints") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!print )
- break
- customprints[print] = print
- while(1)
- var/fiber = html_encode(input(usr,"Please enter a custom fiber/material trace or hit cancel to finish fibers/materials") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!fiber)
- break
- customfiber[fiber] = null
- while(1)
- var/blood = html_encode(input(usr,"Please enter a custom Blood DNA or hit cancel to finish forging") as text|null)
- var/bloodtype = html_encode(input(usr,"Please enter a custom Blood Type") as text|null)
- if(!usr.client)
- forging = 0
- break
- if(!blood)
- break
- customblood[blood] = bloodtype
- forging = 0
- if(!customprints.len && !customfiber.len)
- user << "\blue No forgery saved."
- return
- user << "\blue Forgery saved and will be tied to the next applicable scanned item."
- custom_forgery[1] = customprints ? customprints.Copy() : null
- custom_forgery[2] = customfiber ? customfiber.Copy() : null
- custom_forgery[3] = customblood ? customblood.Copy() : null
-
-//shameless copy pasting
- afterattack(atom/A as obj|turf|area, mob/user as mob)
- var/list/custom_finger = list()
- var/list/custom_fiber = list()
- var/list/custom_blood = list()
-
- if(custom_forgery)
- custom_finger = custom_forgery[1]
- custom_fiber = custom_forgery[2]
- custom_blood = custom_forgery[3]
-
- if(!in_range(A,user))
- return
- if(loc != user)
- return
- if(istype(A,/obj/machinery/computer/forensic_scanning)) //breaks shit.
- return
- if(istype(A,/obj/item/weapon/f_card))
- user << "The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\""
- return
-
- add_fingerprint(user)
-
-
- //Special case for blood splaters.
- if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune))
- if(!isnull(A.blood_DNA))
- for(var/blood in A.blood_DNA)
- user << "\blue Blood type: [A.blood_DNA[blood]]\nDNA: [blood]"
- return
-
- //General
- if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA)
- if(!custom_finger.len && !custom_fiber.len && !custom_blood.len)
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!",\
- "You hear a faint hum of electrical equipment.")
- return 0
- else
- user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
- "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A], loading custom forgery instead.",\
- "You hear a faint hum of electrical equipment.")
-
-
- if(add_data(A))
- user << "\blue Object already in internal memory. Consolidating data..."
- return
-
-
- //PRINTS
- if(!A.fingerprints || !A.fingerprints.len)
- if(A.fingerprints)
- del(A.fingerprints)
- if(custom_finger.len)
- user << "\blue Isolated [custom_finger.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- user << "\blue Found [custom_finger.len] intact prints"
- for(var/i in custom_finger)
- user << "\blue [i]"
- else if(A.fingerprints && A.fingerprints.len)
- user << "\blue Isolated [A.fingerprints.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
- var/list/complete_prints = list()
- for(var/i in A.fingerprints)
- var/print = A.fingerprints[i]
- if(stringpercent(print) <= FINGERPRINT_COMPLETE)
- complete_prints += print
- if(complete_prints.len < 1)
- user << "\blue No intact prints found"
- else
- user << "\blue Found [complete_prints.len] intact prints"
- for(var/i in complete_prints)
- user << "\blue [i]"
-
- //FIBERS
- if(custom_fiber.len)
- user << "\blue Forged Fibers/Materials Data Found: Scan with Hi-Res Forensic Scanner to retrieve."
- else if(A.suit_fibers)
- user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
-
-
- //Blood
- if(custom_blood.len)
- user << "\blue Forged Blood found. Analysing..."
- spawn(15)
- for(var/blood in custom_blood)
- user << "Blood type: \red [custom_blood[blood]] \t \black DNA: \red [blood]"
- else if (A.blood_DNA)
- user << "\blue Blood found on [A]. Analysing..."
- spawn(15)
- for(var/blood in A.blood_DNA)
- user << "Blood type: \red [A.blood_DNA[blood]] \t \black DNA: \red [blood]"
- return
-
- add_data(atom/A as mob|obj|turf|area)
- //I love associative lists.
- var/list/data_entry = stored["\ref [A]"]
- var/list/custom_finger = list()
- var/list/custom_fiber = list()
- var/list/custom_blood = list()
-
- if(custom_forgery)
- custom_finger = custom_forgery[1]
- custom_fiber = custom_forgery[2]
- custom_blood = custom_forgery[3]
-
- if(islist(data_entry)) //Yay, it was already stored!
- //Merge the fingerprints.
- var/list/data_prints = data_entry[1]
- if(custom_finger.len)
- for(var/print in custom_finger)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = custom_finger
- else
- data_prints[print] = stringmerge(data_prints[print],custom_finger[print])
- else
- for(var/print in A.fingerprints)
- var/merged_print = data_prints[print]
- if(!merged_print)
- data_prints[print] = A.fingerprints[print]
- else
- data_prints[print] = stringmerge(data_prints[print],A.fingerprints[print])
-
- //Now the fibers
- var/list/fibers = data_entry[2]
- if(!fibers)
- fibers = list()
- if(custom_fiber.len)
- for(var/j = 1, j <= custom_fiber.len, j++) //Fibers~~~
- if(!fibers.Find(custom_fiber[j])) //It isn't! Add!
- fibers += custom_fiber[j]
-
- else if(A.suit_fibers && A.suit_fibers.len)
- for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~
- if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add!
- fibers += A.suit_fibers[j]
- var/list/blood = data_entry[3]
- if(!blood)
- blood = list()
- if(custom_blood.len)
- for(var/main_blood in custom_blood)
- if(!blood[main_blood])
- blood[main_blood] = custom_blood[blood]
- else if(A.blood_DNA && A.blood_DNA.len)
- for(var/main_blood in A.blood_DNA)
- if(!blood[main_blood])
- blood[main_blood] = A.blood_DNA[blood]
- return 1
- var/list/sum_list[4] //Pack it back up!
- if(custom_finger.len || custom_fiber.len || custom_blood.len)
- sum_list[1] = custom_finger ? custom_finger.Copy() : null
- sum_list[2] = custom_fiber ? custom_fiber.Copy() : null
- sum_list[3] = custom_blood ? custom_blood.Copy() : null
- else
- sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
- sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
- sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
- sum_list[4] = "\The [A] in \the [get_area(A)]"
- stored["\ref [A]"] = sum_list
- clear_forgery()
- return 0
-
- proc/clear_forgery()
- if(custom_forgery.len)
- custom_forgery[1] = list()
- custom_forgery[2] = list()
- custom_forgery[3] = list()
\ No newline at end of file
diff --git a/code/modules/mining/surprises/vg.dm b/code/modules/mining/surprises/vg.dm
index 120df968390..ade364ef084 100644
--- a/code/modules/mining/surprises/vg.dm
+++ b/code/modules/mining/surprises/vg.dm
@@ -120,14 +120,14 @@
w_cand -= weed_turf
if(weed_turf.density)
continue
- if(locate(/obj/effect/alien) in weed_turf)
+ if(locate(/obj/structure/alien) in weed_turf)
continue
if(weed_turf && !egged)
- new /obj/effect/alien/weeds/node(weed_turf)
+ new /obj/structure/alien/weeds/node(weed_turf)
weeds += weed_turf
break
for(var/e=0;e= maxHealth - getCloneLoss())
adjustToxLoss(plasma_rate)
else
@@ -79,7 +79,7 @@
if(!environment)
return
-
+
var/loc_temp = T0C
if(istype(loc, /obj/mecha))
var/obj/mecha/M = loc
@@ -193,7 +193,7 @@
/mob/living/carbon/alien/setDNA()
return
-
+
/mob/living/carbon/alien/verb/nightvisiontoggle()
set name = "Toggle Night Vision"
set category = "Alien"
@@ -243,7 +243,7 @@ Des: Removes all infected images from the alien.
/mob/living/carbon/alien/larva/updatePlasmaDisplay()
return
-
+
#undef HEAT_DAMAGE_LEVEL_1
#undef HEAT_DAMAGE_LEVEL_2
#undef HEAT_DAMAGE_LEVEL_3
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index c496d107000..4efc0c56dc6 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -23,25 +23,15 @@ Doesn't work on other aliens/AI.*/
set desc = "Plants some alien weeds"
set category = "Alien"
- if(locate(/obj/effect/alien/weeds/node) in get_turf(src))
+ if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
src << "There's already a weed node here."
- return
-
- if(constructing)
- src << "You are already constructing something."
return
-
+
if(powerc(50,1))
- constructing = 1
- stunned = 5
- src << "You start planting a weed node."
- spawn(30)
- adjustToxLoss(-50)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] has planted some alien weeds!"), 1)
- new /obj/effect/alien/weeds/node(loc)
- constructing = 0
- stunned = 0
+ adjustToxLoss(-50)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] has planted some alien weeds!"), 1)
+ new /obj/structure/alien/weeds/node(loc)
return
/mob/living/carbon/alien/humanoid/verb/whisp(mob/M as mob in oview())
@@ -106,7 +96,7 @@ Doesn't work on other aliens/AI.*/
return
adjustToxLoss(-200)
- new /obj/effect/alien/acid(get_turf(O), O)
+ new /obj/effect/acid(get_turf(O), O)
visible_message("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!")
else
src << "Target is too far away."
@@ -136,37 +126,24 @@ Doesn't work on other aliens/AI.*/
return
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
- set name = "Secrete Resin (75)"
+ set name = "Secrete Resin (55)"
set desc = "Secrete tough malleable resin."
set category = "Alien"
- if(powerc(75))
- if(constructing)
- src << "You are already constructing something."
- return
- var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin door","resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
-
- if(!choice || !powerc(75))
- return
-
- constructing = 1
- stunned = 5
- src << "You start shaping a [choice]."
- spawn(60)
- adjustToxLoss(-75)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1)
- switch(choice)
- if("resin door")
- new /obj/structure/mineral_door/resin(loc)
- if("resin wall")
- new /obj/effect/alien/resin/wall(loc)
- if("resin membrane")
- new /obj/effect/alien/resin/membrane(loc)
- if("resin nest")
- new /obj/structure/stool/bed/nest(loc)
- constructing = 0
- stunned = 0
+ if(powerc(55))
+ var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
+
+ if(!choice || !powerc(55)) return
+ adjustToxLoss(-55)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1)
+ switch(choice)
+ if("resin wall")
+ new /obj/structure/alien/resin/wall(loc)
+ if("resin membrane")
+ new /obj/structure/alien/resin/membrane(loc)
+ if("resin nest")
+ new /obj/structure/stool/bed/nest(loc)
return
/mob/living/carbon/alien/humanoid/verb/regurgitate()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index b8f412a488e..a06482242c2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -7,7 +7,7 @@
max_plasma = 250
icon_state = "aliens_s"
plasma_rate = 10
-
+
/mob/living/carbon/alien/humanoid/sentinel/large
name = "alien praetorian"
icon = 'icons/mob/alienlarge.dmi'
@@ -23,8 +23,8 @@
maxHealth = 200
health = 200
move_delay_add = 1
- large = 1
-
+ large = 1
+
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
update_hud() //TODO: remove the need for this to be here
@@ -38,7 +38,7 @@
icon_state = "prat_s"
for(var/image/I in overlays_standing)
overlays += I
-
+
/mob/living/carbon/alien/humanoid/sentinel/New()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
@@ -70,7 +70,7 @@
else
healths.icon_state = "health6"
-
+/*
/mob/living/carbon/alien/humanoid/sentinel/verb/evolve() // -- TLE
set name = "Evolve (250)"
set desc = "Become a Praetorian, Royal Guard to the Queen."
@@ -89,4 +89,4 @@
new_xeno.mind.name = new_xeno.name
del(src)
return
-
\ No newline at end of file
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
index b8853854594..867804f87c2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
@@ -77,26 +77,15 @@
/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
- set category = "Alien"
-
- if(locate(/obj/effect/alien/egg) in get_turf(src))
+ set category = "Alien"
+
+ if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "There's already an egg here."
return
-
- if(constructing)
- src << "You are already constructing something."
- return
-
- if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
- constructing = 1
- stunned = 5
- src << "You start laying an egg."
- spawn(30)
- adjustToxLoss(-250)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\green [src] has laid an egg!"), 1)
- new /obj/effect/alien/egg(loc)
- constructing = 0
- stunned = 0
+
+ if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-75)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\green [src] has laid an egg!"), 1)
+ new /obj/structure/alien/egg(loc)
return
-
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 6b74e420835..1652529c290 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -10,11 +10,10 @@
var/next_attack = 0
update_icon = 1
var/leap_on_click = 0
- var/constructing = 0
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/humanoid/New()
- var/datum/reagents/R = new/datum/reagents(100)
+ var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "alien")
@@ -52,15 +51,15 @@
/mob/living/carbon/alien/humanoid/movement_delay()
var/tally = 0
if (istype(src, /mob/living/carbon/alien/humanoid/queen))
- tally += 5
+ tally += 4
if (istype(src, /mob/living/carbon/alien/humanoid/drone))
- tally += 2
+ tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
- tally += 1
+ tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/hunter))
- tally = -1 // hunters go supersuperfast
+ tally = -2 // hunters go supersuperfast
return (tally + move_delay_add + config.alien_delay)
-
+
/mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0)
return 1
@@ -250,7 +249,7 @@
if (M_HULK in M.mutations)//M_HULK SMASH
damage += 14
spawn(0)
- Weaken(damage) // Why can a hulk knock an alien out but not knock out a human? Damage is robust enough.
+ Paralyse(1)
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
@@ -259,7 +258,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has punched []!", M, src), 1)
if (damage > 9||prob(5))//Regular humans have a very small chance of weakening an alien.
- Weaken(1,5)
+ Paralyse(2)
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2)
@@ -274,7 +273,7 @@
if ("disarm")
if (!lying)
if (prob(5))//Very small chance to push an alien down.
- Weaken(2)
+ Paralyse(2)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -321,4 +320,4 @@
/mob/living/carbon/alien/humanoid/canBeHandcuffed()
- return 1
+ return 1
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 082431574d4..2c4ba4a7e43 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -7,8 +7,6 @@
status_flags = CANPARALYSE
heal_rate = 5
plasma_rate = 20
- move_delay_add = 2
- max_plasma = 1000
large = 1
/mob/living/carbon/alien/humanoid/queen/New()
@@ -58,29 +56,19 @@
//Queen verbs
/mob/living/carbon/alien/humanoid/queen/verb/lay_egg()
- set name = "Lay Egg (250)"
+ set name = "Lay Egg (75)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
- if(locate(/obj/effect/alien/egg) in get_turf(src))
+ if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "There's already an egg here."
return
-
- if(constructing)
- src << "You are already constructing something."
- return
-
- if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
- constructing = 1
- stunned = 5
- src << "You start laying an egg."
- spawn(60)
- adjustToxLoss(-250)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] has laid an egg!"), 1)
- new /obj/effect/alien/egg(loc)
- constructing = 0
- stunned = 0
- return
+
+ if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-75)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] has laid an egg!"), 1)
+ new /obj/structure/alien/egg(loc)
+ return
/mob/living/carbon/alien/humanoid/queen/large
@@ -104,7 +92,7 @@
overlays += I
-
+/*
/mob/living/carbon/alien/humanoid/queen/verb/evolve() // -- TLE
set name = "Evolve (1000)"
set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time."
@@ -134,3 +122,4 @@
src << "We already have an alive empress."
return
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 9165334ab2d..5515c951514 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -2,7 +2,7 @@
name = "alien larva"
real_name = "alien larva"
icon_state = "larva0"
- pass_flags = PASSTABLE
+ pass_flags = PASSTABLE | PASSMOB
maxHealth = 30
health = 30
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 6b8cb9477d6..20f31ae24e5 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -514,11 +514,11 @@
Suit Storage: [(s_store ? s_store : "Nothing")]
Left Pocket ([l_store ? (pickpocket ? l_store.name : "Full") : "Empty"])
Right Pocket ([r_store ? (pickpocket ? r_store.name : "Full") : "Empty"])
-
Empty Both Pockets
+
Empty Both Pockets
[(handcuffed ? text("Handcuffed") : text("Not Handcuffed"))]
[(legcuffed ? text("Legcuffed") : text(""))]
[(suit) ? ((suit.hastie) ? text("
Remove Accessory", src) : "") :]
- [(internal ? text("
Remove Internal") : "")]
+ [(internal ? text("
Remove Internal") : "")]
Remove Splints
Refresh
Close
@@ -1602,6 +1602,10 @@
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
threatcount -= 5
+ // Pingsky now actually harbors anti-human sentiment! -Dave
+ if(istype(judgebot, /obj/machinery/bot/secbot/pingsky) && istype(src, /mob/living/carbon/human/human/))
+ threatcount += 1
+
return threatcount
/mob/living/carbon/human/canBeHandcuffed()
diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm
index 7d71cd3d029..64d74d916de 100644
--- a/code/modules/mob/living/carbon/human/human_attackalien.dm
+++ b/code/modules/mob/living/carbon/human/human_attackalien.dm
@@ -39,20 +39,19 @@
apply_damage(damage, BRUTE, affecting, armor_block)
if (damage >= 25)
visible_message("\red [M] has wounded [src]!")
- apply_effect(rand(0.5,3), WEAKEN, armor_block)
+ apply_effect(4, WEAKEN, armor_block)
updatehealth()
if("disarm")
- if (prob(80))
+ var/randn = rand(1, 100)
+ if (randn <= 80)
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
- Weaken(rand(0.5,3))
+ Weaken(5)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has tackled down []!", M, src), 1)
- if (prob(25))
- M.Weaken(rand(2,4))
else
- if (prob(80))
+ if (randn <= 99)
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
drop_item()
visible_message(text("\red [] disarmed []!", M, src))
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 04821e153fd..1e695cc2f1c 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -1,6 +1,8 @@
/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
+ if(istype(mover) && mover.checkpass(PASSMOB))
+ return 1
if(ismob(mover))
var/mob/moving_mob = mover
if ((other_mobs && moving_mob.other_mobs))
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index 23496fc1f7b..624c2f19e19 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -73,7 +73,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
// Damaged heart virtually reduces the blood volume, as the blood isn't
// being pumped properly anymore.
var/datum/organ/internal/heart/heart = internal_organs_by_name["heart"]
-
+
if(heart)
if(heart.damage > 1 && heart.damage < heart.min_bruised_damage)
blood_volume *= 0.8
@@ -314,13 +314,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
return D
return res
-proc/blood_incompatible(donor,receiver)
- if(!donor || !receiver) return 0
- var
- donor_antigen = copytext(donor,1,lentext(donor))
- receiver_antigen = copytext(receiver,1,lentext(receiver))
- donor_rh = (findtext(donor,"+")>0)
- receiver_rh = (findtext(receiver,"+")>0)
+/proc/blood_incompatible(donor,receiver)
+
+ var/donor_antigen = copytext(donor,1,lentext(donor))
+ var/receiver_antigen = copytext(receiver,1,lentext(receiver))
+ var/donor_rh = findtext("+",donor)
+ var/receiver_rh = findtext("+",receiver)
+
if(donor_rh && !receiver_rh) return 1
switch(receiver_antigen)
if("A")
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 526a631ef36..2fa168c2afc 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1505,8 +1505,8 @@ datum
O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1)
reaction_obj(var/obj/O, var/volume)
- if(istype(O,/obj/effect/alien/weeds/))
- var/obj/effect/alien/weeds/alien_weeds = O
+ if(istype(O,/obj/structure/alien/weeds/))
+ var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
alien_weeds.healthcheck()
else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it
diff --git a/code/setup.dm b/code/setup.dm
index 6fa44e39477..67b3535be1f 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -222,6 +222,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define PASSGLASS 2
#define PASSGRILLE 4
#define PASSBLOB 8
+#define PASSMOB 16
//turf-only flags
#define NOJAUNT 1
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index fbd4e4100d3..203ac1ede50 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi
index 903e241c1dc..a5e120020a2 100644
Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ
diff --git a/icons/mob/in-hand/tools.dmi b/icons/mob/in-hand/tools.dmi
index f57d831c8c2..eba8ad5fb95 100644
Binary files a/icons/mob/in-hand/tools.dmi and b/icons/mob/in-hand/tools.dmi differ
diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi
index 00826a8344b..c5a7bc0fe64 100644
Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index f1f803b92ba..56c2f38dcc0 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -203,7 +203,7 @@
"adU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/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/carpet,/area/security/hos)
"adV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/security/hos)
"adW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
-"adX" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/radio,/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
+"adX" = (/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/hallway/primary/fore)
"adY" = (/obj/machinery/space_heater,/obj/machinery/light_switch{pixel_x = -25},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/security/podbay)
"adZ" = (/obj/spacepod/sec{req_access_txt = "71"},/turf/simulated/floor/engine,/area/security/podbay)
"aea" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "dark"},/area/security/evidence)
@@ -1078,11 +1078,11 @@
"auL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet{name = "Evidence Closet"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
"auM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
"auN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/structure/table,/obj/item/weapon/folder/red{pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
-"auO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/table,/obj/item/weapon/fcardholder,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
+"auO" = (/obj/machinery/light,/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"auP" = (/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{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
"auQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"auR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
-"auS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
+"auS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"auT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"auU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"auV" = (/obj/structure/closet/secure_closet/personal,/obj/structure/window/basic{dir = 8},/obj/structure/window/basic,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
@@ -1104,7 +1104,7 @@
"avl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"avm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"avn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
-"avo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/med_data,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
+"avo" = (/obj/machinery/computer/med_data,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"avp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area)
"avq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"avr" = (/obj/machinery/vending/chinese,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
@@ -1155,7 +1155,7 @@
"awk" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"awl" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"awm" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
-"awn" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
+"awn" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/table,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office)
"awo" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area)
"awp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"awq" = (/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
@@ -1199,7 +1199,6 @@
"axc" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"axd" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"axe" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
-"axf" = (/obj/machinery/computer/forensic_scanning,/obj/machinery/light,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"axg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"axh" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
"axi" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
@@ -1542,10 +1541,10 @@
"aDH" = (/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
"aDI" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
"aDJ" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor,/area/crew_quarters/fitness)
-"aDK" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aDL" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aDM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aDN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
+"aDK" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/radio,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
+"aDL" = (/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aDM" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aDN" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/clothing/head/bearpelt,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aDO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
@@ -1579,10 +1578,10 @@
"aEs" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/crew_quarters/fitness)
"aEt" = (/obj/structure/table/woodentable,/obj/item/weapon/coin/silver,/turf/simulated/floor,/area/crew_quarters/fitness)
"aEu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/crew_quarters/fitness)
-"aEv" = (/obj/machinery/door/window/westright{name = "Boxing Ring"},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aEw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aEx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aEy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
+"aEv" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aEw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aEx" = (/obj/item/weapon/gift,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aEy" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/machinery/newscaster{pixel_y = 32},/obj/item/toy/prize/ripley,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aEz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/clothing/gloves/boxing,/turf/simulated/floor,/area/crew_quarters/fitness)
"aEA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/fitness)
"aEB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
@@ -1631,9 +1630,9 @@
"aFs" = (/obj/structure/table/woodentable,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/crew_quarters/fitness)
"aFt" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck,/turf/simulated/floor,/area/crew_quarters/fitness)
"aFu" = (/obj/structure/table,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/clothing/gloves/boxing,/turf/simulated/floor,/area/crew_quarters/fitness)
-"aFv" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aFw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aFx" = (/obj/machinery/door/window/eastleft{name = "Boxing Ring"},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
+"aFv" = (/obj/structure/noticeboard{pixel_y = 32},/obj/item/weapon/gift,/obj/item/clothing/head/kitty/mouse,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aFw" = (/obj/machinery/hologram/holopad,/obj/structure/table/woodentable,/obj/item/candle,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aFx" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"aFy" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
"aFz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness)
"aFA" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness)
@@ -1678,10 +1677,10 @@
"aGn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
"aGo" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "Cryogenics"; name = "Cryodorms"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
"aGp" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor,/area/crew_quarters/fitness)
-"aGq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aGr" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aGs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
-"aGt" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
+"aGq" = (/obj/item/weapon/gift,/turf/simulated/floor/carpet,/area/chapel/main)
+"aGr" = (/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/carpet,/area/chapel/main)
+"aGs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/carpet,/area/chapel/main)
+"aGt" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/area/crew_quarters/bar)
"aGu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/obj/structure/grille,/obj/structure/window/basic{dir = 8},/obj/structure/window/basic{dir = 4},/obj/structure/window/basic{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aGv" = (/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/crew_quarters/fitness)
"aGw" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/crew_quarters/fitness)
@@ -1900,7 +1899,7 @@
"aKB" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aKC" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aKD" = (/obj/machinery/camera{c_tag = "Bar Storage"; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"aKE" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"aKE" = (/turf/simulated/floor/plating/snow,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/area/crew_quarters/bar)
"aKF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aKG" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/storage/art)
"aKH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/storage/art)
@@ -2127,10 +2126,10 @@
"aOU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aOV" = (/obj/structure/closet/coffin,/obj/structure/window/basic{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aOW" = (/obj/structure/closet/coffin,/obj/machinery/door/window/eastleft{name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aOX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aOY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aOZ" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aPa" = (/obj/machinery/light/small{dir = 1},/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{icon_state = "dark"},/area/chapel/main)
+"aOX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/table/reinforced,/obj/item/clothing/head/bearpelt,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
+"aOY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"aOZ" = (/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"aPa" = (/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aPb" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access_txt = "22"},/obj/machinery/mass_driver{dir = 1; id = "chapelgun"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/chapel/main)
"aPc" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/escapepodbay)
"aPd" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/crowbar/red,/turf/simulated/floor,/area/escapepodbay)
@@ -2225,10 +2224,10 @@
"aQO" = (/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)
"aQP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQQ" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
-"aQR" = (/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)
+"aQR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aQS" = (/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aQT" = (/obj/structure/closet/coffin,/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aQU" = (/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"aQU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aQV" = (/turf/simulated/wall,/area/chapel/main)
"aQW" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "Escape Podbay APC"; pixel_x = -25},/turf/simulated/floor,/area/escapepodbay)
"aQX" = (/turf/simulated/floor,/area/escapepodbay)
@@ -2283,7 +2282,7 @@
"aRU" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/crew_quarters/bar)
"aRV" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aRW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
-"aRX" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/clothing/under/sundress,/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
+"aRX" = (/obj/item/toy/crossbow/tommygun,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aRY" = (/obj/machinery/camera{c_tag = "Kitchen Freezer"; network = list("SS13")},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aRZ" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aSa" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
@@ -2304,8 +2303,8 @@
"aSp" = (/obj/structure/table/woodentable,/obj/item/weapon/nullrod,/obj/item/device/eftpos{eftpos_name = "Chapel EFTPOS scanner"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aSq" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aSr" = (/obj/structure/closet/coffin,/obj/machinery/door/window/eastleft{dir = 8; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
-"aSs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"aSt" = (/obj/structure/table,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"aSs" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aSt" = (/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"aSu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/escapepodbay)
"aSv" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/arrival/station)
"aSw" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/shuttle/arrival/station)
@@ -2346,9 +2345,9 @@
"aTf" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Bar"; departmentType = 2; name = "Bar RC"; pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aTg" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aTh" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aTi" = (/obj/machinery/power/apc{dir = 1; name = "Bar APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
-"aTj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
-"aTk" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aTi" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/stool,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aTj" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aTk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aTl" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aTm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aTn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
@@ -2379,8 +2378,8 @@
"aTM" = (/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{name = "Crematorium"; req_access_txt = "27"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aTN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aTO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
-"aTP" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"aTQ" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
+"aTP" = (/turf/simulated/floor/plating/snow,/area)
+"aTQ" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/plating/snow,/area)
"aTR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/escapepodbay)
"aTS" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor,/area/escapepodbay)
"aTT" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/unary/vent_pump,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/escapepodbay)
@@ -2445,9 +2444,9 @@
"aVa" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aVb" = (/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aVc" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/lighter/zippo,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aVd" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
-"aVe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
-"aVf" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aVd" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/plating/snow,/area)
+"aVe" = (/obj/item/clothing/head/bearpelt,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aVf" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aVg" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aVh" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aVi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
@@ -2476,9 +2475,9 @@
"aVF" = (/obj/machinery/power/apc{dir = 8; name = "Chapel Office APC"; pixel_x = -25},/obj/structure/cable,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aVG" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aVH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
-"aVI" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/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/chapel/main)
-"aVJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aVK" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"aVI" = (/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aVJ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table/woodentable,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/suit/holidaypriest,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aVK" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"aVL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Escape Pod Bay"},/turf/simulated/floor,/area/escapepodbay)
"aVM" = (/turf/simulated/wall/r_wall,/area/escapepodbay)
"aVN" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/arrival/station)
@@ -2519,8 +2518,8 @@
"aWw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aWx" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aWy" = (/obj/machinery/door/window{dir = 4; name = "Bar Door"; req_access_txt = "25"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aWz" = (/turf/simulated/floor/carpet,/area/crew_quarters/bar)
-"aWA" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aWz" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/clothing/head/bearpelt,/obj/item/clothing/head/bearpelt,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/ushanka,/turf/simulated/floor,/area/hallway/secondary/entry)
+"aWA" = (/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow,/area)
"aWB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aWC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aWD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/gibber,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
@@ -2589,9 +2588,9 @@
"aXO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/slot_machine,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aXP" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aXQ" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aXR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
+"aXR" = (/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area)
"aXS" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = 2; pixel_y = 6},/obj/item/weapon/pen/blue{pixel_x = -3; pixel_y = 2},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aXT" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
+"aXT" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"aXU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/freezer{req_access_txt = "28"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aXV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
"aXW" = (/turf/simulated/floor/grass,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/hydroponics)
@@ -2614,11 +2613,11 @@
"aYn" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"aYo" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/eftpos{eftpos_name = "Library EFTPOS scanner"},/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "Camera"; pictures_left = 30; pixel_x = 0; pixel_y = 0},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"aYp" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/machinery/camera{c_tag = "Library Study"; dir = 8; network = list("SS13")},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
-"aYq" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aYr" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"aYs" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"aYt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"aYu" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"aYq" = (/obj/structure/table,/obj/machinery/light/small,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aYr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aYs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"aYt" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
+"aYu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
"aYv" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aYw" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"aYx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2663,8 +2662,8 @@
"aZk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aZl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aZm" = (/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"aZn" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"aZo" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"aZn" = (/obj/machinery/power/apc{dir = 1; name = "Bar APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/flora/grass/brown,/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
+"aZo" = (/obj/structure/table,/obj/item/weapon/toy/xmas_cracker,/obj/item/weapon/toy/xmas_cracker,/obj/item/weapon/toy/xmas_cracker,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"aZp" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
"aZq" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"aZr" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
@@ -2683,13 +2682,13 @@
"aZE" = (/obj/machinery/light/small,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"aZF" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"aZG" = (/obj/structure/cult/tome,/obj/item/device/videocam,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
-"aZH" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"aZI" = (/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
-"aZJ" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aZK" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"aZL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
+"aZH" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/clothing/under/sundress,/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
+"aZI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/hallway/secondary/exit)
+"aZJ" = (/turf/simulated/floor/plating/snow,/area/hallway/secondary/exit)
+"aZK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating/snow,/area/hallway/secondary/exit)
+"aZL" = (/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
"aZM" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aZN" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"aZN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
"aZO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"aZP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit)
"aZQ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2699,7 +2698,7 @@
"aZU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area)
"aZV" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aZW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry)
-"aZX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/turf/simulated/floor,/area/hallway/secondary/entry)
+"aZX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
"aZY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_security{name = "Security Checkpoint"; req_access_txt = "68"},/turf/simulated/floor,/area/security/checkpoint)
"aZZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/checkpoint)
"baa" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint)
@@ -2759,9 +2758,9 @@
"bbc" = (/obj/structure/bookcase{name = "bookcase (Fiction)"},/turf/simulated/floor/wood,/area/library)
"bbd" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library)
"bbe" = (/obj/machinery/door/morgue{dir = 2; name = "Private Study"; req_access_txt = "37"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
-"bbf" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"bbf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/gift,/turf/simulated/floor/carpet,/area/chapel/main)
"bbg" = (/turf/simulated/floor/carpet,/area/chapel/main)
-"bbh" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"bbh" = (/obj/item/toy/nuke,/turf/simulated/floor/carpet,/area/chapel/main)
"bbi" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bbj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/hallway/secondary/exit)
"bbk" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2772,7 +2771,7 @@
"bbp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"bbq" = (/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/hallway/secondary/entry)
"bbr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry)
-"bbs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
+"bbs" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/carpet,/area/chapel/main)
"bbt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint)
"bbu" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint)
"bbv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/machinery/door/window/brigdoor{dir = 1; name = "Customs Desk"; pixel_y = 6; req_access_txt = "68"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint)
@@ -2802,13 +2801,13 @@
"bbT" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge)
"bbU" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 5},/area/bridge)
"bbV" = (/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},/turf/simulated/floor/plating,/area/crew_quarters/bar)
-"bbW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bbX" = (/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bbW" = (/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow,/area/crew_quarters/bar)
+"bbX" = (/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/hallway/primary/central/ne)
"bbY" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (WEST)"; icon_state = "wooden_chair_wings"; dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bbZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bca" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bcb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bcc" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bca" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/gift,/turf/simulated/floor/carpet,/area/chapel/main)
+"bcb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/chapel/main)
+"bcc" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/item/toy/carpplushie,/turf/simulated/floor/carpet,/area/chapel/main)
"bcd" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bce" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bcf" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
@@ -2825,11 +2824,11 @@
"bcq" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 8; icon_state = "right"; name = "Library Desk Door"; req_access_txt = "37"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library)
"bcr" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/library)
"bcs" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/library)
-"bct" = (/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"bcu" = (/obj/structure/stool,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"bcv" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
-"bcw" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/stool,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"bcx" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"bct" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"bcu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/flora/grass/green,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"bcv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"bcw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/flora/ausbushes/pointybush,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"bcx" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"bcy" = (/obj/machinery/vending/snack,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"bcz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bcA" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2841,7 +2840,7 @@
"bcG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area)
"bcH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"bcI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/secondary/entry)
-"bcJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"bcJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"bcK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint)
"bcL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door_control{id = "customs-entrance2"; name = "Customs Entrance Open"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = 26; req_access_txt = "68"; specialfunctions = 1},/obj/machinery/door_control{id = "customs-entrance2"; name = "Customs Entrance Bolts"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = 26; req_access_txt = "68"; specialfunctions = 4},/turf/simulated/floor,/area/security/checkpoint)
"bcM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Customs Officer"},/turf/simulated/floor,/area/security/checkpoint)
@@ -2880,15 +2879,15 @@
"bdt" = (/obj/machinery/computer/med_data,/obj/machinery/camera{c_tag = "Bridge East"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge)
"bdu" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor{icon_state = "whitehall"; dir = 5},/area/bridge)
"bdv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area)
-"bdw" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Bar West"; dir = 4; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bdx" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bdy" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bdz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bdA" = (/obj/structure/table/woodentable,/obj/item/clothing/head/cakehat,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bdw" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bdx" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (WEST)"; icon_state = "wooden_chair_wings"; dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar)
+"bdy" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/obj/item/clothing/head/ushanka,/obj/item/clothing/head/ushanka,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar)
+"bdz" = (/obj/item/device/radio/intercom{pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light/small,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bdA" = (/obj/machinery/light,/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bdB" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bdC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/table,/obj/item/weapon/kitchen/utensil/knife{desc = "For making cutlets"; name = "Cutlet Knife"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bdD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
-"bdE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
+"bdE" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bdF" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bdG" = (/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bdH" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
@@ -2904,11 +2903,11 @@
"bdR" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/library)
"bdS" = (/obj/effect/landmark/start{name = "Librarian"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/library)
"bdT" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library)
-"bdU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"bdV" = (/obj/structure/stool,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"bdW" = (/obj/structure/stool,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"bdX" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/stool,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"bdY" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"bdU" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/obj/item/weapon/toy/xmas_cracker,/obj/item/weapon/toy/xmas_cracker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
+"bdV" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple,/obj/effect/decal/warning_stripes/east,/obj/item/candle,/turf/simulated/floor,/area/hallway/secondary/exit)
+"bdW" = (/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/plating/snow,/area/hallway/secondary/exit)
+"bdX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"bdY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"bdZ" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"bea" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/effect/decal/warning_stripes/southeastcorner,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor,/area/hallway/secondary/exit)
"beb" = (/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},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"},/obj/effect/decal/warning_stripes/north,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2923,7 +2922,7 @@
"bek" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"bel" = (/obj/machinery/vending/cola,/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"bem" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry)
-"ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"ben" = (/obj/structure/table/woodentable,/obj/item/clothing/suit/space/santa,/obj/item/weapon/storage/backpack/santabag,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"beo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint)
"bep" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/checkpoint)
"beq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/checkpoint)
@@ -2956,9 +2955,9 @@
"beR" = (/obj/machinery/camera{c_tag = "Bridge East Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne)
"beS" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne)
"beT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"beU" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"beV" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"beW" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"beU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/flora/tree/dead,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"beV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
+"beW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/structure/flora/grass/brown,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"beX" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"beY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"beZ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/weapon/packageWrap,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
@@ -2975,13 +2974,13 @@
"bfk" = (/obj/structure/table/woodentable,/obj/item/device/camera_film,/obj/item/device/camera_film,/turf/simulated/floor/wood,/area/library)
"bfl" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library)
"bfm" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/wood,/area/library)
-"bfn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"bfo" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"bfp" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
+"bfn" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Chapel South"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"bfo" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"bfp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool,/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"bfq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main)
-"bfr" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"bfs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
-"bft" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Chapel South"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"bfr" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"bfs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"bft" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bfu" = (/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Departure Lounge West"; dir = 4; network = list("SS13")},/obj/machinery/vending/cola,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"bfv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bfw" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2989,7 +2988,7 @@
"bfy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area)
"bfz" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area)
"bfA" = (/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
-"bfB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"bfB" = (/obj/structure/table/woodentable,/obj/item/weapon/toy/xmas_cracker,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bfC" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint)
"bfD" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = -30},/obj/structure/table/reinforced,/obj/machinery/recharger,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint)
"bfE" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint)
@@ -3028,12 +3027,12 @@
"bgl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne)
"bgm" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/ne)
"bgn" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/hallway/primary/central/ne)
-"bgo" = (/obj/structure/table/woodentable,/obj/item/candle,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bgo" = (/obj/structure/table/woodentable,/obj/item/clothing/head/festive,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bgp" = (/obj/structure/disposalpipe/segment,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bgq" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bgr" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bgs" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bgt" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
+"bgr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/woodentable,/obj/item/weapon/toy/xmas_cracker,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bgs" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/candle_box,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bgt" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bgu" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bgv" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bgw" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
@@ -3052,8 +3051,8 @@
"bgJ" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor/carpet,/area/chapel/main)
"bgK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main)
"bgL" = (/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
-"bgM" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
-"bgN" = (/obj/structure/bush,/turf/simulated/floor/grass,/area/hallway/secondary/exit)
+"bgM" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bgN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
"bgO" = (/obj/structure/spacepoddoor{luminosity = 3},/turf/simulated/floor/engine,/area/hallway/secondary/entry)
"bgP" = (/turf/simulated/floor/engine,/area/hallway/secondary/entry)
"bgQ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/hallway/secondary/entry)
@@ -3063,7 +3062,7 @@
"bgU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area)
"bgV" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/south)
"bgW" = (/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/hallway/secondary/entry)
-"bgX" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"bgX" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
"bgY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Embassies South"; dir = 4; network = list("SS13")},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/port/east)
"bgZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/port/east)
"bha" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/central/nw)
@@ -3104,10 +3103,10 @@
"bhJ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Library"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/library)
"bhK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/library)
"bhL" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor/carpet,/area/library)
-"bhM" = (/obj/machinery/camera{c_tag = "Departure Lounge East"; dir = 8; network = list("SS13")},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; id_tag = "escape_dock"; pixel_x = 30},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
-"bhN" = (/turf/simulated/floor/grass,/area/hallway/secondary/exit)
-"bhO" = (/turf/simulated/floor{desc = "\"This is a plaque in honour of those who died in the great space lube airlock incident.\" Scratched in beneath that is a crude image of a clown and a spaceman. The spaceman is slipping. The clown is laughing."; dir = 4; icon_state = "plaque"; name = "Memorial Plaque"; nitrogen = 30; oxygen = 70; temperature = 80},/area/hallway/secondary/exit)
-"bhP" = (/obj/structure/bush,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit)
+"bhM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"bhN" = (/obj/structure/table/woodentable,/obj/item/weapon/toy/xmas_cracker,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bhO" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bhP" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bhQ" = (/turf/space,/area/xenos_station/east)
"bhR" = (/obj/machinery/door/airlock/glass{name = "Public Pod Bay"},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bhS" = (/obj/structure/table,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/crew_quarters/recruit)
@@ -3136,12 +3135,12 @@
"bip" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{id_tag = "captainofficedoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"biq" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bir" = (/obj/machinery/media/jukebox/bar,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bis" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bis" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bit" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"biu" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"biu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/woodentable,/obj/item/weapon/toy/xmas_cracker,/obj/item/clothing/head/hardhat/reindeer,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"biv" = (/obj/machinery/camera{c_tag = "Bar South"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"biw" = (/obj/item/device/radio/intercom{pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"bix" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar)
+"biw" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Bar West"; dir = 4; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bix" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"biy" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
"biz" = (/obj/machinery/icemachine,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"biA" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
@@ -3160,9 +3159,9 @@
"biN" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/library)
"biO" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/light/small,/turf/simulated/floor/wood,/area/library)
"biP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/library)
-"biQ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"biQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"biR" = (/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/chapel/main)
-"biS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"biS" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/flora/grass/brown,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"biT" = (/obj/machinery/power/apc{dir = 8; name = "Escape Hallway APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"biU" = (/obj/structure/spacepoddoor{luminosity = 3},/obj/machinery/door/poddoor/three_tile_ver{id = "arrivalspodbay"; layer = 3.1; req_access_txt = "13"},/turf/simulated/floor/engine,/area/hallway/secondary/entry)
"biV" = (/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "arrivalspodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "13"},/turf/simulated/floor/engine,/area/hallway/secondary/entry)
@@ -3320,8 +3319,8 @@
"blR" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/south)
"blS" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/secondary/entry)
"blT" = (/obj/machinery/camera{c_tag = "Arrivals South"; dir = 1; network = list("SS13"); pixel_x = 22},/turf/simulated/floor,/area/hallway/secondary/entry)
-"blU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/secondary/entry)
-"blV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"blU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/snow,/area/hallway/secondary/exit)
+"blV" = (/obj/machinery/camera{c_tag = "Departure Lounge East"; dir = 8; network = list("SS13")},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; id_tag = "escape_dock"; pixel_x = 30},/obj/effect/decal/warning_stripes/east,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/gloves/furgloves,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/ushanka,/turf/simulated/floor,/area/hallway/secondary/exit)
"blW" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/crew_quarters/recruit)
"blX" = (/turf/simulated/floor,/area/crew_quarters/recruit)
"blY" = (/obj/machinery/camera{c_tag = "Recruitment Lobby"; dir = 8; network = list("SS13")},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/crew_quarters/recruit)
@@ -3346,7 +3345,7 @@
"bmr" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"bms" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bmt" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"bmu" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/turf/simulated/floor/carpet,/area/crew_quarters/captain)
+"bmu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"bmv" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bmw" = (/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/east)
"bmx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/starboard/west)
@@ -3360,7 +3359,7 @@
"bmF" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bmG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bmH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
-"bmI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/secondary/entry)
+"bmI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/flora/grass/green,/turf/simulated/floor/plating/snow,/area/hallway/secondary/entry)
"bmJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
"bmK" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "grimy"},/area/embassy/slime)
"bmL" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "grimy"},/area/embassy/slime)
@@ -3499,7 +3498,7 @@
"bpo" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30; pixel_y = 0},/obj/structure/filingcabinet,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bpp" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bpq" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"bpr" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/coin/plasma,/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bpr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bps" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/camera,/obj/item/weapon/storage/photo_album{pixel_y = -10},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bpt" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw)
"bpu" = (/turf/simulated/floor,/area/hallway/primary/central/sw)
@@ -3517,7 +3516,7 @@
"bpG" = (/turf/simulated/floor{icon_state = "white"},/area/medical/reception)
"bpH" = (/obj/machinery/camera{c_tag = "Medbay Lobby East"; network = list("SS13")},/obj/structure/stool,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception)
"bpI" = (/obj/structure/stool,/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception)
-"bpJ" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/alarm{pixel_y = 26},/obj/structure/flora/kirbyplants,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/reception)
+"bpJ" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bpK" = (/obj/structure/filingcabinet,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical)
"bpL" = (/obj/machinery/disposal,/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical)
"bpM" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical)
@@ -4248,7 +4247,7 @@
"bDJ" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/obj/machinery/atm{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw)
"bDK" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor,/area/crew_quarters/heads)
"bDL" = (/turf/simulated/floor,/area/crew_quarters/heads)
-"bDM" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/device/megaphone,/turf/simulated/floor,/area/crew_quarters/heads)
+"bDM" = (/obj/item/candle,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bDN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/crew_quarters/heads)
"bDO" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads)
"bDP" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid,/area/server)
@@ -4773,7 +4772,7 @@
"bNO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bNP" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
"bNQ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
-"bNR" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
+"bNR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bNS" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
"bNT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
"bNU" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
@@ -5119,7 +5118,7 @@
"bUw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/wall,/area)
"bUx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area)
"bUy" = (/obj/machinery/light,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
-"bUz" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/item/device/megaphone,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
+"bUz" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchen"; name = "Kitchen Shutters"; opacity = 0},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wrapping_paper,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
"bUA" = (/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
"bUB" = (/obj/machinery/computer/crew,/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 6; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
"bUC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area)
@@ -6104,7 +6103,7 @@
"cnt" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 6},/turf/simulated/floor,/area/hallway/primary/aft)
"cnu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft)
"cnv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/aft)
-"cnw" = (/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)
+"cnw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
"cnx" = (/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)
"cny" = (/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)
"cnz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engine/break_room)
@@ -8176,6 +8175,7 @@
"dbl" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/wood{name = "Vox flooring"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbm" = (/obj/item/alien_embryo,/turf/simulated/floor/wood{name = "Vox flooring"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbn" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership)
+"dbo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
"dbp" = (/obj/structure/flora/grass/green,/turf/simulated/floor/grass{name = "Vox Grass"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbq" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/grass{name = "Vox Grass"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbr" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/grass{name = "Vox Grass"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
@@ -8194,6 +8194,7 @@
"dbE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"dbF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"dbG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start)
+"dbH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
"dbI" = (/obj/structure/flora/bush,/turf/simulated/floor/grass{name = "Vox Grass"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbJ" = (/obj/structure/flora/ausbushes/stalkybush,/turf/simulated/floor/grass{name = "Vox Grass"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
"dbK" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood{name = "Vox flooring"; nitrogen = 100; oxygen = 0},/area/alien{icon_state = "red2"; name = "\improper Vox base"})
@@ -10212,7 +10213,7 @@
"dOv" = (/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTH)"; icon_state = "pwall"; dir = 1},/area)
"dOw" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHWEST)"; icon_state = "pwall"; dir = 10},/area)
"dOx" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"dOy" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dOy" = (/obj/structure/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
"dOz" = (/turf/space,/area/mine/unexplored)
"dOA" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro)
"dOB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro)
@@ -10237,10 +10238,10 @@
"dOU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area)
"dOW" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area)
-"dOX" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
-"dOY" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
+"dOX" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dOY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
"dOZ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
-"dPa" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dPa" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dPb" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dPc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
"dPd" = (/turf/simulated/mineral/random,/area/mine/explored)
@@ -10300,7 +10301,7 @@
"dQf" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/mineral,/area/research_outpost/atmos)
"dQg" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dQh" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dQi" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dQi" = (/obj/structure/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
"dQj" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/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/research_outpost/hallway)
"dQl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
@@ -10332,8 +10333,8 @@
"dQL" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/atmos)
"dQM" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area)
"dQN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dQO" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dQP" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dQO" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dQP" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dQQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dQR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dQS" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10365,7 +10366,7 @@
"dRs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"dRv" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dRv" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
"dRw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dRx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dRy" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10392,9 +10393,9 @@
"dRT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRU" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dRV" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"dRW" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
-"dRX" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dRY" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
+"dRW" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dRX" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dRY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dRZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSa" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSb" = (/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10422,9 +10423,9 @@
"dSx" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dSy" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dSz" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"dSA" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dSA" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dSB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"dSC" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dSC" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dSD" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry)
"dSE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
@@ -10460,7 +10461,7 @@
"dTj" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dTk" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dTl" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dTm" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
+"dTm" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dTn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dTo" = (/obj/machinery/computer/shuttle_control/research{req_access_txt = "65"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dTp" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/entry)
@@ -10503,10 +10504,10 @@
"dUa" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUb" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/turf/space,/area/mine/abandoned)
"dUc" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned)
-"dUd" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dUd" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dUe" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned)
-"dUf" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dUg" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dUf" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dUg" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dUh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dUi" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dUj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry)
@@ -10549,10 +10550,10 @@
"dUU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUW" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned)
-"dUX" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"dUX" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dUY" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dUZ" = (/turf/simulated/floor/airless,/area/mine/abandoned)
-"dVa" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
+"dVa" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dVb" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dVc" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned)
"dVd" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned)
@@ -10596,12 +10597,12 @@
"dVP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting)
"dVQ" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
"dVR" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
-"dVS" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dVS" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
"dVT" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dVU" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"dVV" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dVU" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dVV" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
"dVW" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned)
-"dVX" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dVX" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dVY" = (/turf/simulated/mineral,/area/mine/explored)
"dVZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dWa" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/entry)
@@ -10640,7 +10641,7 @@
"dWH" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
"dWI" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dWJ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned)
-"dWK" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dWK" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
"dWL" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dWM" = (/turf/simulated/wall,/area/mine/unexplored)
"dWN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area)
@@ -10681,8 +10682,8 @@
"dXw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dXx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
"dXy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"dXz" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
-"dXA" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dXz" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"dXA" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dXB" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dXC" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dXD" = (/turf/simulated/wall,/area/research_outpost/gearstore)
@@ -10722,7 +10723,7 @@
"dYl" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor,/area/research_outpost/longtermstorage)
"dYm" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dYn" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned)
-"dYo" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dYo" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
"dYp" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dYq" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dYr" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/unexplored)
@@ -10759,7 +10760,7 @@
"dYW" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area)
"dYX" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
"dYY" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dYZ" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dYZ" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
"dZa" = (/turf/simulated/wall,/area/mine/explored)
"dZb" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dZc" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
@@ -10794,7 +10795,7 @@
"dZF" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dZG" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dZH" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
-"dZI" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"dZI" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dZJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dZK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
"dZL" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
@@ -10822,7 +10823,7 @@
"eah" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2)
"eai" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage)
"eaj" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
-"eak" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"eak" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"eal" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned)
"eam" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned)
"ean" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
@@ -12517,6 +12518,30 @@
"eGM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area)
"eGN" = (/obj/machinery/atmospherics/trinary/filter{density = 0; req_access = null},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"eGO" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
+"eGP" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGQ" = (/obj/machinery/door/window/westright{name = "Boxing Ring"},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGR" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGV" = (/obj/machinery/door/window/eastleft{name = "Boxing Ring"},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGW" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGX" = (/obj/structure/disposalpipe/segment,/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eGZ" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eHa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eHb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/snow,/area/crew_quarters/fitness)
+"eHc" = (/obj/machinery/light/small{dir = 1},/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{icon_state = "wood"},/area/chapel/main)
+"eHd" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/fancy/crayons,/obj/item/clothing/suit/space/santa,/obj/item/weapon/storage/backpack/santabag,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
+"eHe" = (/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "wood"},/area/chapel/main)
+"eHf" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/item/clothing/head/cakehat,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"eHg" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
+"eHh" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/item/device/megaphone,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
+"eHi" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/device/megaphone,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor,/area/crew_quarters/heads)
+"eHj" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/coin/plasma,/obj/item/device/megaphone,/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"eHk" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/alarm{pixel_y = 26},/obj/structure/snowman,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/reception)
+"eHl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/snowman,/turf/simulated/floor/plating/snow,/area/hallway/primary/aft)
+"eHm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/clothing/head/hardhat/reindeer,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12583,7 +12608,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaczacAacBacCacDacEacqaaiaaiaaiacFacGacHaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiacIacJacKacJacJacLaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaahaahaahaahaahaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiacNacOaaiaaiacPacQacRacSacTaaiaaiaaiacUacVacWacXaaiaaiacYacZadaadbadcaddaaiadeadfadgadhadiadjadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaahaahaahaahaahaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiadladmadnadoaaiadpadqaaiadracRadsacRadtacRaduaaiaaiadvadwadxadyaaiaaiadzadAadBadCacJadDaaiadEadiadiadiadiadjadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiadFadGadHadIaaiabVabSaaiadJacRadKadLadMacRadNaaiaaiadOadPadQadRaaiaaiadSadTadUadVadWadXaaiadYadiadZadiadiadjadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiadFadGadHadIaaiabVabSaaiadJacRadKadLadMacRadNaaiaaiadOadPadQadRaaiaaiadSadTadUadVadWaDKaaiadYadiadZadiadiadjadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaeaaebaecaaiaedaeeaefaefacDaegacqaaiaehacRadsacRadtacRaeiaaiaaiaejaekadQaelaaiaaiaemadAaenadCacJaeoaaiaepadiadiadiadiaeqadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaiaeraesaetaeuaevaewaevaexacDacEacqaaiaaiaeyaezaeAadtaeBaaiaaiaaiaeCaeDaeEaeFaaiaaiaeGaeHaeIacJaeJaeKaaiaeLaeMaeNaeNaeOaaiabAabLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaePaeQaeRaaiaeSaeQaeTaaiaaaaaiaeUaeVaeWaaiaaiaeXaaiaaiaaiaeYaeZaaiaaiafaadsafbadtafcaaiaaiafdafeaffaaiaaiaaiaaiafgafhafiafjafkaaiaaiaflafmafnafoafpaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12608,47 +12633,47 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqQaaaaaaaaaaframdaqTaqTaqTamdaaaaaaaaiaaiabnaaiaaiaflaaiarLaaiaaqaaqaaqarMarNaaqaaqaaqaaqarOarPaaqaaqaaqaaiarQarRarSarTarUarVaqBarWaaqarXarYarZasaabIasbascasdaseaqJasfamzasgashasiasjaskaslanDaaiasmasnaaiasoaspasqasrasrasrasrasrassaaiaaaaaaaaaafraabaoRaoSaoSaoSaoSaoTaoUaoVaoWaoWaoWaoWaoXaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaafqamdaqTaqTaqTamdaaiaaiaaiastasuasvaswasxasyaszaaiasAapiapjapkaplapmasBapoasCasDasEasFasGasHapmasIasJasKasLasMasMasNasOaaqasPasQasRasSaaqasTasUasVaqKaqJasWamzasgaqMashashashasXasYasZataatbaaiatcatdateatfatgathatiatiatjaaiaaaaaaaaaafraabapTapTapTapTapTaabapUaabapTapTapTapTapTaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiatkatlatmatnatoaaiaaaaaaaaaaaaaaaaqQaaaaaaaabaframdaqTaqTaqTatpamLatqamNatratsattatuatvattatwaaiaqhatxatyatzatAatBatCatDatEatFatGatHatIatJatKatLatMatMatNatMatMatOatPatQatRatSatTatUaaqatVatWatXatYatZauaamzasgaubaucaucaucaudaueaufaugauhaaiauiaujaukatfatfatfatfatfatfaaiaaaaaaaaaamIaaaaaaaaaaabaaaaaaaaaapUaaaaaaaaaaabaaaaaaaaaafqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiatkaulaumaunatkaaiaaaaaaaaaaaaaaaaqQaaaaaaaabaframdauoauoauoamdaaiaaiaaiaupauqaurausautauuauvaaiaqZauwauxauyauzarearfauAauBauCauDauBauEarmareauFauGauHauGauGauHauGauIaaqarXauJatTauKaaqauLauMauNauOauPauPauQauRaovaaqaaqaaqaaKaaqabnaaiaaiaaiauSauTauUatfauVauWauWauWauWaaiaaaaaaaaaafraabaosaosaosaosaosaabapUaabaosaosaosaosaosaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaiatkauXauYauZatkaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaframdavaavaavaamdaaqaaqaaqaaqaaqaaqaaiavbavcaaiaaiaaiaaiavdacDaveacDacDaveacDaveacDacDabuaaiaaiavfavgavhaviavgavhaviavjaaiaaiaaiaaiaaiaaqavkavlavmavmavnavoavpavqaaqavravsavtaaKavuavvavwavxaaqaaqavyaaKaaqaaqaaqaaqaaqaaqaaiaaaaaaaaaafqaabaoRaoSaoSaoSaoSaoTaoUaoVaoWaoWaoWaoWaoXaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaavzavAavBaaaavCavDavEaaiavFavGavHavGavIaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaafravJavKavKavKavLaaqavMavNavOavPavQavRavSavTavUavVavUavUavUavUavUavUavUavUavWavXavYavUavUavUavUavZavUavUavUavUawaawbawcawdaweawfawgawhaaqawiawjawkawlawmawnawoawpaaqawqawrawsaaKawtawuawtawvaaqawwawxawyawzawAawBawCawDawEaaiaaaaaaaaaafqaaaapTapTapTapTapTaabapUaabapTapTapTapTapTaaaafZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcaaaamcamcamcamcamcamcamcamcamcaaaamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaiawFawGawFaaiawHawIawHaaiawJawKawLawMawNaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqawOawPawQawRawRawSawTawUawaawaawaawaawaawaawaawaawaawaawVawaawaawaawaawaawaawWawaawaawaawaawXawaawYawaawZawaawaaxaaaqaxbaxcaxdaxeawkaxfawoaxgaaqaxhaxiaxjaxkawtaxlaxmavxaaqaxnaxoaxpaxqaxraxsaxraxtaxraaiaaaaaaaaaafqaaaaabaaaaaaaaaaaaaabapUaaaaaaaaaaaaaaaaabaaaafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcaaaaaaamcamcamcamcamcamcamcamcamcaaaaaaamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiatkaulaumaunatkaaiaaaaaaaaaaaaaaaaqQaaaaaaaabaframdauoauoauoamdaaiaaiaaiaupauqaurausautauuauvaaiaqZauwauxauyauzarearfauAauBauCauDauBauEarmareauFauGauHauGauGauHauGauIaaqarXauJatTauKaaqauLauMauNawnauPauPauQauRaovaaqaaqaaqaaKaaqabnaaiaaiaaiauSauTauUatfauVauWauWauWauWaaiaaaaaaaaaafraabaosaosaosaosaosaabapUaabaosaosaosaosaosaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaaaaaaaaaaaaaaaaaaaaaaiatkauXauYauZatkaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaframdavaavaavaamdaaqaaqaaqaaqaaqaaqaaiavbavcaaiaaiaaiaaiavdacDaveacDacDaveacDaveacDacDabuaaiaaiavfavgavhaviavgavhaviavjaaiaaiaaiaaiaaiaaqavkavlavmavmavnavmavpavqaaqavravsavtaaKavuavvavwavxaaqaaqavyaaKaaqaaqaaqaaqaaqaaqaaiaaaaaaaaaafqaabaoRaoSaoSaoSaoSaoTaoUaoVaoWaoWaoWaoWaoXaabafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaavzavAavBaaaavCavDavEaaiavFavGavHavGavIaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaafravJavKavKavKavLaaqavMavNavOavPavQavRavSavTavUavVavUavUavUavUavUavUavUavUavWavXavYavUavUavUavUavZavUavUavUavUawaadXawcawdaweawfawgawhaaqawiawjawkawlawmavoawoawpaaqawqawrawsaaKawtawuawtawvaaqawwawxawyawzawAawBawCawDawEaaiaaaaaaaaaafqaaaapTapTapTapTapTaabapUaabapTapTapTapTapTaaaafZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcaaaamcamcamcamcamcamcamcamcamcaaaamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaiawFawGawFaaiawHawIawHaaiawJawKawLawMawNaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqawOawPawQawRawRawSawTawUawaawaawaawaawaawaawaawaawaawaawVawaawaawaawaawaawaawWawaawaawaawaawXawaawYawaawZawaawaaxaaaqaxbaxcaxdaxeawkauOawoaxgaaqaxhaxiaxjaxkawtaxlaxmavxaaqaxnaxoaxpaxqaxraxsaxraxtaxraaiaaaaaaaaaafqaaaaabaaaaaaaaaaaaaabapUaaaaaaaaaaaaaaaaabaaaafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcaaaaaaamcamcamcamcamcamcamcamcamcaaaaaaamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaiawFaxuawFaaqawHaxvawHaaiaxwaxxaxyaxzaxAaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaxBaxCaxDaxEaxFaaqaxGaxHaxIaxIaxJaxKaxLaxIaxMaxIaxIaxIaxNaxIaxIaxIaxIaxIaxIaxOaxPaxQaxQaxQaxRaxSaxTaxSaxUaxVaxSaxWaaqaaiaaiaaiaaiaaiaaiawoawpaaqaxXawraxYaaKawtaxZawtawvaaqayaaybaycaxraydaxraxraxtayeaaiaaaaaaaaaafqafqafraaaaaaaaaaabaabapUaabaaaaaaaaaaaaafrafrafraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIanIanIanIaaaaaiayfaygayhaaqayiayjaykaaiaylaymaynayoaypaaiaaaaaaaaaaaaaaaaqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaaqaaqaaqaaqaaiaoyayqaaqayraysaytaaqayuaaqayvaywaaqayxaaqaaqaaqaaqaaqaaqaaqayyaaqaaqayzayAayBamzaaqaoyaaqayCaaqaaqapPanDanDanDanDanDayDawpaaqayEawrayFaaKayGaxlaxmavxaaqayHayIayJayKayKayLayKayMayNaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanIanIanIanIanIanIanIanIanIanIanIanIaaiaaiaaiaaiayPayQayRaaqayPayQayRaaiaySayTayUayVayWaaiaaaaaaaaaaaaaaaapVapWapWapWapWapWapWayXaaaaaaaaaaaaaaaaaaaaaaaaaaiayYayZaaqazaazbazcaaqazdaaqazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsawaawbaztazuazvazwazwazwazwazwazxazwazwazwazwazyazzazAazBazCazDazEazFazGawtawvaaqayHazHazIazJaxrazKazLazMazNaaiazOazPazPazPazPazPazQaaaaaaaaaaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcamcamcamcamcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazSazTazUazUazTaaiaaiaaiaaiaaiazVazWaaiaaqazXaaqaaiaaqazYaaqaaiazZaAaaAbazZaAcaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAdaAeaAdaaaaaaaaaaaaaaaaaaaaaaaiaAfaAgabXaAhaAiaAjaaqazdaaqaAkaAlaAmazhaAnaAoaApaApaApaApaApazpaApaAqavUawaawbaaqaAraAsabIabIabIabIaAtaAsabIabIabIabIabIabIaAuabIaAvaAwaAxabIaAyaAzaaqaaqaaqaAAaABaaqaaqamzaaqaaqaaqaaiaACaADaADaADaADaADaACaaiaaaaaaaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAEaAFaAGaAHaAIaAJaAKaAJaAJaALaAMaANaANaAOaANaAPaAQaARaASaATaAUaAVaAWaAVaAXaAYaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAZaBaaBbaaaaaaaaaaaaaaaaaaaaaaaiazdayZaaqaBcaBdaAjaaqazdaaqaBeaBfaBgazhaBhaApaApaBiaApaBjaBjazpaApaAqavUawaaBkaaqaBlaAsaBmaBnaBoaaqaBpaBqaBraBsaBtaBuaBvaBwaBxaByaBzaBAaBBaBCaBDaBEaBFaBGaBHaBIaBJaBKaBLaBMaBNaBOaBPaBQaACaADaADaADaADaADaACaaiaabaaaaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBRaBSaBTaBUaBVaBWaBXaBWaBYaBWaBZaCaaCbaBZaCcaCdaCeaCfaCgaChaCiaCiaCiaCiaCjaCkaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaClaCmaCnaCoaoOaoOaoOaoOaoOaoPaaiaaiazdayZaaqaCpaCqaCrabIaCsabIaCtaCuaCvaCwaziaCxaApaCyaCzaCAaCBaCCaCDaAqavUawaawbaaqasgaCEaCFaBnaBoaaqaCGaCHaCHaCHaCHaCHaCHaCHaCHaCHaCHaCIaCJaCKaCLaCMaCNaCOaCPaCQaCRaCPaCSaCTaCUaCPaCPaCVaCWaADaADaADaADaADaCWaaiaaiaaiaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiazTaaiaaiaaiaCXaCYaaiaCXaCYaaiaCXaCYaaiaCXaCYaaiaCZaDaaDaaDaaDaaDbaDcaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaDdaDeaDfaaiaDgaDhaDhaDhaDhaDhaDiaDjaDkaaqaDlaDmaDnaaqaDoaaqaDpaDqaDraDsaDtaCAaDuaDvaDwaDxaDyaDzaDAaDBaDCaDDaDEabXaDFaDGaDHaBnaBoaaqaDIaCHaCHaDJaDJaDJaCHaCHaCHaCHaDKaDLaDMaDNaDOaDPaDQaDRaDSaDSaDTaDSaDUaDSaDSaDSaDSaDVaDWaADaADaADaADaADaDXaDYaDZaEaaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaaaaEcaEdaEeaDaaDaaDaaDbaEfaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaEgaEhaEiaaiaEjaaiaaiaaiaaiaaiaaiaaiaEkaaqaElabXabXabXaEmabXaEnabXabXabXaEoabXabXaaFabXabXabXabXabtaovaEpawaaEqaaqasgaoyaEraBnaBoaaqaCGaCHaDJaEsaEsaEtaDJaCHaEuaCHaEvaEwaExaEyaEzaEAaEBaECaEAaEAaEDaEAaEEaEFaEGaEHaEuaEIaEaaADaADaADaADaADaEaaEJaEKaELaaaazRaaaaaaaaaaaaaaaaaaaaaaaqaaqaEMaENaENaENaENaEOaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaEPaEQaERaESaDaaDaaDaaDbaETaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaiaEUaEVaEWaaiaEjaaiaEXaEYaEZaFaaFbaaiaEkazdazdazdazdaFcaFdaFeaFfaFfaFfaFfaFgaFfaFhaFiaFjaFfaFfaFkaFkaFlaFmaFnaFoabIaFpaoyaFqaEraEraaqaCGaCHaDJaFraFsaFtaDJaCHaCHaFuaFvaEwaFwaFxaCHaCHaFyaFzaCHaCHaCHaCHaFAaFBaFCaFDaCHaFEaFFaADaADaADaADaADaFFaFGaEKaELaaaaFHaaaaaaaaaaaaaaaaaaaaqaaqaFIaFJaFKaFLaFMaFNaFOaFKaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaFPaFQaFRaFSaDaaDaaDaaDbaFTaaiaFUaFVaFWaFXaFYaaiaaiaaiaaiaaiaaiaFZaamaaiaEjaaiaFbaGaaGbaFbaFbaaiaGcaGdaGdaGdaGdaGeaGfaaiaaiaaiaaiafdabnaaiaGgaaiaflafdaaiaaiaaiaaiaGhaGiaGjaGkaGlaDGaGmaGnaEraGoaCGaCHaDJaGpaEsaEsaDJaCHaCHaCHaGqaGraGsaGtaCHaCHaFyaGuaGvaGwaGwaGwaGxaCHaCHaDOaCHaGyaGzaADaADaADaADaADaGAaGBaGCaFFaGDaGEaGDaaaaaaaaaaaqaaqaaqaGFaFLaGGaFLaGHaGIaFLaFLaFLaGJaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiazTaaiaaiaaiaCXaCYaaiaCXaCYaaiaCXaCYaaiaCXaCYaaiaCZaDaaDaaDaaDaaDbaDcaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaDdaDeaDfaaiaDgaDhaDhaDhaDhaDhaDiaDjaDkaaqaDlaDmaDnaaqaDoaaqaDpaDqaDraDsaDtaCAaDuaDvaDwaDxaDyaDzaDAaDBaDCaDDaDEabXaDFaDGaDHaBnaBoaaqaDIaCHaCHaDJaDJaDJaCHaCHaCHaCHdbHeGPcnwdboaDOaDPaDQaDRaDSaDSaDTaDSaDUaDSaDSaDSaDSaDVaDWaADaADaADaADaADaDXaDYaDZaEaaaaazRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaaaaEcaEdaEeaDaaDaaDaaDbaEfaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaEgaEhaEiaaiaEjaaiaaiaaiaaiaaiaaiaaiaEkaaqaElabXabXabXaEmabXaEnabXabXabXaEoabXabXaaFabXabXabXabXabtaovaEpawaaEqaaqasgaoyaEraBnaBoaaqaCGaCHaDJaEsaEsaEtaDJaCHaEuaCHeGQeGReGSeGTaEzaEAaEBaECaEAaEAaEDaEAaEEaEFaEGaEHaEuaEIaEaaADaADaADaADaADaEaaEJaEKaELaaaazRaaaaaaaaaaaaaaaaaaaaaaaqaaqaEMaENaENaENaENaEOaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaEPaEQaERaESaDaaDaaDaaDbaETaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaiaEUaEVaEWaaiaEjaaiaEXaEYaEZaFaaFbaaiaEkazdazdazdazdaFcaFdaFeaFfaFfaFfaFfaFgaFfaFhaFiaFjaFfaFfaFkaFkaFlaFmaFnaFoabIaFpaoyaFqaEraEraaqaCGaCHaDJaFraFsaFtaDJaCHaCHaFueGWeGXeGUeGVaCHaCHaFyaFzaCHaCHaCHaCHaFAaFBaFCaFDaCHaFEaFFaADaADaADaADaADaFFaFGaEKaELaaaaFHaaaaaaaaaaaaaaaaaaaaqaaqaFIaFJaFKaFLaFMaFNaFOaFKaaqaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaFPaFQaFRaFSaDaaDaaDaaDbaFTaaiaFUaFVaFWaFXaFYaaiaaiaaiaaiaaiaaiaFZaamaaiaEjaaiaFbaGaaGbaFbaFbaaiaGcaGdaGdaGdaGdaGeaGfaaiaaiaaiaaiafdabnaaiaGgaaiaflafdaaiaaiaaiaaiaGhaGiaGjaGkaGlaDGaGmaGnaEraGoaCGaCHaDJaGpaEsaEsaDJaCHaCHaCHeGYeGZeHaeHbaCHaCHaFyaGuaGvaGwaGwaGwaGxaCHaCHaDOaCHaGyaGzaADaADaADaADaADaGAaGBaGCaFFaGDaGEaGDaaaaaaaaaaaqaaqaaqaGFaFLaGGaFLaGHaGIaFLaFLaFLaGJaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaGKaGLaERaESaDaaDaaDaaDbaETaaiaGMaGNaGOaGPaGQaaiaGRaGSaGTaGTaGTaGUaGTaGTaEjaaiaGVaGWaGXaGYaGZaaiaHaaHbaHaaHaazdazdaDoaaiaHcaHdaHeaHfaHgaHhaHiaHjaHkaHlaHmaHdaHnaaiaHoawaaHpaaqaHqaoyaHraHsaHsaHtaHuaHvaHwaHxaHxaHyaHzaEAaHAaHzaHzaHBaHCaHDaCHaCHaHEaHFaHGaHHaHHaHHaHIaHJaFCaDOaCHaHKaHLaADaADaADaADaADaHMaaiaaiaaiaAZaHNaAZaaaaaaaaqaaqaHOaaqaHPaHQaHRaHSaFLaFLaHTaHUaFLaHVaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEbaEbaEbaEbaEbaEbaEbaEbaHWaHXaHYaHZaDaaDaaDaaDbaETaaiaIaaIbaIcaIdaIeaaqaIfaIgaIhaIiaIiaIjaDhaDhaIkaaiaFbaGaaIlaFbaFbaaiaImazdaInaHaazdazdaDoaaiaIoaIoaIpaIqaIraIsaItaIsaIuaIvaIwaIxaIxaaiaHoawaaIyaaqaHqaoyaEraBnaBoaaqaCGaIzaIAaIBaICaIDaIDaIEaIFaIDaIFaIGaIHaIIaIJaIKaILaIMaINaIOaIPaIQaIRaaqaISaITaISaaqaIUaADaADaADaADaADaIVaaiaabaoNaCmaIWaIXaAaaaaaaqaIYaIZaJaaJbaJcaJdaFLaFLaFLaJeaJfaFLaJgaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaaiaaiaaiaaiaCXaJhaJiaaiaCXaJhaJiaaiaaiaaiaaiaJjaDaaDaaDaaDaaDbaJkaaiaJlaJmaJnaJoaJpaaqaJqaGTaEjaJraGTaJsaGTaJtaJuaaiaJvaJwaJxaJyaFbaaiazdazdaJzaHaazdazdaDoaaiaaiaaiaaiaJAaJBaHdaJCaHdaJBaJDaaiaaiaaiaaiaHoawaaJEaaqaHqaoyaDHaBnaBoaaqaJFaJGaaqaaqaaqaaqaaqaaqaaqaJHaaqaaqaaqaaqaaqaaqaJIaaqaJJaJKaJKaJKaJLaaqaJMaJNaJOaaqaIUaADaADaADaADaADaIVaaiaaaaaiaJPaJQaJRaaiaaaaaqaJSaJTaaqaJUaJVaJWaJXaJYaJZaKaaKbaGHaaqaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaKcaKdaKeaANaANaKfaKgaANaANaKhaKiaKjaaiaEcaKkaEeaDaaDaaDaaDbaETaaiaaqaaqaoyaKlaaqaaqaJqaGTaEjaaiaaiaaiaaiaaiaaiaaiaaiabnaKmaaiaaiaaiaaiaaiaaiaaiaaiaaiaDoaaiaKnaKnaIpaKoaKpaIsaItaIsaKpaKqaKraKsaKtaaiaHoawaaHpaaqaKuaAsaKvaBnaBoaaqaKwaJGaaqaKxaKyaKzaKzaaqaKAaKyaKBaaqaKCaKDaKEaaqaKFaaqaJJaJKaJKaJKaJLaaqaKGaKHaKIaaqaKJaKKaKKaKKaKKaKKaKLaaaaaaaaiaKMaKNaKOaaiaaaaaqaKPaKQaaqaaqaaqaaqaaqaKRaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaKcaKdaKeaANaANaKfaKgaANaANaKhaKiaKjaaiaEcaKkaEeaDaaDaaDaaDbaETaaiaaqaaqaoyaKlaaqaaqaJqaGTaEjaaiaaiaaiaaiaaiaaiaaiaaiabnaKmaaiaaiaaiaaiaaiaaiaaiaaiaaiaDoaaiaKnaKnaIpaKoaKpaIsaItaIsaKpaKqaKraKsaKtaaiaHoawaaHpaaqaKuaAsaKvaBnaBoaaqaKwaJGaaqaKxaKyaKzaKzaaqaKAaKyaKBaaqaKCaKDeHfaaqaKFaaqaJJaJKaJKaJKaJLaaqaKGaKHaKIaaqaKJaKKaKKaKKaKKaKKaKLaaaaaaaaiaKMaKNaKOaaiaaaaaqaKPaKQaaqaaqaaqaaqaaqaKRaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCXaKSaKTaDaaDaaDaaDaaKUaDaaDaaDaaKUaDaaKVaKWaKXaKYaKZaLaaLaaLaaLbaETaaiaLcaLdaLeaLfaaqaaqaLgaGTaEjaaiaLhaLiaLjaLiaLkaaiaLlaLmaLnaLoaLpaaiaLqaLqaLraLqaLsaaiaDoaaiaHcaHdaLtaLuaJBaHdaLvaHdaJBaLwaLxaHdaHnaaiaHoawaaLyaaqaHqaCEaCFaBnaBoaaqaLzaLAaaqaLBaKyaKyaKyaLCaLDaLEaLFaaqaLGaLHaLIaLJaLKaaqaLLaLMaLNaLMaLOaaqaLPaLQaLRaaiaaaaaaaaaaaaaabaaaaaaaaaaaaaaiaLSaLTaLUaaiaLVaaqaaqaaqaaqaLWaLXaLYaLYaLZaLYaMaaLYaMbaMcaMcaMdaMcaMcaMcaMcaMeaMfaMgaaiaMhaaiaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaMiaBZaBZaBZaBZaMjaBZaBZaBZaMjaMkaMlaMmaMnaMmaMoaMpaMpaMpaMqaMraaiaMsaMtaMuaMvaMwaaqaJqaGTaEjaaiaMxaLkaLkaLkaLkaaiaMyaMzaMAaMBaMCacDaMDaMDaMEaMDaMFaaiaDoaaiaKnaKnaIpaMGaKpaIsaMHaIsaKpaMIaIwaMJaMKaaiaMLayAaMMaaqaHqaCEabXabXabXabXaMNaMOaMPaMQaMRabXabXabXaaFabXabtaMSaMTaMUaMVabXaMWaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoNaoPaaiaaiaaiaaiaaiaaiaMXaamaaiaMYaMZaNaaNbaNcaNdaNeabXabXabXabXaaFaNfaNgabXabXaNhabXaNiabXabXaaFaNjaaqaaqaNkaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNnaNnaNoaNnaNnaNpaNqaNnaNnaNoaNraESaNsaNtaNuaNvaNwaNxaNxaNxaNyaNzaaiaNAaNBaNCaNDaNEaNFaNGaNHaIkaaiaNIaNJaNKaNLaNMaNNaNOaNPaNQaNRaNSaNTaNUaNVaNWaNXaNYacfaNZaaiaaiaaiaaiaOaaJBaHdaJCaHdaJBaObaaiaaiaaiaaiaOcaOdaOeaaqaKuaOfasYasYasYaOgaOhaOiabIaOjaOkabIaOlabIaOmabIaOnaAzaOoaOpaOqaaqaOraOsaOtaOuaOuaOsaOvaOwaOwaOwaOwaOwaOxaOyaOwaOzaOAaOBaOCaODaOEaOEaOFaOGaOHaOHaOHaOIaMfaOJaOKaOLaOMaaqaONaOOaOPaaKaaqaOQaaqaORaOSaOTaOUaOVaOWaOXaOYaOZaPaaPbaaiaPcaPdaPeaPfaPgaPhaPiaPjaPkaPlaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaPnaPoaPoaPoaPpaPqaPraPsaPtaPpaPoaPuaPvaPwaaiaPxaKcaPyaDaaDaaDaaPzaPAaaiaPBaPCaPDaPEaPFaaqaPGaPHaGTaaiaPIaPJaPKaPLaPMacDaPNaPOaPPaPQaPRaaiaPSaPTaPUaLqaPVaaiazdaaiaHcaHdaPWaLuaJBaHdaJCaHdaJBaLwaPXaaiaaiaaiaPYaPZaQaaQbaQcabnaaiaaiaaiaaqaQdaQeaaqaQfaKyaaqaQgaaqaQhaaqaQiaQjaQkaQlaQmaQnaQoaQpaQqaQraQsaAuaQtaQsaQsaQuaQsaQpaQvaQpaQwaQpaQpaQxaQyaQzaQAaQAaQBaQCaQDaQEaQAaQFaMcabIaQGaQHaQIaQJaQKaQLaQMaaKaQNaQOaaqaQPaQQaQRaQSaOVaQTaOXaOYaOZaQUaQVaaiaQWaQXaQXaQYaPjaPjaPjaPjaPkaPlaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQZaPuaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaRdaNnaNraaiaaiaReaDaaDaaDaaDaaRfaRgaaiaRhaRiaRjaRkaRlabXaRmaRnaaqaaiaRoaRpaRqaLkaLkaaiaRraPOaPPaPQaRsaaiaRtaPTaRuaRvaLqaaiazdaaiaRwaRxaIpaRyaRzaIsaRAaIsaRBaRCaRDaaiaREaRFaRGaRHaRIaRJaRKaRLaaaaaaaaiaRMaRNaROaaqaRPaKyaKyaKyaRQaKyaKyaKyaaKaRRaRSaaqaRTaoyaaqaRUaaqaaqaRVaRWaRXaRYaRZaaqaSaaSbaaqaRTaaqaaqaaqaaqaScaaqaaqaoyaaqaaqaaqaaqaSdaMfaaqaSeaQIaSfaSgaShaSiaSjaSkaSlaSmaaqaSnaSoaSpaSqaSraQTaOXaOYaOZaSsaStaaiaSuaQXaQXaQYaPjaPjaPjaPjaPkaPlaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaRaaRbaRcaRaaRcaPoaRcaRaaRcaSxaPuaPoaSyaNraaiaSzaDaaDaaDaaDaaSAaSBaSCaSDaSEaSFaSEaSGaSHaSIaSJaSKaaiaaiaflaaiaaiaaiaaiaGKaSLaSMaGKaSNaaiaaiaflaaiaaiaaiaaiaSOaaiaaiaaiaaiaSPaSQaSRaSSaSRaSTaSUaaiaaiaSVaRHaRHaRHaRHaSWaSXaSYaSZaTaaaiaTbaRNaTcaaqaaqaaqaaqaaqaaqaaqaaqaaqaaKaTdaTeaTfaTgaThaTiaTjaTkaaqaTlaTmaTnaToaTpaaqaTqaTraTsaTtaTsaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaaqaTEaOEaTFaTGaTHaSfaTIaShaSiaTJaaqaTKaTLaTMaTNaTOaQSaQSaaqaQVaOXaOYaOZaTPaTQaaiaTRaQXaTSaTTaTUaTVaPjaPjaTWaPlaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaTXaRbaRcaRaaRcaTYaRcaRaaRcaRbaNoaPoaTZaUaaaiaUbaDaaDaaUcaDaaDbaUdaDaaUeaUfaUgaUhaUiaSKaUjaUkaSKaUlaUmaUnaSKaUoaSKaUpaSKaUjaUqaSKaUraUsaSKaUtaSKaUuaUmaUvaUwaUxaUyaUzaUAaUBaUCaUCaUCaUCaUCaUCaUDaUEaUFaUGaUHaUIaUJaUKaULaUMaRHaRHaUNaUOaUPaUOaUQaURaUSaUTaUUaUVaUWaaqaUXaUYaUZaVaaVbaVbaVcaVdaVeaVfaaqaVgaVhaViaViaVjaaqaVkaVlaVmaVnaVoaVoaVpaVqaVraVqaVsaVtaVuaVvaVwaaqaSdaVxaaqaVyaVzaVzaVAaVBaVzaVCaaqaVDaVEaaqaVFaVGaQSaVHaaqaVIaVJaVKaOZaQVaQVaaiaVLaVMabnaflaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaPuaPoaVNaVOaaiaVPaDaaDaaDaaDaaDbaVQaMpaVRaVSaVTaVSaVUaVVaUjaVWaVXaVYaVZaWaaVXaVXaVXaSIaVXaSIaWbaVXaWcaVXaVXaWdaSKaUuaUmaUvaUwaUwaUwaUwaWeaUwaUwaUwaUwaUwaUwaWfaWgaWhaWiaWjaWkaWlaWmaWnaWoaWpaWpaWpaWqaWraWraWraWsaUWaUWaUWaWtaWuaUWaaqaWvaWwaVbaVbaWxaVbaWyaWzaVeaWAaaqaWBaWCaWDaWEaWFaaqaWGaWHaWIaWJaWKaWLaaqaWMaWNaWMaaqaaqaaqaoyaaqaaqaSdaMfaaqaWOaQIaQIaQIaWPaQIaWQaaqaaqaaqaaqaaqaaqaaqaWRaaqaOZaOZaOYaOZaWSaWTaaqaWUaWVaWWaWXaWYaWZaXaaXbaAdaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXcaPuaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaRdaNnaVOaaiaaiaXdaDaaDaaDaaDaaDbaXeaDaaUeaXfaXgaXhaUiaSKaXiaXjaXkaXlaXmaXnaXoaXoaXpaXqaXraXsaXtaXoaXuaXoaXoaXvaXwaXxaXmaXyaXzaXAaXBaXCaXDaXCaXCaXCaXCaXCaXCaXEaXFaXGaXGaXGaXGaXHaXGaXIaXJaXGaXGaXGaXKaXLaXLaXLaXLaXLaXLaXLaXMaUWaUWaaqaXNaXOaXPaXQaXQaXRaXSaWzaVeaXTaaqaaqaaqaaqaaqaXUaaqaXVaXWaXXaXYaTsaXZaaqaYaaYbaYcaYdaYeaYfaYgaYhaaqaSdaMfaaqaYiaYjaQIaYkaYlaQIaYmaYmaaqaYnaYoaYpaaqaYqaYraYsaOZaOZaYtaYuaQVaYvaaqaYwaWVaWWaYxaYyaWVaWVaYzaAZaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYAaPnaPoaPoaPoaPoaYBaPoaPoaYCaPoaPoaPuaYDaYEaaiaEcaKkaYFaDaaDaaDaaYGaYHaYIaYJaYKaYLaYKaYMaYNaUjaYOaYPaaiaaiaaiaaiaaiaaiaaiaGKaYQaYRaGKaYSaaiaaiaflaaiaaiaaiaaiaYTaYUaYTaYVaSZaSZaSZaSZaSZaSZaSZaTaaaiaYWaYXaYYaYZaYZaZaaZbaZcaZdaYXaZeaaiaGKaSZaSZaSZaSZaSZaZfaZgaZgaZgaaqaZhaZiaZjaZjaZjaZjaZkaMTaZlaZmaZnaZoaZpaZqaZraZsaaqaaqaZtaGKaZuaSZaZvaaqaZwaZxaZyaZyaZyaZyaZzaZAaaqaZBaMfaaqaZCaQIaYkaYkaYlaYkaQIaZDaaqaZEaZFaZGaaqaOZaZHaZIaZJaZJaZKaZLaZMaZNabXaZOaZPaZQaZRaWXaWVaWVaZSaAZaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYAaNnaNnaNoaNnaNnaNpaNqaNnaNnaNoaVOaESaNsaZTaZUaNvaZVaNxaNxaNxaZWaZXaaiaZYaZZbaababbacaaibadbaebafaaibagbahbaibajbajaaiaRraMBbakbalbamaaibanbaobapbaqbaraaibasbataUBbauaaaaaaaaaaaaaaaaaaaaaaaibavbawbaxbaybazbaAbazbaBbaCbaDbaEbaFaaiaaaaaaaaaaaaaaaaaaaAZbaGaUWbaHaaqbaIaZiaZmaZmaZmaZmaZmbaJbaKaZmaZmaZmaZpbaLbaLbaMbaNbaObaPbaQbaRbaSbaTaaqbaUbaVbaWbaXbaXbaWbaYbaZaaqaSdbbaaaqbbbbbcaQIaYkaYlaQIbbdbbdaaqaaqbbeaaqaaqbbfaYraYubbgbbgbbhaYuaQVaaqaaqbbiaWVbbjbbjbbkbbjaWVaZSaAZaaaaaaaaabblaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaibbmbbnbbnbbnbbnbbnbbnbbnbbnbbnbboaMlaMmaMnaMmbbpaMpaMpbbqbbrbbsaaibbtbbubbvbbwbbxaaiaUjaYOaSKaaibbybahbbzbahbbAaaibbBaPQbbCaPQbbDaaibbEbbFbbGbbHbbIaaibasbataUBbauaaaaaaaaaaaaaaiaaiaaiaaibbJbbKbbLbbMbbNbbObbPbbQbbRbbSbbTbbUaaiaaiaaiaaaaaaaaaaaaaAZbaGaUWaUWbbVaZmbbWbbXbbYaZmbbZbcaaLIbcbbccbbYaZmaZpbaLbaLbcdbcebaLbcfbcgbchbcibaLbcjbckbclbaWbaXbaXbaWbcmbcnaaqbcobcpaaqaZCaQIaYkaYkaYlaYkaQIaQIbcqbcraQIbcsaaqbctbcubcvbbgbbgbcwbcvbcxaaqbcybczaWVbcAbcAbcBbcAaWVaZSaIXbcCaoOaoObcDaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCXaKSbcEaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaKVbcFbcGaKYbcHaLaaLabcIaLbbcJaaibcKbcLbcMbcNbcObcPbcQbcRaSKaaibcSbcTbcUbcVbcWbcXaXobcYbcZbcYaXvbdabdbbdcbddbdebdfaaibdgbdhaUBbdiaoPaaiaaiaaiaaibdjbdkbdlbdmbdnbdnbdobdpbdnbdobdpbdqbdrbdnbdsbdtbduaaiaaiaaiaaiaGKbdvbaGaUWaUWaaqbdwbbWbccbbYaZmbdxbdyaZmbdzbdAbbYaZmaZpbaLbaLbdBbdCbdDbdEbdFbdGbdHbaLbdIbckbdJbaWbaXbaXbdKbdLbcnaaqaSdbdMaaqbdNbdObdPaYkaYlbdQaQIaQIbdRaQIbdSbdTaaqbdUbdVbdWbbgbbgbdXbdWbdYaaqbdZbczaWVaWVaWVaWXaWVaWVbeabebbecbedbeebefaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaKkbegbehbeibeibeibeibejbeibekbelbemaaiaPxaKcaHZaDaaDaaKUaDbbmIaaibeobepbeqberbesacDbetbeubevaaibewbexbeybexbexacfbezaPQbbCaPQbeAaaibeBbaobeCbanbeDaaibasbataUBaUCaUCbeEbeFbeGaaibeHbbObdnbeIbdnbdnbdnbdnbeJbdnbeKbdqbeLbeMbeMbeNbeOaaibePbeFbeQbeRbeSbaGaUWaUWbbVaZmbeTaZmaZmaZmbeUbeVaZmbdzbeWbbYaZmaZpbaLbaLbeXbeYbeZbfabfbbfcbdHbfdaaqbfebdJbaWbaXbaXbaWbdLbffaaqbfgaaqaaqaaKaaqaaqbfhaYlbfibfjaQIbfkbflaTIbfmabXbfnbfobfpbfqbfqbfrbfsbftabXbfubfvaWVbfwaWVaWXaWVaWVbfxbfybcCaoOaoObfzaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaibfAaDaaDaaDaaKUaDbbfBaaibfCbfDbfEbfFaaqaaiaUjbeuaSKaaibfGbfHbfIbahbahaaiaUtaPQbbCaPQaUtaaibfJbaobfKbfLbfMaaibasbataUwaUwaUwbfNbfObfPbfQbfRbfSbdnbfTbfUbfVbfWbfXbfYbfZbgabgbbgcbgdbfRbgebgfbggbghbgibgjbgkbglbgmaUWbgnaaqaZmbbWbgobbYaZmbgpbgqaZmbgrbgsbbYaZmbgtbaLbaLbaLbaMbaLbgubaLbfcbdHbgvaaqbgwbdJbaWbaXbaXbaWbdLbgxaaqbgybgzbgzbgAbgBbgCbgDbgEbgFbgFbgFbgFbgFbgFbgGbgHbgIbbgbbgbbgbbgbbgbbgbgJbgKbgLbczaWVaWVaWVaWXaWVaWVbgMaAZbgNbgNbgNaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgObgPbgPbgQbgPbgRbgPbgPbgQbgSbgTbgUbgVaNxaNxaNxbgWaNybgXaaiaaiaaiaaiaaiaaiaaiaUjbeuaSKaaiaaiaaiaaiaaiaaiaaibgYaPQbbCaPQbgZaaiaaiaflaaiaaiaaiaaibasbhabhbbhcbhdbhebhfbhgacDbhhbhibhjbhkaaiaaiaaiaaiaaiaaibhlbhmarDbhnbfUbhobhpaaibhqbhrbhsbhtbhubhvaUWaUWbbVaZmbhwaZmaZmaZmaOpaZmaZmbhxbhxbhybhybhzbaLbaLbhAbhBbaLbaLbaLbhCbhDbhEaaqbcnbdJbaWbaWbaWbaWbdLbhFaaqbhGbhHbhHbhIbhHbhJaYkaYkaYkaYkbhKaYkaYkaYkbhLbgKbbgbbgbbgbbgbbgbbgbbgbgJbgKbgLbczaWVbbjbbjbbkbbjaWVbhMaAZbhNbhObhPaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgObgPbgPbgPbgPbgPbgPbgPbgPbgPbgPbhRaESaDaaDaaDaaKUaDbbenaaibhSbhTbhUbhVbhWaaqbhXbeubhYaaibhZbiabibbicbicacfbidbiebifbieaWcacfbigbihbiibijbikaaibilbimbinaaiaaiaaiaaiaaiaaiaaqbioaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaflaaiaaibipaaiaaiaaiaaiaaiaaiaaibhvaUWaUWaaqbiqbiraZmbisaZmbitaZmbiubivbiwbhybixaaqbiybizaaqaaqbiAbiBbiBbiBaaqaaqaaqbiCbiDbiEbiEbiEbiEbiDbiFaaqbiGbhHbhHbhIbiHaaqbiIbiJbiKbfjbiLbiMbiNbiObiPaaqbiQaOZbiRbbgbbgbiRaOZbiSaaqbiTbczaWVbcAbcAbcBbcAaWVbgMaAZbgNbgNbgNaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiUbgPbgPbgPbgPbiVbgPbgPbgPbiWbiXbiYbiZaLaaLaaLabjaaLbbenaaibjbbjcbjdbjdbjdbjebetbeuaSKaaibjfbjgbjhbjibjjaaibjkaPQbbCaPQbjlaaibjmbjnbjobigbjpaaibjqbjrbjsaaibjtbjubjvbjwbjxbjybjzbjAaaiaaibjBbjCbjDbjEbjFbjGbjBaflaaibjHbjIbjJbjKbjLbjMbjNbjOaaibjPbjQbjQbjRaaqaaqaaqaaqbjSbbVbjSbjTaaqaoyaaqaaqaaqaaqaaqaaqbjUbjVbjVbjVbjVbjWbjXaaqbjYbjZbjYbkabkabjYbjZbjYaaqbiGbhHbhHbkbbiHaaqaaqaaqaaqaaqaaKaaqaaqaaqaaqaaqaaKbkcbkdbkdbkdbkdbkeaaqaaqbkfbkgaWVaWVaWVaWXaWVaWVbfxaIXbkhaoOaoObkiaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaiaESaDaaDaaDabkjaDbbenaaibkkbklbkmbknbknbkoaSIbkpbevaaibkqbkrbksbktbkubkvaXobkwbkxbcYaXobkybkzbkAbkBbkCbkDaaibkEbkFbjsbkGbkHbkIbkJbkKbkKbkJbkLbkMaaiaaibkNbkObjBbkPbkQbkRbkSbkTbkUbkVbkWbkXbkYbkZblabkXblbaaiblcbldbleblfblgblhblibljbljbljbljbljbljblkbllbljblmbljblnbljbljbljbljbljbljbljbljbloblpblqblqblqblqblqblqblrblhblsbltbltblublvblwblvblxblvblyblzblAblvblBblCblDblEblFblFblFblFblFblFblFblGblHblIblIblIblIblJblIblKblLblMblNblObeeblPaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQaaaaaaaEcblRaEeblSblTbkjblUblVaaiblWblXblXblXblYaaqblZbeuaSKaaibmabjibjhbjibjiaaibjkbmbbmcaaibjlaaibijbmdbmebijbmfaaibmgbkFbjsbmhbmibmjbmkbmlbmmbmnbkLbmoaaiaaibmpbmqaaqaaqaaqbmrbmsaaiaflbmtbkXbkXbkYbmublabkXbmvaaibmwblebleblfblgblhbljbljbljbljbljbljbljbmxbljbljbljbljbljbljbmybmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmAbmBbmCblFblFbmDbhHbhHbhHbhHbhHbhIbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbmEbhHbmFbmGaWVaWVaWVaWVaWVaWVaWVbmHbfybcCaoOaoObcDaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaNnaNnaNoaNnaNnaNpaNqaNnaNnaNoaNraESaNsaNtaNuaNvaNwaNxaNxaNxaNyaNzaaiaNAaNBaNCaNDaNEaNFaNGaNHaIkaaiaNIaNJaNKaNLaNMaNNaNOaNPaNQaNRaNSaNTaNUaNVaNWaNXaNYacfaNZaaiaaiaaiaaiaOaaJBaHdaJCaHdaJBaObaaiaaiaaiaaiaOcaOdaOeaaqaKuaOfasYasYasYaOgaOhaOiabIaOjaOkabIaOlabIaOmabIaOnaAzaOoaOpaOqaaqaOraOsaOtaOuaOuaOsaOvaOwaOwaOwaOwaOwaOxaOyaOwaOzaOAaOBaOCaODaOEaOEaOFaOGaOHaOHaOHaOIaMfaOJaOKaOLaOMaaqaONaOOaOPaaKaaqaOQaaqaORaOSaOTaOUaOVaOWaYsaYraDLeHcaPbaaiaPcaPdaPeaPfaPgaPhaPiaPjaPkaPlaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNmaPnaPoaPoaPoaPpaPqaPraPsaPtaPpaPoaPuaPvaPwaaiaPxaKcaPyaDaaDaaDaaPzaPAaaiaPBaPCaPDaPEaPFaaqaPGaPHaGTaaiaPIaPJaPKaPLaPMacDaPNaPOaPPaPQaPRaaiaPSaPTaPUaLqaPVaaiazdaaiaHcaHdaPWaLuaJBaHdaJCaHdaJBaLwaPXaaiaaiaaiaPYaPZaQaaQbaQcabnaaiaaiaaiaaqaQdaQeaaqaQfaKyaaqaQgaaqaQhaaqaQiaQjaQkaQlaQmaQnaQoaQpaQqaQraQsaAuaQtaQsaQsaQuaQsaQpaQvaQpaQwaQpaQpaQxaQyaQzaQAaQAaQBaQCaQDaQEaQAaQFaMcabIaQGaQHaQIaQJaQKaQLaQMaaKaQNaQOaaqaQPaQQeHdaQSaOVaQTaYsaYraDLeHeaQVaaiaQWaQXaQXaQYaPjaPjaPjaPjaPkaPlaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQZaPuaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaRdaNnaNraaiaaiaReaDaaDaaDaaDaaRfaRgaaiaRhaRiaRjaRkaRlabXaRmaRnaaqaaiaRoaRpaRqaLkaLkaaiaRraPOaPPaPQaRsaaiaRtaPTaRuaRvaLqaaiazdaaiaRwaRxaIpaRyaRzaIsaRAaIsaRBaRCaRDaaiaREaRFaRGaRHaRIaRJaRKaRLaaaaaaaaiaRMaRNaROaaqaRPaKyaKyaKyaRQaKyaKyaKyaaKaRRaRSaaqaRTaoyaaqaRUaaqaaqaRVaRWaZHaRYaRZaaqaSaaSbaaqaRTaaqaaqaaqaaqaScaaqaaqaoyaaqaaqaaqaaqaSdaMfaaqaSeaQIaSfaSgaShaSiaSjaSkaSlaSmaaqaSnaSoaSpaSqaSraQTaYsaYraDLaXTaZoaaiaSuaQXaQXaQYaPjaPjaPjaPjaPkaPlaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaRaaRbaRcaRaaRcaPoaRcaRaaRcaSxaPuaPoaSyaNraaiaSzaDaaDaaDaaDaaSAaSBaSCaSDaSEaSFaSEaSGaSHaSIaSJaSKaaiaaiaflaaiaaiaaiaaiaGKaSLaSMaGKaSNaaiaaiaflaaiaaiaaiaaiaSOaaiaaiaaiaaiaSPaSQaSRaSSaSRaSTaSUaaiaaiaSVaRHaRHaRHaRHaSWaSXaSYaSZaTaaaiaTbaRNaTcaaqaaqaaqaaqaaqaaqaaqaaqaaqaaKaTdaTeaTfaTgaThaZnaYuaYtaaqaTlaTmaTnaToaTpaaqaTqaTraTsaTtaTsaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaaqaTEaOEaTFaTGaTHaSfaTIaShaSiaTJaaqaTKaTLaTMaTNaTOaQSaQSaaqaQVaYsaYraDLaXTaYqaaiaTRaQXaTSaTTaTUaTVaPjaPjaTWaPlaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaTXaRbaRcaRaaRcaTYaRcaRaaRcaRbaNoaPoaTZaUaaaiaUbaDaaDaaUcaDaaDbaUdaDaaUeaUfaUgaUhaUiaSKaUjaUkaSKaUlaUmaUnaSKaUoaSKaUpaSKaUjaUqaSKaUraUsaSKaUtaSKaUuaUmaUvaUwaUxaUyaUzaUAaUBaUCaUCaUCaUCaUCaUCaUDaUEaUFaUGaUHaUIaUJaUKaULaUMaRHaRHaUNaUOaUPaUOaUQaURaUSaUTaUUaUVbbXaaqaUXaUYaUZaVaaVbaVbaVcbbWaZXaZLaaqaVgaVhaViaViaVjaaqaVkaVlaVmaVnaVoaVoaVpaVqaVraVqaVsaVtaVuaVvaVwaaqaSdaVxaaqaVyaVzaVzaVAaVBaVzaVCaaqaVDaVEaaqaVFaVGaQSaVHaaqbcabcbbccaDLaQVaQVaaiaVLaVMabnaflaaiaaiaaiaaiaaiabAacMaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSvaSwaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaPuaPoaVNaVOaaiaVPaDaaDaaDaaDaaDbaVQaMpaVRaVSaVTaVSaVUaVVaUjaVWaVXaVYaVZaWaaVXaVXaVXaSIaVXaSIaWbaVXaWcaVXaVXaWdaSKaUuaUmaUvaUwaUwaUwaUwaWeaUwaUwaUwaUwaUwaUwaWfaWgaWhaWiaWjaWkaWlaWmaWnaWoaWpaWpaWpaWqaWraWraWraWsaUWaUWaUWaWtaWuaUWaaqaWvaWwaVbaVbaWxaVbaWyaZLaZXaZNaaqaWBaWCaWDaWEaWFaaqaWGaWHaWIaWJaWKaWLaaqaWMaWNaWMaaqaaqaaqaoyaaqaaqaSdaMfaaqaWOaQIaQIaQIaWPaQIaWQaaqaaqaaqaaqaaqaaqaaqaWRaaqbbhbbsbbfaDLaWSaWTaaqaWUaZJaZIaZKaWYaWZaXaaXbaAdaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXcaPuaRaaRbaRcaRaaRcaPoaRcaRaaRcaRbaRdaNnaVOaaiaaiaXdaDaaDaaDaaDaaDbaXeaDaaUeaXfaXgaXhaUiaSKaXiaXjaXkaXlaXmaXnaXoaXoaXpaXqaXraXsaXtaXoaXuaXoaXoaXvaXwaXxaXmaXyaXzaXAaXBaXCaXDaXCaXCaXCaXCaXCaXCaXEaXFaXGaXGaXGaXGaXHaXGaXIaXJaXGaXGaXGaXKaXLaXLaXLaXLaXLaXLaXLaXMaUWaUWaaqaXNaXOaXPaXQaXQaOXaXSaGtaKEaGtaaqaaqaaqaaqaaqaXUaaqaXVaXWaXXaXYaTsaXZaaqaYaaYbaYcaYdaYeaYfaYgaYhaaqaSdaMfaaqaYiaYjaQIaYkaYlaQIaYmaYmaaqaYnaYoaYpaaqaFwaDLaFxaGqaGraGsaDLaQVaYvaaqaYwaWVaWWaYxaYyaWVaWVaYzaAZaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYAaPnaPoaPoaPoaPoaYBaPoaPoaYCaPoaPoaPuaYDaYEaaiaEcaKkaYFaDaaDaaDaaYGaYHaYIaYJaYKaYLaYKaYMaYNaUjaYOaYPaaiaaiaaiaaiaaiaaiaaiaGKaYQaYRaGKaYSaaiaaiaflaaiaaiaaiaaiaYTaYUaYTaYVaSZaSZaSZaSZaSZaSZaSZaTaaaiaYWaYXaYYaYZaYZaZaaZbaZcaZdaYXaZeaaiaGKaSZaSZaSZaSZaSZaZfaZgaZgaZgaaqaZhaZiaZjaZjaZjaZjaZkaMTaZlaExaFvaEyaZpaZqaZraZsaaqaaqaZtaGKaZuaSZaZvaaqaZwaZxaZyaZyaZyaZyaZzaZAaaqaZBaMfaaqaZCaQIaYkaYkaYlaYkaQIaZDaaqaZEaZFaZGaaqaDMaDLaDLaDLaDLaEvaEwaZMaDNabXaZOaZPaZQaZRaWXaWVaWVaZSaAZaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYAaNnaNnaNoaNnaNnaNpaNqaNnaNnaNoaVOaESaNsaZTaZUaNvaZVaNxaNxaNxaZWaWzaaiaZYaZZbaababbacaaibadbaebafaaibagbahbaibajbajaaiaRraMBbakbalbamaaibanbaobapbaqbaraaibasbataUBbauaWAaTPaTPaTPaTPaTPaTPaaibavbawbaxbaybazbaAbazbaBbaCbaDbaEbaFaaiaWAaTQaXRaTPaTPaTPaAZbaGaUWbaHaaqaZmbeTaZmaZmaZmaZmaZmbaJbaKaVIaVfaVeaZpbaLbaLbaMbaNbaObaPbaQbaRbaSbaTaaqbaUbaVbaWbaXbaXbaWbaYbaZaaqaSdbbaaaqbbbbbcaQIaYkaYlaQIbbdbbdaaqaaqbbeaaqaaqaVJaDLaDLbbgbbgaVKaDLaQVaaqaaqbbiaWVbbjbbjbbkbbjaWVaZSaAZaaaaaaaaabblaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaibbmbbnbbnbbnbbnbbnbbnbbnbbnbbnbboaMlaMmaMnaMmbbpaMpaMpbbqbbraTkaaibbtbbubbvbbwbbxaaiaUjaYOaSKaaibbybahbbzbahbbAaaibbBaPQbbCaPQbbDaaibbEbbFbbGbbHbbIaaibasbataUBbauaTPaTPaTPaTQaaiaaiaaiaaibbJbbKbbLbbMbbNbbObbPbbQbbRbbSbbTbbUaaiaaiaaiaTPaTQaVdaTPaAZbaGaUWaUWbbVaOZaOYaPaaOZaOZbbZaQRaLIaQUaExaRXaExaZpbaLbaLbcdbcebaLbcfbcgbchbcibaLbcjbckbclbaWbaXbaXbaWbcmbcnaaqbcobcpaaqaZCaQIaYkaYkaYlaYkaQIaQIbcqbcraQIbcsaaqaStaSsaSsbbgbbgaTiaSsaTjaaqbcybczaWVbcAbcAbcBbcAaWVaZSaIXbcCaoOaoObcDaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCXaKSbcEaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaKVbcFbcGaKYbcHaLaaLabcIaLbbgNaaibcKbcLbcMbcNbcObcPbcQbcRaSKaaibcSbcTbcUbcVbcWbcXaXobcYbcZbcYaXvbdabdbbdcbddbdebdfaaibdgbdhaUBbdiaoPaaiaaiaaiaaibdjbdkbdlbdmbdnbdnbdobdpbdnbdobdpbdqbdrbdnbdsbdtbduaaiaaiaaiaaiaGKbdvbaGaUWaUWaaqbiwbiubisbgobhPbhObhNbbYbhxaZmaZmaZmaZpbaLbaLbdBbdCbdDbixbdFbdGbdHbaLbdIbckbdJbaWbaXbaXbdKbdLbcnaaqaSdbdMaaqbdNbdObdPaYkaYlbdQaQIaQIbdRaQIbdSbdTaaqbhMaSsaSsbbgbbgaTiaSsbgXaaqbdZbczaWVaWVaWVaWXaWVaWVbeabebbecbedbeebefaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaKkbegbehbeibeibeibeibejbeibekbelbemaaiaPxaKcaHZaDaaDaaKUbeVbeWaaibeobepbeqberbesacDbetbeubevaaibewbexbeybexbexacfbezaPQbbCaPQbeAaaibeBbaobeCbanbeDaaibasbataUBaUCaUCbeEbeFbeGaaibeHbbObdnbeIbdnbdnbdnbdnbeJbdnbeKbdqbeLbeMbeMbeNbeOaaibePbeFbeQbeRbeSbaGaUWaUWbbVbgsbgrbgMbgtbfBbftbgobbYbhxaZmaZmaZmaZpbaLbaLbeXbeYbeZbfabfbbfcbdHbfdaaqbfebdJbaWbaXbaXbaWbdLbffaaqbfgaaqaaqaaKaaqaaqbfhaYlbfibfjaQIbfkbflaTIbfmabXbfsbfrbfrbfqbfqbfobfpbfnabXbfubfvaWVbfwaWVaWXaWVaWVbfxbfybcCaoOaoObfzaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaibfAaDaaDaaDaaKUbmIbmuaaibfCbfDbfEbfFaaqaaiaUjbeuaSKaaibfGbfHbfIbahbahaaiaUtaPQbbCaPQaUtaaibfJbaobfKbfLbfMaaibasbataUwaUwaUwbfNbfObfPbfQbfRbfSbdnbfTbfUbfVbfWbfXbfYbfZbgabgbbgcbgdbfRbgebgfbggbghbgibgjbgkbglbgmaUWbgnaaqbgqbNRbDMbbYbgqbgpbgqaZmbpJbpraZmaZmbUzbaLbaLbaLbaMbaLbgubaLbfcbdHbgvaaqbgwbdJbaWbaXbaXbaWbdLbgxaaqbgybgzbgzbgAbgBbgCbgDbgEbgFbgFbgFbgFbgFbgFbgGbgHbgIbbgbbgbbgbbgbbgbbgbgJbgKbgLbczaWVaWVaWVaWXaWVaWVbdVaAZaZJaZJaZJaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgObgPbgPbgQbgPbgRbgPbgPbgQbgSbgTbgUbgVaNxaNxaNxbgWbiQbiSaaiaaiaaiaaiaaiaaiaaiaUjbeuaSKaaiaaiaaiaaiaaiaaiaaibgYaPQbbCaPQbgZaaiaaiaflaaiaaiaaiaaibasbhabhbbhcbhdbhebhfbhgacDbhhbhibhjbhkaaiaaiaaiaaiaaiaaibhlbhmarDbhnbfUbhobhpaaibhqbhrbhsbhtbhubhvaUWaUWbbVaZmbhwaZmaZmaZmaOpaZmaZmbhxbhxbhybhybhzbaLbaLbhAbhBbaLbaLbaLbhCbhDbhEaaqbcnbdJbaWbaWbaWbaWbdLbhFaaqbhGbhHbhHbhIbhHbhJaYkaYkaYkaYkbhKaYkaYkaYkbhLbgKbbgbbgbbgbbgbbgbbgbbgbgJbgKbgLbczaWVbbjbbjbbkbbjaWVblVaAZaZJaZJblUaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgObgPbgPbgPbgPbgPbgPbgPbgPbgPbgPbhRaESaDaaDaaDaaKUbcwbcvaaibhSbhTbhUbhVbhWaaqbhXbeubhYaaibhZbiabibbicbicacfbidbiebifbieaWcacfbigbihbiibijbikaaibilbimbinaaiaaiaaiaaiaaiaaiaaqbioaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaflaaiaaibipaaiaaiaaiaaiaaiaaiaaibhvaUWaUWaaqbiqbirbaIbdwaZmbitaZmbdAbivbdzbdybdxaaqbiybizaaqaaqbiAbdEbiBbdUaaqaaqaaqbiCbiDbiEbiEbiEbiEbiDbiFaaqbiGbhHbhHbhIbiHaaqbiIbiJbiKbfjbiLbiMbiNbiObiPaaqbcxaDLbiRbbgbbgbiRaDLbcJaaqbiTbczaWVbcAbcAbcBbcAaWVbdVaAZaZJbdWaZJaAZaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiUbgPbgPbgPbgPbiVbgPbgPbgPbiWbiXbiYbiZaLaaLaaLabjabctbcuaaibjbbjcbjdbjdbjdbjebetbeuaSKaaibjfbjgbjhbjibjjaaibjkaPQbbCaPQbjlaaibjmbjnbjobigbjpaaibjqbjrbjsaaibjtbjubjvbjwbjxbjybjzbjAaaiaaibjBbjCbjDbjEbjFbjGbjBaflaaibjHbjIbjJbjKbjLbjMbjNbjOaaibjPbjQbjQbjRaaqaaqaaqaaqbjSbbVbjSbjTaaqaoyaaqaaqaaqaaqaaqaaqbjUbjVbjVbjVbjVbjWbjXaaqbjYbjZbjYbkabkabjYbjZbjYaaqbiGbhHbhHbkbbiHaaqaaqaaqaaqaaqaaKaaqaaqaaqaaqaaqaaKbkcbkdbkdbkdbkdbkeaaqaaqbkfbkgaWVaWVaWVaWXaWVaWVbfxaIXbkhaoOaoObkiaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaiaESaDaaDaaDabkjbeUbcvaaibkkbklbkmbknbknbkoaSIbkpbevaaibkqbkrbksbktbkubkvaXobkwbkxbcYaXobkybkzbkAbkBbkCbkDaaibkEbkFbjsbkGbkHbkIbkJbkKbkKbkJbkLbkMaaiaaibkNbkObjBbkPbkQbkRbkSbkTbkUbkVbkWbkXbkYbkZblabkXblbaaiblcbldbleblfblgblhblibljbljbljbljbljbljblkbllbljblmbljblnbljbljbljbljbljbljbljbljbloblpblqblqblqblqblqblqblrblhblsbltbltblublvblwblvblxblvblyblzblAblvblBblCblDblEblFblFblFblFblFblFblFblGblHblIblIblIblIblJblIblKblLblMblNblObeeblPaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQaaaaaaaEcblRaEeblSblTbkjbdXbdYaaiblWblXblXblXblYaaqblZbeuaSKaaibmabjibjhbjibjiaaibjkbmbbmcaaibjlaaibijbmdbmebijbmfaaibmgbkFbjsbmhbmibmjbmkbmlbmmbmnbkLbmoaaiaaibmpbmqaaqaaqaaqbmrbmsaaiaflbmtbkXbkXbkYbenblabkXbmvaaibmwblebleblfblgblhbljbljbljbljbljbljbljbmxbljbljbljbljbljbljbmybmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmzbmAbmBbmCblFblFbmDbhHbhHbhHbhHbhHbhIbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbmEbhHbmFbmGaWVaWVaWVaWVaWVaWVaWVbmHbfybcCaoOaoObcDaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQblQaEPaEQaERaaiaaiaaibxXaaiaaiaaibjbblXblXblXblXaaqaUjbeuaSKaaibmKbmLbmMbjibjiaaibmNbmbbmOaaibmNaaibmPbmdbmQbmRbijaaibmSbkFbjsbmTbmUbmjbmkbmVbmWbmnbkLbmXaaibmYbmZbnaaaqbnbaaqbncbndbneaflbnfbngbnhbnibnibnjbkXbnkaaibnlbnmbleblfblgblhbljbnnbljbljbljbljbnobnpbnpbnpbnpbnqbljbljbljbljbnrbljbnnbnsbljbntbnubnvbljbnwbnxbnxbnybnzbnAbnBbhHbhHbhHbhHbhHbhHbhHbnCbnDbnEbhHbhHbhHbhHbhHbhHbhHbhHbhHbhHbnFbnGbnGbnHbnIbnJbnKbnLbnLbnLbnLbnMbnNaPxaabaaaaaaaabaNlaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQblQbuMbuNbuVbwsbnQbwtbwFbwvbwuaaibhSbnXbnXbnYbnZaaqaUjbeuaSKaaiaaiaaiaaiaaiaaiaaiaaibmbboaaaiaaiaaiaaiaflaaiaaiaaiaaibobbkFbocaaibodboebkJbkJbkJbkJbkLbofaaiaaibogbohboibojbokbohbolaaiaflaaibombonboobopboqborbosaaibotboubouaaiaaiaaiaaiaaiaaiaaiaaqaaqbovbowboxboxbowbovaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqboyaaqaaqaaqaaqaaqaaibozaoyboAbhHbhHboBboBaaiaaiaaiaaiaaiboCbnGbnGbnFbnGbhHbnGbnGbnGbnGboDaaiaaiaaiaaiboEaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQblQaGKaGLaERbnPbnQbnQbuKbtqbnQaaiboIboIboIboJboKaaqaUjbeuaSKaaqboLboMboNboOboPaaiboQbmbboRaaiboSaaiboTboUboVboWboXaaqboYbkFboZaaibpabpbbpcbpdbpebpfbpgaaiaaiaaibphbpibpjbpkbplbpmbpnaaiaflaaibpobppbpqbprboqbkXbpsaaibptbpubpvaaibpwbpxbpybpzbpAbpBbpCbpDbpEbpFbpGbpGbpFbpHbpIbpJaaqbpKbpLbpMbpNaaqbpObpPbpQbpRbpSbpTbpTbpUaaibpVabnaaibpWaaibpXbpXaaibpYbpZbqaaaibqbbqcbqbaaibqdbnGboDaaibqebqfbqeaaibqgbqhaaibqibqjbqkaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQblQaGKaGLaERbnPbnQbnQbuKbtqbnQaaiboIboIboIboJboKaaqaUjbeuaSKaaqboLboMboNboOboPaaiboQbmbboRaaiboSaaiboTboUboVboWboXaaqboYbkFboZaaibpabpbbpcbpdbpebpfbpgaaiaaiaaibphbpibpjbpkbplbpmbpnaaiaflaaibpobppbpqeHjboqbkXbpsaaibptbpubpvaaibpwbpxbpybpzbpAbpBbpCbpDbpEbpFbpGbpGbpFbpHbpIeHkaaqbpKbpLbpMbpNaaqbpObpPbpQbpRbpSbpTbpTbpUaaibpVabnaaibpWaaibpXbpXaaibpYbpZbqaaaibqbbqcbqbaaibqdbnGboDaaibqebqfbqeaaibqgbqhaaibqibqjbqkaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablQblQblQblQblQblQblQblQblQblQaaabqlaHXbnTbnUbnQbnQbuKbtqbrKaaibqpbqpbqpbqpbqqaaqaUjbeuaSKaaqbqrbqsbqtbqsbquaaibqvbqwbqxbuLbqyaaibqzbqAbqBbqBbqCbqDbqEbkFbqFaaibqGaaKaaqaaqaaqaaibqHaaibqIacDbqJbqKbjBbqLbjBbqMbqNacfbqOaaibqPbkXbqQbqRboqbqSbkXaaibqTbqUbqVaaibqWbqXbqYbqZbrabrbbrcbpGbpGbpGbpGbpGbpGbpGbrdbrebrfbrgbrhbribrjaaqbrkbrlbrmbrnbrobrpbrlbpUaaibpVabnbrqbrrbrsbrtbruaaqbrvbrwbrvbrxbrybrzbrAaaiaaqbrBamsaaibrCbrDbrEbrFbrFbrFaaibrGbrHbrIaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrJazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaibEObnQbnQbnQbuKbtqbnQaaibrLbrMboIboIboJaaqblZbeubrNaaqbrObrPbrQbrRbrSaaibrTbrUbrVbqybqyaaibrWbrXbrYbrZbsabsbbscbsdbseacfbsfbsgbshbsiabIbsjbskacfbslacfacfacfacfbsmacfacfacfacfbsnacfbsobspbsqbsrbssbstbsuacfbsvbpubpuaaibswbsxbsybszbsAaaibrcbpGbpGbpGbpGbpGbpGbpGbsBbsCbsDbsEbsFbsGbsHaaqbsIbsJbsKbrnbpUbrpbsLbsMaaibsNbsObsPbsQbsQbsRbsSbsTbsUbsUbsUbsVbsWbsXbsYbsZbtabtbbtcbsZbtdbtebtfbtfbtfbtgaaibthbrHbtiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNlaNlaNlaNlaNlaaaaNlaNlaNlaNlaNlaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaaaaEcbnPbnQbnQbnQbuKbtqbnQaaibqpbqpbtkblXblXbtlaUjbeuaSKaaqbtmbtnbtobtpbDqaaibtrbtsbttbtubtvaaibtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtGbtGbtHbtIabXbtJbtKacDbtLaGDbtMbtNbtObtPbtQbtNbtRaGDbtSaaiabnbtTaaiaaiaaiaaibtUaaibtVbpubtWacDbtXbtYbtZbuabubaaibucbudbuebufbugbuhbuibujbrdbukaaqbulbsFbumbunaaqbuobupbrmbrnbpUbrpbrlbpUaaibpVabnbuqburbusbutbuuaGDbuvbuwbuxbuybuzbrvbuAaaibuBbuCbuDaaibuEbuFbuGbrFbuHbuIaaibthbrHbuJaaiaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12657,18 +12682,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbnWboFboGboHbnQbnQbqnbqmbqoacDbydbjdbyebyfbygaaqaUjbeuaSKbyhbyibyjbykbylbymaaiaaiaaiaaibynaaiaaibyobypbyqbyrbysaaqbytbyubyvbywbyxbyybyzbyAbyBbyCbyDaaibvhbyEbyFbtNbwYbyGbwYbtNbyHaaibtSaaibyIbyJbyKaaqbyLaaqbyMaaqbyNbpubyOaaibyPbyQbyRbySbyTabIbyUbyVabIabIbyWbyXabIabIbyYbyZaAuaAxbzabzbbzcbzdbzebzfbzgbzhbziaaibzjbzkbzlbzmabnbznbzobzpbzqbzraaqbzsbxFbxFbztbzubxHbzvaaibzwbzwbzxaaibzybzzbzAbzBbrFbzCaaibthbzDaaiaaaaaaaaaaaaaaaaabbzEbzFbxTbxUbxTbzGbwqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaGKaGLaERbnPbnQbnQbnVbnQbnQaaibzIbklbzJbzKbzLabIaSIbkpbevaaqbzMbqAbzNbzObzPbzQbzRbzSbzTbzTbzUbzVbzWbzXbzObzYbzZaaqbwMbpubAabAbbAcbAdbAebAfbAgbAhbAiaaibvhaaiaaibAjbAkbAlbtNbAmbAnacfbAoaaiabnaaiaaiaaiaaiaaibApaaibAqbpubyOaaibArbAsbAsbAtbAuaaqbAvbAwbAxbFLbAzbAAbABbAxbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbARbASbATbAUbAVbAVbAWbAXbAYaaqbAZbrvbrvbBabBbbxHbBcaaqbBdbBebBfaaqbBgbBhaTabBibjYaaiaaibBjaaiaaibBkbBlbBlbBlbBmaaibxRbxUbxTbxUbxUbBnbxRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbBobBpbnTbnUbnQbnQbnVbnQbnQaaibBqbjcbBrbBsbBtbBubBvbBwaSKaaqbBxbqAbzNbzObByaaqbBzbBAbqBbqBbBBbBCbBDbzXbzObBEbBFbBGbwMbpubBHbaubAcbBIbBJbBKbBLbBMbBNbBOabubAnacfarDbBPbyGbBPbAnbBQaaiaaiaaibBRbBSbBTbBUbBVbBWbBXacfbBYbpubyObvybBZbCabCbbCcbCdaaqbCebCfbCgbChbCibCjbCkbClbCmbCnbCobCpbCqbCrbCsbCtbCubCvbCwbCxbCyaaibCzbCAbCBbCCaaibCDbCEbCFbCGbCGaaqbCHbCIbCJaaqbCKbxHbCLaEcbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYbCZbDabDabDbbDcbDdbDebDfbwpbwqbDgbwqbwpbDhaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaaabDibnPbnQbnQbnQbnSbnQbnQaaibDmbDnbDobDpbnRaolbDrbDsaSKaaqbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDybDEbDFbDGbDHbDIaaqbDJbpubBHbaubAcaaibDKbDLbDMbDNbDOabnbDPbDQbDRbhmacfbDSbDTbhmbDUbDVbDWaaibDXbDYbDZbEabEbbEbbEcbEdbEebpubEfaaiaaqbEgbjYbEhbEiaaqbCebEjaaqbEkbElbCjbEmaaqbCebEnbEoaaqaaqaaqaoyaaqaaqaaqbEpamzaaqaaiaaibEqaaqaaqaaiaaiaaqaaKaaqaaqaaqaaqaaqaaqaaqbErbEsaClaCmbEtbEubEvbEwbEwbExbEybEzbEAbEBbECbEDbEEbEFbEGbEGbEHbCQbEIaaibEJbEKbELbEMaaibENaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjbtjaaabDibnPbnQbnQbnQbnSbnQbnQaaibDmbDnbDobDpbnRaolbDrbDsaSKaaqbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDybDEbDFbDGbDHbDIaaqbDJbpubBHbaubAcaaibDKbDLeHibDNbDOabnbDPbDQbDRbhmacfbDSbDTbhmbDUbDVbDWaaibDXbDYbDZbEabEbbEbbEcbEdbEebpubEfaaiaaqbEgbjYbEhbEiaaqbCebEjaaqbEkbElbCjbEmaaqbCebEnbEoaaqaaqaaqaoyaaqaaqaaqbEpamzaaqaaiaaibEqaaqaaqaaiaaiaaqaaKaaqaaqaaqaaqaaqaaqaaqbErbEsaClaCmbEtbEubEvbEwbEwbExbEybEzbEAbEBbECbEDbEEbEFbEGbEGbEHbCQbEIaaibEJbEKbELbEMaaibENaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhQbhQbhQbhQbhQbhQbhQbhQbhQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaoNaoPazTaoNaoPaaiaoNaoPaaiaaiaaiaaiaaibynaaqaaqaaqaaqaztaolaolaolbEPaolbEQbERbESbETbEUbEVbEWbqBbEXbqBbEYbzVbEZbqBbzObqBbFabjYbwMbpubFbbFcbFdaaibFebFfbFgbFhbFiabnbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtaaibFubFvbFwbFwbFxbFybFzaaibFAbFBbyObFCbFDbFEbFFbFGbFHbFIbFJbCfbjYbFKbFUbFMbFNbjYbCebEnbEobFObFPbFQbFRbFSbFTbWPbFVbFWaaqbFXbFYbFZbGabGbbGcbGdbCVbGebEwbEwbGfbGgbEwbGhbGibGjbGkbGlbEwbGmbGnbGobGpbGqbGraaiabnaaiaaiaaibBjaaiaaibBkbBmaaibGsbGtbGubGvbGwbGxbGybGzaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaabAbbGBbGCbGCbGCbGCbGDbGEbGFbGGbGEbGHbGCbGCbGIbGCbGJbGCamzbGKbqBbGLbqBbEYbGMbGNbGObzObGPbGQbGRbwMbpubGSbGTbAcaaibGUbGVbGWbDLbGXabnbGYbGZbHaaaibHbbHcbHdacDbHebHfbHgaaibHhbHibHjbHkbFxbFybFzaaibHlbHmbHnbHobHpbHqbHrbHsbHtbHubHvbHwaaqaaqbHxbHyaaqaaqbCebEnbEobjYbHzbHAbHAbHAbHBbHAbHCbHDbHEbHFbHGbHHbHHbHIbHJbHKbHLbHMbCQbCQbHNbCQbHObCQbHPbCQbHQbHRbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabIbaaibIcbIdaaaaaaaaaaaibIebIfbIgbIhbIibIjbIkaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaabaubIlbGCbGCbGCbGCbGCbGEbImbInbGEbGCbGCbGCbGIbGCbGJbGCamzbIobIpbIqbIrbIsbItbIubIvbIwbIxbIybjYbwMbpubIzaaqaaqaaiaaiaaiaaiaaibIAabnaaibIBabnacDabnbICaaiaaiaaiaaiaaiaaiabnaaiaaiaaiaaiaaiaaiaaibIDbpubIEbowaaqbIFbIGaaqaaqbCebIHbIIbFHbIJbIKbILbIMbINbFJbIObIPbIQbIRbISbISbISbITbISbIUbIVbIWbIXbIYbIZbFZbJaaaiaaiaaiaaiaaiaaibJbaaiaaiaaiaaKbJcaaqaaqbJdbJebJfbJgbHVbJhbJibJjbJkbJlbJmaaibIcbJnaaaaaaaaaaaibJobJpaaibDeaaiaaibDeaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbJqaoOaCmbJrbJsbGCbGCbGCbGCbGCbGCbGCbGCbGCbGCbGCbGIbGCbGJbJtaztaolaolaolaolaolaolbJubEVaaqaaqaaqaaqbwMbpubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbJJbJKbJLbJMbJNbJObJPbJObJQbJRbJSboubJTbpubJUbJVbJWbpubJXaaqbJYbJZbKabKbbKcbCebKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnaaqbKobKpbKqbKrbKsbHAbKtbKuaaqbKvbFZbFZbFZbKwaaibKxbKybKzbKAbKBbKCbKDbKEaaibKFbKGbKHaaqaaqbKIbJfbKJbKKbKLbKMbKNbKObKPbKQaaibKRaaiaaaaaaaaaaaiaaiaaiaaiaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbKSbKTbKSbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKUbKVbKUbKWbKUbKXbKYbKZbLabLbbLcbLdbLebLfbLgbLhbLhaaqbwMbLibLjbpubpubyObLkboubJSbJRbLlbLmbLlbLnbLobLobLpbLqbLrbLobLobLsbLobLtbLobJRbJSboubLubLvbLwbLxbLybLzbpuaaqbLAbJZbLBbLCbLDbCebLEbLFbLGbLHbLIbLJbLKbLLbCebLMbLNaaqaaqbLObLPbLQbLRbLSbLTbLUaaqbLVbLWbFZbLXbLYaaibKxbLZbMabMbbMcbMdbMebMfaaibMgbKGbMhbMhaaqbMibMjbMkbMlbMmbMnbMobMpbMqbMraaibIcaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbMsbMtbMsbGBbMubMvbMwbMwbMwbMwbMwbMwbMxbMwbMwbMwbMybMwbMzbMAabIbMBbMCbMDbMEbMDbMFbMGbMHbMIbMJbMKaaqbwMbMLbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbMXbMYbMYbMZbNabNabNabNabNabNabNbbNcbNdbNebNfbNgbMObNhbNibNjbNkbNlaaqbNmbJZbKabNnbLDbCebLEbLFbNobNpbNqbNrbNsbNtbCmbNubNvaaqbNwbNxbNyaaqbNzaaqaSkaxkaaqbNAbNBbNCbNDbNEaaibKxbNFbNGbKAbNHbNIbNJbNKaaibNLbKGbMhbMhaaqbNMbNNbNOacDbNPbNQbNRbNSbNTbNUaaibIcaaiaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbMsbMtbMsbGBbMubMvbMwbMwbMwbMwbMwbMwbMxbMwbMwbMwbMybMwbMzbMAabIbMBbMCbMDbMEbMDbMFbMGbMHbMIbMJbMKaaqbwMbMLbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbMXbMYbMYbMZbNabNabNabNabNabNabNbbNcbNdbNebNfbNgbMObNhbNibNjbNkbNlaaqbNmbJZbKabNnbLDbCebLEbLFbNobNpbNqbNrbNsbNtbCmbNubNvaaqbNwbNxbNyaaqbNzaaqaSkaxkaaqbNAbNBbNCbNDbNEaaibKxbNFbNGbKAbNHbNIbNJbNKaaibNLbKGbMhbMhaaqbNMbNNbNOacDbNPbNQeHgbNSbNTbNUaaibIcaaiaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbJqaoObcDbNVbGCbNWbGCbGCbNXbNYbNYbNYbNZbNYbNYbOabObbNYbOcbOdbOebOfbOgbOhbOibOhbOjbOkbOlbOmbOnbOoaaqbOpaaqbOqaaqaaqbOrbOsbOtaaqaaqaaqbOubOvbOwaaqaaqbOxbJRbJRbOyaaqaaqaaqaoybOzaaqaaqaaqbOAaaqaaqbOBaaqbOCaoyaaqbODbOEbOFaaqbOGbCebLEbOHaaibOIbOJbOKbOLaaibOMbLMbONaaqbOObOPbOQbORbOSbOTabIbOUbOVbOWbOXbOYbOZbPaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibPbbPcbPdbPdaaqbPebPfbPgaaiaaiaaiaaiaaiaaiaaiaaibIcaaiaaabPhbPhbPhaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbPibBlbBlbBmaaqaaqaaiaaiaaiaaibPjaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbMsbMtbMsbPkbJsbNWbGCbGCbPlbPmbPmbPmbPnbPmbPmbPmbPobPmbPpbPqabXbPrbPsbPtbPubPtbPvbPwbPxbPybPzbMKaaqaaqaaqbPAaaqbPBbPCbPDbPEbPFaaqbPGbPHbPIbPJbPKaaqbPLbPMbPNaaqbPObPPbPQbPRbPSbPTbPUbPVbPWabXbPXbPYbPZbQabQbabXbQcbQdbQebQfbQgbQhbQibLFbQjbQkbQlbQmbQnbQobCmbQpbQqbQrbQsbQtbQtbQubQvbQwaaqbQxbQybQzbQAbQBbQCbQDaaibQEbQFbQGbQHbQGbQGbQIacDacDbQJbQKbQLbQLaaqbQMbQNbJgaaibrHbQObQPbQQbQQbQPbQQbQRaaiaaabPhbQSbPhaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbQTbQUbQVbQUaaqaaiaaibQWbQXbQWbQYaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbQZbRabQZbRbbRbbRcbRbbRbbRdbRbbRbbRbbRebRbbRbbRbbRfbRbbRbbRgbRhbRibRjbOmbOmbOmbOmbOmbRkbRlbRmbRnbEVbAyaaqbRoabXbRpbRqbRqbRqbRraaqbRsbRtbRtbRtbRuaTFbRvbRwbRxabXbRybRzbRAbRBbRCbRDaaqaaqbREaaqbRFbRGbRHbRIbRJaaqbLAbKabLBbLCbRKbRLbRMbRNacDbRObRPbRQbRRaaibRSbRTbRUbRVbRWbRXbRYbRZbSabSbaaqaaqaaqaaqaaqaaKaCEaovaaibScbQGbQGbSdbQGbSebSfaaiaaibSgbKGbShbShaaqbJebSibJgaaiaaibSjaaiaaiaaiaaiaaiaaiaaiaaiaaibSkaaiaaiaaiaaiaaiaaiaaiaaiaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSlbQUbQUbSmaaiaaibQWbQWbSnbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAbJqaoOaERbSobMubNWbGCbSpbSqbSrbGCbGCbSsbGCbGCbGCbStbGCbSubSvaaqbSwbSxbSybSzbSAbSBbSCbSDbSEbSFbSGbSHbEVaaqbPAaaqbRrbRqbSIbRqbSJaaqbSKbRtbSLbRtbSMaaqbSNbSObSPaaqbSQbSRbSSbSTbSUbSVabIbSWbSXabIbSYbSZbTabTbbTcaaqbTdbKabKabTebRKbRLbTfbTgbThbQkbTibTjbTkbTlbTmbTnbToaaqbTpbTqbTrbTsbTsbTtaaqbTubTvbTwbTxbTybTzbTAaaibScbTBbQGbQGbQGbTCbTDaaiaaibTEbKGbTFbTFaaqbTGbTHbJgaaibUXbTRbURaaibUSbUTbUUbUVbUWbTQeGOdlxbTTbTUbTVbTWbTXbTYbTZaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabUaaaibSlaaiaaibQWbQWbQWbQWbQWbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaiaaiaaqazZbUbaAaaaqbUcaaqaaqazZaoOaAaaaqaaqbUdaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqbUeaaqaaqaaqbUfbUgbUhbUiaaqbRrbRqbRqbRqbUjaaqbSKbRtbRtbUkbUlabIbUmbUnbUoaaqaaqaaqaaqaaqbUpaaqaaqbUqbUraaqaaqaaKaaqaoyaaqaaqbUsbUtbUtaaqaaqbUubUvbUwbUxbUybUzbUAbUBbUCaaqbUDbUEaaqbUFbTqbTrbTsbTsbTsaaqbUGbUHbUIbUJbUKbULbUMaaibUNaaibUObUPbUQaaiaflaaiaaibTMbTLbTFbTFaaqbTKbSibJgbTIbTJbUYbUZbVabVbbVcbVcbVdbVebVcbXabYDbVgbVhbVibVjbVjbVkbVlacfbVmbVnbVobVpaabaabaabaabaabaabaabaabaabaabaabaabaabaaqaaibVqbVrbVrbQWbQWbQWbQWbQWbQWbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaiaaiaaqazZbUbaAaaaqbUcaaqaaqazZaoOaAaaaqaaqbUdaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqbUeaaqaaqaaqbUfbUgbUhbUiaaqbRrbRqbRqbRqbUjaaqbSKbRtbRtbUkbUlabIbUmbUnbUoaaqaaqaaqaaqaaqbUpaaqaaqbUqbUraaqaaqaaKaaqaoyaaqaaqbUsbUtbUtaaqaaqbUubUvbUwbUxbUyeHhbUAbUBbUCaaqbUDbUEaaqbUFbTqbTrbTsbTsbTsaaqbUGbUHbUIbUJbUKbULbUMaaibUNaaibUObUPbUQaaiaflaaiaaibTMbTLbTFbTFaaqbTKbSibJgbTIbTJbUYbUZbVabVbbVcbVcbVdbVebVcbXabYDbVgbVhbVibVjbVjbVkbVlacfbVmbVnbVobVpaabaabaabaabaabaabaabaabaabaabaabaabaabaaqaaibVqbVrbVrbQWbQWbQWbQWbQWbQWbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxWbxWbxWbxWbxWbxWbxWbxWbxWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAbGAbGAaaaaaibVsbVtbVubVvbVwbVxbVybnOaaibVAbVBbVCbVDbVEbVFbVGbVHbVHbVHbVHbVHbVHbVHbVHbVHbVHbVIbVHbVHbVHbVJbVKbVLbVMaaqbVNbVObVPbRqbRraOKbVQbVRbVSbVTbVUaaqbVVbVWbVXbVYbVZbVZbVZbVZbWabWbbWcbWdbWdbWebWebWfbWgbWhaaqaaqbWibWjbWkbWlbWmbRLbWnbUwbWobWpaHtbWqbLKbWraHtbWsbWtaolbWubWvbWwbWxbWybWzaaqbWAbWBbWCbWDbWEbWFbWGaaibWHbWIbWJbWKbWLbWIbWMbWNaaqbTObTNbKHaaqaaqbWQbSibWRaaibWSbWTbWUaaibWVbWWbWWbWXbWYbWZeGNdlxbXbbXcbWWbWWbXdbXebXfbXgbXhbXibXjbXkaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaibXlbQWbQWbQWbQWbQWbQWbQWbQWbQWbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGAbGAbGAbGAbGAaaaaaaaaibXmbXnbXnbXobXnbXnbXpbXqaaibXrbXsbXtbXsbXsbXuaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaqbXvaaqaaqbXwaaqbXxbXybXzbXAbXBaaKbXCbXDbXEbXFbXGaOKbXHbXIbXJabIacfacfacfacfbXKavbbBOabXbXLabXabXbXMbXNbXObXPbXQbXRbXSbXTbXUbXVbXWbXXbXYbXZbYabYbbYcbYdbYebYfbYgbYhaaqaaqaElabXabXabXbYiaaqaaqbYjaaqamzbYkbYlbYmaaibYnbYobYpbYqbYpbYrbYsbYtaaqaaqbYuaaqaaqbYvbYwbSibuCaaiaaibYxaaiaaibYybYzbYAbYBbYCbWWbTPbVfbYEbXfbXfbXfbYFbTSbYGaaibYHbYIbYJbYKaabaabaabaabaabaabaabaabaabaabaabaabaabaaibQWbQWbQWbQWbQWbQWbYLbQWbYMbQWbQWbQWbQWbQWaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYNbYObYPbYObYQaaaaaaaaaaaibYRbXnbXnbXobXnbXnbXpbYSaaibXrbYTbYUbYVbYWbXuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibYXbYYbYZaaqbZaaaqbZbbZcbZdbRrbZeaOLbZfbSKbZgbZhbZiaOLbZjbZkbZlaaiaaibZmbZnbZobZpbZqabnbZrbCAbZsaaqbZtbCAbCAbZuabXbZvbZwbZxbXUbZybZzbZAbZBbZCbZDbZEbZFbZGbZDbZDbZHbZIbZIbZIbZJbZIbZIbZIbZKbZLbZMbZNbZObZPbZQbZRbZSaaibZTbZUbZVbZWbZVbZXbZYbYpbZZcaacabbuCcacbuCbYwbSibuCaaibrHcadcaeaaiaaiaaqaaqaaqcafbWWbWWcagbWWcaicajcakcalcamcanaaicaocapcaqaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaicarcarcarcarcarcarcasbQWcatcarbYMbQWbQWbQWbQWaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12681,9 +12706,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacioaPxaaaaaaaaaaaaaaaaaaaaaaagaaachpcipciqcirciscgbcitcgbciucgbcivciwcixciyaPxaaacizcdnciAcdpciBcdrcdrciCciDciEabIciFciGciHciIaaiciJciKciLciMciNabncjVciPciQciRciSaaibCAbCAaaqaaqaaKciTciUciVciWaaqciXciYciZcjabUwaaKaaicgLcbacgMaaicjbcfrcgOaaiaaaaaaaaicjccjdcjeaaibCAbCAbCAaaiaabaaaaaaaabaaaaabaaaaaaaaaaabaaaaaaaaacjfcjgcjhcjiaaiaaicjjcjkcjlaaibWZcjmcfPcjncjocjpcjqbWWaaibPhbPhaaacjrcjscjscjscjscjscjscjscjscjscjscjscjscjscjscjscjscjscjscjtcjucjvcjvcjwaaiaaibQWbQWcjxbQWbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjyaaaaaaaaacjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjzcjzaaaaaaaaaaaaaaaaaaaaaaaaaaachpcjAcjBcjCcjDcjEcjFcjGcjHcjIcjJaaqbYZcjKaaiaaaaaaaaaaaaaaicjLcjMcjNcjNcjOcjPaaqcjQbZkbUncjRcjScjTcjUcjTcjTcjTciOcjWcjXcjXcjYcjZaaibCAbCAaaqckackbckcckdckeckfaaqckeckfckdckgckhckiaaichYckjchZaaickkcfrcgOaaiaaiaaiaaiaaiaaiaaiaaicklbCAbCAaaiaabaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaackmcknckockpaaiaaickqckrcksaaiaaiaaicktckuckvckuckwaaiaaiaaaaaaaaackxaaaaaaaaaaabaaaaaaaaaaaqaaqaaqaabaaaaaaaabaaaaaaaabaabaabckyckzckAbSmaaqaaiaaibQWbQXbQWaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackBckCckCckCckCckCckCckCckCckCckCckCckCckDaaiaaqaaqaaqaaqaaqaaqckEckFaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaaqaaqaaqckGbZkbUnckHckIckJckKckLckMckNckOckPckQckRckSckTaaibCAbCAaaqckUckVckcckdckdckWaaqckXckdckdckgckcckYaaiaaiaaiaaiaaickkcfrckZaaibCAbCAbCAbCAbCAbCAbCAbCAbCAbCAaaiaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaclaclbclccldaaiaaicleclfclgaaiaaaaaaclhclhcliclhclhaaaaaaaaaaaaaaackxaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcljbBlbBlbBmaaqaaqaaiaaiaaiaaibPjaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjyaaacjyaaaaaacjycjycjycjycjycjycjyaaaaaacjyaaacjyaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkcllclmclnclncloclnclpclqclrclscltcluclvclwclwclxclyclzclAclAclBclCclDclEclFclEclEclEclDclEclEclGclHclIclJbZkbUnclKclLclMaflaaichLacDaveclNclOacDaufccpaaibCAbCAaaqclPclQclRclSclTclUaaqclVclTclWclXclRclYaaibCAbCAbCAclZckkcfrckkclZbCAbCAbCAbCAbCAbCAbCAbCAbCAbCAaaiaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaccDaaicmaaflccDazZcmbcmcbfyaAaaaacmdcmecmfcmgcmfcmecmdaaacjrcjscjscmhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjyaaacjyaaaaaacjycjycjycjycjycjycjyaaaaaacjyaaacjyaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkcllclmclnclncloclnclpclqclrclscltcluclvclwclwclxclyclzclAclAclBclCclDclEclFclEclEclEclDclEclEclGclHeHlclJbZkbUnclKclLclMaflaaichLacDaveclNclOacDaufccpaaibCAbCAaaqclPclQclRclSclTclUaaqclVclTclWclXclRclYaaibCAbCAbCAclZckkcfrckkclZbCAbCAbCAbCAbCAbCAbCAbCAbCAbCAaaiaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaccDaaicmaaflccDazZcmbcmcbfyaAaaaacmdcmecmfcmgcmfcmecmdaaacjrcjscjscmhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjyaaacjycjycjycjycjycjycjycjycjyaaacjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkcmicmjcmkcmjcmlcmjcmicmmcmncmkcmjcmocmpbUocmpcmpcmqbUobUobUobUocmrcmpcmpcmpcmpcmpcmpcmpcmpcmpcmpcmscmtcmucmvcmwcmxcmycmzcmAaaicmBcmCcmDcmEcmFcmGcmHcmIacfcgTcmJabIcmKcmLcmMcmNckdcmOaaqcmOckdcmNcmPckccmQaaicmRacfacfbDTcmScfrcmTaaiazZaoOaoObcDaaiaaiaaiaoNaoOaoPaaiaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaicmUcmVcmWaaiaabaAZcmXaAZaabaaacmdcmYcmZcnacmZcmYcmdaaackxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjyaaacjycjycjycjycjycjycjycjycjyaaacjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnbcmjcnccndcnecnfcnecngcnhcnicnjcnkcnlcmtcnmcnncnncnoabIcnpabIcnqcnrcnqcnqcnqcnqcnqcnqcnqcnqcnqcnqcnscmpcntcnucnvcnwcnxcnycnzcnAcnBcnCcnDcnEcnFcnGcnHcnIacDbXNcnJaRmcnKckdckcckdckdcnLabXcnMckdckdckgckccnNaaicnOaaiaaaaflaaicnPaaiaaiaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaicnQcnRcnSaaiaabaPxcnTaPxaabaaacmdcnUcnVcnWcnXcnUcmdaaackxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjyaaacjycjycjycjycjycjycjycjycjyaaacjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnbcmjcnccndcnecnfcnecngcnhcnicnjcnkcnlcmtcnmcnncnncnoabIcnpabIcnqcnrcnqcnqcnqcnqcnqcnqcnqcnqcnqcnqcnscmpcntcnucnveHmcnxcnycnzcnAcnBcnCcnDcnEcnFcnGcnHcnIacDbXNcnJaRmcnKckdckcckdckdcnLabXcnMckdckdckgckccnNaaicnOaaiaaaaflaaicnPaaiaaiaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaicnQcnRcnSaaiaabaPxcnTaPxaabaaacmdcnUcnVcnWcnXcnUcmdaaackxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjyaaacjycjycjycjycjycjycjycjycjyaaacjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazTaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicnYaaqaaqcnZaaqcoaaaqaaqcobaoPaaqaaqaoNaoOaoPaaqaaqaaqaaqcoccodcoecofcogcohcoicojcokcojcojcolcojcomconcoocopcoqcorbCAcnOaoycoscotcoucovcowcoxaaqcoycowcozckgcoAcoBaaicnOaaiaaacoCcoDcoEcoFaaiaaaaaaaaaaaacoGaaaaaaaaaaaaaaaaaaaaaaaacoGaaaaaaaaicoHcoIcoJcoKcoLcoMcoNaaqcoOcoPcoQacDcoRaaacoSaaaaaaaaacmdcoTcoUcoUcoUcoVcmdaaackxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjycjycjycjycjycjycjycjycjycjycjycjycjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafqafqafqafrafrafqafrafrafrafZafrafrafrafqafqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEccoWcoXcoYcoZcpacpbcpccpdcpecpfcpgcphcpfcpicpjcpkcpkcplaaqcpmcpncpocppbUncpqcprcpscptcpucpvcpucpwcpxcpycpzcpAcpBaaiaaicnOaoyaaiaaicpCaaiaaiabnbAnacfacfacfcpDacfbhmacfcpEaaiaaacpFcpGcoEcpHaaicpIcpJcpJcpKaaiaaibBOacDacDcpLacDacDcpLaufaaaaaaaaicpMcpNcpMcpOcpPckncnRaaqaaKcpQaaKaaiaaiaaacpRaaaaabaaacmdcmdcmdcpScmdcmdcmdaaackxaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjycjycjycjycjycjycjycjycjycjycjycjycjycjycjycjycjyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpTcpTcpTcpTcpTaaaaaaaaaaaaaaaaaaaaaaaaafqaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaaafqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAZcoWcpUcpVcpWcpXcpYcpYcpYcpYcpZcqacqbcpkcqccpkcpkcqdcpkcqebUocqfcqgcppbUncqhaaqcqicptcqjcqkcqlcptcqmcqncqocqpcqqcqrcqscqtcqucqvcqvcqwbSWcgTcqxcqybCAcqzbXNcqAbCAbCAbWgbCAaaiaaacqBcpGcoEcqCaaqcqDcqEcqFcqGcqHcqIcqJcqHcqIcqKcqHcqLcqMabnaaaaaaaaicpMcpMcpMcqNcqOcoMcqPcqQcqRcqScqTcqUaaiaaacpRaabaabaaaaaaaaaafqaaaafqaaaaaaaaackxaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13602,28 +13627,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNcdNddNcaaaaaaaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndMxdLndLndLndMxdMxdLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndMxaaaaaadNedMOaabaabaabaabaabdLndLndLndLndMedNfdNgdNhdNidNjdNkdNldNmdNndNodNpdNqdNrdModNsdNtdModNudNvdNwdNxdNydNzdNAdNBdNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNEdNFdNEaabaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndMxdMxdMxdMxdMxdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdNIdMedNJdNjdNKdNLdNMdNNdNOdNPdNQdNRdNSdNTdNUdNVdNWdMYdNXdNYdNZdOadObdOcdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOddOedOfdOgaabaaaaaadLndLndLndLndLndLndLndMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdOhdMedOidNKdOjdOkdOldOmdOndOmdOodOmdOmdOmdOmdOpdOqdMYdOrdNYdOsdOtdOudNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOydNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdOXdOYdOZdPadPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOydPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQhdQidQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdQOdQPdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdRvdRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdRWdPDdRXdRYdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdSAdSBdRWdSCdRYdRYdRXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdRvdTkdSydPDdQPdTldPDdRYdTmdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdUddSzdUedUfdUgdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdUXdSxdUYdSydUZdPDdVadVbdPDdVcdRWdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdVSdVTdVUdUWdVVdSydSzdVWdNcdPbdVXdPDdVcdQPdRWdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdVSdSydUddWJdVWdVWdSBdRWdVadPDdVcdQjdWKdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdXzdNFdXAdQjdQOdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedXzdVSdPbdVSdQOdPbdPbdYndRWdPbdQjdQjdPDdNFdYodQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdWKdRvdQjdYYdQOdWKdVXdNFdQjdYZdQPdPDdVSdNFdXzdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdZIdPDdZJdZKdPDdSzdPDdZJdZKdPDdSydXzdPDdYndUgdNFdVadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdZIdPDeakdRWdSzdVadQPdSydVVdSydUgdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdRWdVaeaOdUddOydSxdRWdPDdSydQPdPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdVadPbdUgdRWdSydQPdUgdPDdZIdPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdPDdPDdPDdPDdPDdPDdPDdPDdZIdPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOXdNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdYodYZdOZdZIdPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQheakdQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdSCdPadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdUddRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdOYdPDdVVdVSdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdVUdSBdOYdVadVSdVSdVVdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdUddTkdSydPDdPadTldPDdVSdWKdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdQOdSzdUedVXdQPdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdXAdSxdUYdSydUZdPDdQidVbdPDdVcdOYdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdSAdVTdXzdUWdRXdSydSzdVWdNcdPbdUfdPDdVcdPadOYdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdSAdSydQOdWJdVWdVWdSBdOYdQidPDdVcdQjdTmdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdRvdNFdUXdQjdSCdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedRvdSAdPbdSAdSCdPbdPbdYndOYdPbdQjdQjdPDdNFdRYdQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdTmdUddQjdYYdSCdTmdUfdNFdQjdUgdPadPDdSAdNFdRvdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdOydPDdZJdZKdPDdSzdPDdZJdZKdPDdSydRvdPDdYndQPdNFdQidPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdOydPDdRWdOYdSzdQidPadSydRXdSydQPdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdOYdQieaOdQOdOXdSxdOYdPDdSydPadPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdQidPbdQPdOYdSydPadQPdPDdOydPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdPDdPDdPDdPDdPDdPDdPDdPDdOydPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydOydOydOydOydOydOydOydOydOydOydPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDeanecfecgdPDdPDeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebJechechechechechechechechebDebJdWLdWLdWLdWLdWLdWLeciecjeckeclecmecndWLdWLdWLdWLebyebyebydLndLndMxdMxdMxdMxdMxdMxdMxdMxecoecpecqecreaSebSeaSeaSebSdLndLndLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDeaQeaQdVddPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdVYdVYdVYdVYdVYdWLdWLdWLdWLdWLdWLeciecseckdWLdWLdWLdVYdVYdLndLndLndLndMxdMxdMxdMxdMxdMxdMxdWMebSeaSecteaSebSeaSeaSeaSdLndLndLndLndLndMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDecuecvecudPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdLndLndLndLndVYdVYdVYdWLdWLdWLdWLdWLecwdWLdWLdWLdWLdVYdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdWMdMxeaSebBdMxdLndMxdMxdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa