diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index d02e5fd4f46..f35e91d9171 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -1,7 +1,8 @@ -/* SmartFridge. Much todo -*/ +// ------------------------- +// SmartFridge. Much todo +// ------------------------- /obj/machinery/smartfridge - name = "\improper SmartFridge" + name = "smartfridge" icon = 'icons/obj/vending.dmi' icon_state = "smartfridge" layer = 2.9 @@ -15,49 +16,17 @@ var/icon_on = "smartfridge" var/icon_off = "smartfridge-off" var/item_quants = list() - var/ispowered = 1 //starts powered - var/isbroken = 0 - -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/seeds - name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - icon = 'icons/obj/vending.dmi' - icon_state = "seeds" - icon_on = "seeds" - icon_off = "seeds-off" - -/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/extract - name = "\improper Slime Extract Storage" - desc = "A refrigerated storage unit for slime extracts" - -/obj/machinery/smartfridge/extract/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/slime_extract)) - return 1 - return 0 - - +/* /obj/machinery/smartfridge/power_change() - if( powered() ) - src.ispowered = 1 - stat &= ~NOPOWER - if(!isbroken) - icon_state = icon_on + ..() + update_icon() +*/ +/obj/machinery/smartfridge/update_icon() + if(!stat) + icon_state = icon_on else - spawn(rand(0, 15)) - src.ispowered = 0 - stat |= NOPOWER - if(!isbroken) - icon_state = icon_off + icon_state = icon_off + /******************* @@ -65,51 +34,83 @@ ********************/ /obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(!src.ispowered) - user << "\The [src] is unpowered and useless." - return + if(stat) + return 0 + + if(contents.len >= max_n_of_items) + user << "\The [src] is full." + return 0 if(accept_check(O)) - if(contents.len >= max_n_of_items) - user << "\The [src] is full." - return 1 - else - user.before_take_item(O) - O.loc = src - if(item_quants[O.name]) - item_quants[O.name]++ - else - item_quants[O.name] = 1 - user.visible_message("[user] has added \the [O] to \the [src].", \ - "You add \the [O] to \the [src].") - - else if(istype(O, /obj/item/weapon/storage/bag/plants)) - var/obj/item/weapon/storage/bag/plants/P = O - var/plants_loaded = 0 - for(var/obj/G in P.contents) - if(accept_check(G)) - if(contents.len >= max_n_of_items) - user << "\The [src] is full." - return 1 - else - P.remove_from_storage(G,src) - if(item_quants[G.name]) - item_quants[G.name]++ - else - item_quants[G.name] = 1 - plants_loaded++ - if(plants_loaded) - - user.visible_message("[user] loads \the [src] with \the [P].", \ - "You load \the [src] with \the [P].") - if(P.contents.len > 0) - user << "Some items are refused." - - else - user << "\The [src] smartly refuses [O]." + load(O) + user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") + updateUsrDialog() return 1 + var/loaded = 0 + + if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/P = O + for(var/obj/G in P.contents) + if(contents.len >= max_n_of_items) + break + if(accept_check(G)) + load(G) + loaded++ + else if(istype(O, /obj/item/weapon/tray)) + var/obj/item/weapon/tray/T = O + for(var/obj/item/snack in T) + if(contents.len >= max_n_of_items) + break + if(accept_check(snack)) + T.carrying -= snack + load(snack) + loaded++ + else + user << "\The [src] smartly refuses [O]." + updateUsrDialog() + return 0 + + // this is a little backwards but it avoids duplication. + // this code follows storage items and trays only. + if(loaded) + if(contents.len >= max_n_of_items) + user.visible_message("[user] loads \the [src] with \the [O].", \ + "You fill \the [src] with \the [O].") + else + user.visible_message("[user] loads \the [src] with \the [O].", \ + "You load \the [src] with \the [O].") + if(O.contents.len > 0) + user << "Some items are refused." + else + user << "There is nothing in [O] to put in [src]." + return 0 + updateUsrDialog() + return 1 + + + +/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) + return 1 + return 0 + +/obj/machinery/smartfridge/proc/load(var/obj/item/O as obj) + if(istype(O.loc,/mob)) + var/mob/M = O.loc + M.before_take_item(O) + else if(istype(O.loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = O.loc + S.remove_from_storage(O,src) + + O.loc = src + var/n = O.name + + if(item_quants[n]) + item_quants[n]++ + else + item_quants[n] = 1 /obj/machinery/smartfridge/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -126,7 +127,7 @@ ********************/ /obj/machinery/smartfridge/interact(mob/user as mob) - if(!src.ispowered) + if(stat) return var/dat = "Select an item:
" @@ -148,6 +149,17 @@ dat += "(x25)" if(N > 1) dat += "(All)" + /* + if((findtext(O,"seeds") || findtext(O,"mycelium")) && N>1) + var/max_bags = round((N-1)/7)+1 + dat += "(1 Bag)" + if(max_bags > 2) // at least 14 + dat += "(2 Bags)" + if(max_bags > 5) // at least 35 + dat += "(5 Bags)" + if(max_bags > 1) + dat += "(Bag All)" + */ dat += "
" dat += "
" @@ -155,11 +167,39 @@ onclose(user, "smartfridge") return -/obj/machinery/smartfridge/Topic(href, href_list) +/obj/machinery/smartfridge/Topic(var/href, var/list/href_list) if(..()) return usr.set_machine(src) + /* + if(href_list["bagvend"]) // bag seeds and dispense + var/N = href_list["bagvend"] + var/amount = text2num(href_list["amount"]) + if(item_quants[N] <= 0) // Sanity check, there are probably ways to press the button when it shouldn't be possible. + return + + item_quants[N] = max(item_quants[N] - amount*7, 0) + + var/i = amount * 7 + var/j = 0 + var/obj/item/weapon/storage/bag/seeds/SB = new(loc) + for(var/obj/O in contents) + if(name_filter(O.name) == N) + O.loc = SB + i-- + j++ + if(i <= 0) + break + if(j >= 7) + j = 0 + SB.update_icon() + SB = new(loc) + SB.update_icon() + + src.updateUsrDialog() + return + */ var/N = href_list["vend"] var/amount = text2num(href_list["amount"]) @@ -178,3 +218,74 @@ src.updateUsrDialog() return + +// ---------------------------- +// Bar drink smartfridge +// ---------------------------- +/obj/machinery/smartfridge/drinks + name = "drink showcase" + desc = "A refrigerated storage unit for tasty tasty alcohol." + +/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) + if(!istype(O,/obj/item/weapon/reagent_containers) || !O.reagents || !O.reagents.reagent_list.len) + return 0 + if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) + return 1 + + +// ------------------------------------- +// Xenobiology Slime-Extract Smartfridge +// ------------------------------------- +/obj/machinery/smartfridge/extract + name = "smart slime extract storage" + desc = "A refrigerated storage unit for slime extracts." + +/obj/machinery/smartfridge/extract/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/slime_extract)) + return 1 + return 0 + +// ----------------------------- +// Chemistry Medical Smartfridge +// ----------------------------- +/obj/machinery/smartfridge/chemistry + name = "smart chemical storage" + desc = "A refrigerated storage unit for medicine storage." + var/list/spawn_meds = list(/obj/item/weapon/reagent_containers/pill/inaprovaline = 12,/obj/item/weapon/reagent_containers/pill/antitox = 1, + /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 1, /obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 1) + +/obj/machinery/smartfridge/chemistry/New() + ..() + for(var/typekey in spawn_meds) + var/amount = spawn_meds[typekey] + if(isnull(amount)) amount = 1 + while(amount) + var/obj/item/I = new typekey(src) + load(I) + amount-- + +/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/storage/pill_bottle)) + if(O.contents.len) + for(var/obj/item/I in O) + if(!accept_check(I)) + return 0 + return 1 + return 0 + if(!istype(O,/obj/item/weapon/reagent_containers)) + return 0 + if(istype(O,/obj/item/weapon/reagent_containers/pill)) // empty pill prank ok + return 1 + if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted + return 0 + if(istype(O,/obj/item/weapon/reagent_containers/syringe) || istype(O,/obj/item/weapon/reagent_containers/glass/bottle) || istype(O,/obj/item/weapon/reagent_containers/glass/beaker) || istype(O,/obj/item/weapon/reagent_containers/spray)) + return 1 + return 0 + +// ---------------------------- +// Virology Medical Smartfridge +// ---------------------------- +/obj/machinery/smartfridge/chemistry/virology + name = "smart virus storage" + desc = "A refrigerated storage unit for volatile sample storage." + spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index d197d3ca2eb..1837e3b2eef 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -87,6 +87,17 @@ ..() reagents.add_reagent("mutagen", 30) + +/obj/item/weapon/reagent_containers/glass/bottle/synaptizine + name = "synaptizine bottle" + desc = "A small bottle of synaptizine." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle20" + + New() + ..() + reagents.add_reagent("synaptizine", 30) + /obj/item/weapon/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle." diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index f949a60ee5e..d05d5ac7caa 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -3322,11 +3322,11 @@ "blT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/teleporter) "blU" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) "blV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay) -"blW" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/medical/medbay) +"blW" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -4; pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "blX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/medbay) "blY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/medbay) "blZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/medbay) -"bma" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/medbay) +"bma" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/medical/medbay) "bmb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/noticeboard{pixel_y = 32},/obj/machinery/camera{c_tag = "Medbay West"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bmc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bmd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) @@ -4717,7 +4717,7 @@ "bMK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bML" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/medical{name = "Break Room"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bMM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"bMN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 8; pixel_y = 22},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bMN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/medbay) "bMO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/firealarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bMQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "Virology Module"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -4762,8 +4762,8 @@ "bND" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/turf/simulated/floor/plating,/area/atmos) "bNE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/n20,/area/atmos) "bNF" = (/turf/simulated/floor/engine/n20,/area/atmos) -"bNG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/medical/virology) -"bNH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bNG" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/wall,/area/medical/chemistry) +"bNH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/medical/virology) "bNI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bNJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bNK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -4829,8 +4829,8 @@ "bOS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine/n20,/area/atmos) "bOT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bOU" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bOV" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) -"bOW" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"bOV" = (/obj/machinery/smartfridge/chemistry/virology,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"bOW" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bOX" = (/obj/machinery/computer/pandemic,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "bOY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/virology) "bOZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Isolation A"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -4876,7 +4876,7 @@ "bPN" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "on"; id = "n2o_in"; on = 1; pixel_y = 1},/turf/simulated/floor/engine/n20,/area/atmos) "bPO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/maintenance/asmaint) "bPP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint) -"bPQ" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = -32},/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"bPQ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/medical/virology) "bPR" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "bPS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "bPT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -4923,7 +4923,7 @@ "bQI" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics West"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/atmos) "bQJ" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Air to Port"; on = 0},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/atmos) "bQK" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/atmos) -"bQL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,/obj/item/weapon/reagent_containers/glass/bottle/cold{pixel_x = 3; pixel_y = 3},/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"bQL" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bQM" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bQN" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen/red,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "bQO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7553,12 +7553,15 @@ "cPm" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) "cPn" = (/obj/structure/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) "cPo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"cPp" = (/obj/structure/table,/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/light{dir = 8},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cPq" = (/obj/machinery/camera{c_tag = "Theatre Storage"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/crew_quarters/theatre) "cPr" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "cPs" = (/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "cPt" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/mine/north_outpost) "cPu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/mine/north_outpost) "cPv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/mine/north_outpost) +"cPw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cPx" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = -32},/obj/item/device/healthanalyzer,/obj/item/clothing/glasses/hud/health,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cPA" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/north_outpost) "cPB" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/mine/north_outpost) "cPC" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/north_outpost) @@ -8104,8 +8107,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXwbfWbeDbbBbfXaXwaaaaaaaaaaafaafbfYbfYbfYbfYbfYbfYbfYaaaaaabfZbgabgbbgcbgdbdkbdkbdkbdkbdkbdkbdkbdkbgebbOaVObgfbggbghbgibgjbgkbdpaTpaTpbglbgmbgnbhNbnZbbabbabnYbbabpqboabgqaafbgubgvbfgbgwbfgbgwbfgbgxbguaafbgybgzaYbbgAbgBbgCbgDbgEbgFbgGaCxbgHbgIbgJbgKbfqbgLbgMaZybgNbcnbfsbfubprbaXbgPaZEbgQbgRbgSaZEbgTbgUbgVbgWbgXbgYbgXbgZbhabajbhabhabhabagaZMbhcbcBbcBbfEbhdbhebhfbhgbhhbhhbhibhjbhkaZPbhlbfNbhmaZUbhnbhobhpbfSbexbhqaZUcNQcNOcNNcNOcNOcNOcNPaZWaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXwbhsbhtbhuaZZaXwaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYaaaaaabhvbhwbdkbhxbhybhybhybhybhybhybhybhybhybhAbhBbhCbhDbhEbhFbhGbhHaXKbhIbhJbhKbhLbhMbmPbhNbhNbgqbmRbmQbmWaYVaZIbgqaaabhTbfhbfgbhVbhWbhVbfgbhXbhTaaabhYbhZaYbbiabibbicbibbidbiebgGaCxaCxaZybifbdObfqbigbihaZybiibijbikbilbimbaXbinbiobipbiqbiraZEaZFbisaZFaZFaZFbitbitbitbitbitbitbitbitbczaZMbfBbfCbfDbiubivbiwbixbiybiybiybhibcGbizaZPbiAbfNbiBaZUbiCbiDbiCbiEbexbiFaZUbmJbmJbmJbmJbmJbmJbvMaZWaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbiGbiHbiIbiJbdkbdkbdkbiKbiKbiKbiKbdkbdkbdkbdkbeKbiLaVObiMbiNbiObiPbiQaXKaVObiRbiSbjabiUbiVbiWbhSbiYbiZbhRbhQbhPbhObgOayEbjfbjgbjhbfgbhVbfgbjibjjbjkbjlbjmbjnbjobjpbibbjqbibbidbiebjraCxaCxaZybjsbdObfqbjtbjuaZybgrbcnbaXbjwbjxbjybjzbiibjAbjBbjCbjDbjEbjFbaXbjGbjHbjIbjJbjKbjLbjMbjNbjObjPbbjbbkbjQbjRbjSbjTbjUaZPbjVbiybiybjWbjXbcGbjYaZPbjZbkabkbaZUbkcbkdbkebkfbexbkgaZUcMBcNhcNhcNhcNhcNhbvMaZWaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbkhbkibkhbkjbkkbdkbdkbdkbdkbdkbdkbdkbdkbklaTjaTjbkmaVOaVObknbkobkpbkqaXKaVOaVObkrbgtbhMbktbkubkvbgobgsbgpbfbbfabfcbgqaaabkCbkCbkDbkEbkFbfgbkGbkCbkCaaabkHbkIbkIbkIbkIbkIbkIbkJbkKbkLbkMbkMaZyaZybkNbkObkPaZyaZybkQbcnbaXbaXbaXbaXbkRbaXbkTbkUbaXbaXbaXbkUbaXbaXbjHbkVbkWbkXbkYbkZblablbbitblcbldblebleblfaVCbcBaZPblibcGbcGbljblkbcGbllblmblnblnbloblpblpblqbbtblrbbtaZUaZUcMycNhbwEbzpbxUcNhbvMbeBaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbltblubltblvbdkbdkbdkbiKbiKbiKbiKbdkbdkblwblxaTjblyaVOaVObknblzbhGbkqaXKbeZaVObkrbgtbazaCxaKVbkvbeYbeXbeWblIblIblAbgqaafaafbkCbkCblKblLblKbkCbkCaafaafbbQblMblNblOblPblQblRblSblTblUaCxaCxblVblWblXblYblZbmabmbbmcbmdbmcbmebmcbmcbmfbmcbmhbmgbmcbmcbmcbmibmjbmjbmkbkVbmlbkXbmmbmmbmnbmobitbczaZMbmpbmqbmrbmsbmsaZPbmtbmubmvblmbmwbcGbmxblmbmybmzbmAbmBbmCcMwcKobDUboObnGbyebxSbxRbwEbwFbxTcNhbvMbfVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbkhbkibkhbkjbkkbdkbdkbdkbdkbdkbdkbdkbdkbklaTjaTjbkmaVOaVObknbkobkpbkqaXKaVOaVObkrbgtbhMbktbkubkvbgobgsbgpbfbbfabfcbgqaaabkCbkCbkDbkEbkFbfgbkGbkCbkCaaabkHbkIbkIbkIbkIbkIbkIbkJbkKbkLbkMbkMaZyaZybkNbkObkPbNGaZybkQbcnbaXbaXbaXbaXbkRbaXbkTbkUbaXbaXbaXbkUbaXbaXbjHbkVbkWbkXbkYbkZblablbbitblcbldblebleblfaVCbcBaZPblibcGbcGbljblkbcGbllblmblnblnbloblpblpblqbbtblrbbtaZUaZUcMycNhbwEbzpbxUcNhbvMbeBaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbltblubltblvbdkbdkbdkbiKbiKbiKbiKbdkbdkblwblxaTjblyaVOaVObknblzbhGbkqaXKbeZaVObkrbgtbazaCxaKVbkvbeYbeXbeWblIblIblAbgqaafaafbkCbkCblKblLblKbkCbkCaafaafbbQblMblNblOblPblQblRblSblTblUaCxaCxblVbmablXblYblZbMNbmbbmcbmdbmcbmebmcbmcbmfbmcbmhbmgbmcbmcbmcbmibmjbmjbmkbkVbmlbkXbmmbmmbmnbmobitbczaZMbmpbmqbmrbmsbmsaZPbmtbmubmvblmbmwbcGbmxblmbmybmzbmAbmBbmCcMwcKobDUboObnGbyebxSbxRbwEbwFbxTcNhbvMbfVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbmKbiHbmLbmMbdkbdkbdkbdkbdkbdkbdkbdkbdkblwbmNaTjbmOaWSaVObknaVObdBaVOaXKaVObiRbhKbmSbazaCxaKVbkvbgqbdAbdzbbSbbRbdybgqaaaaaaaafbkCbkCbmYbkCbkCaafaaaaaabbQbmZbnabnbbncbndbndbnebnfbngaCxaCxbnhbnibcnbkTbnjbnkbnlbnkbnmbnkbnnbnkbnobnpbjCbnqbaXbaXbaXbnrbnsbnsbntbnubnvbnwbkXbnxbnyblabmobitaZLaZMbnzbnzbnAbnzbnzaZPblmblmblmblmbnBbnCbbrblmbnDbnEbnFbnGbnGbnHbfNbfNbugbfNbrvbwDbwDbwEbwFbwEcNhbvMbfVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaabfYbfYbfYbfYbfYbfYbfYbltblubltbhwbnJbdkbdkbnKbnLbnMbnLbnLbnLbnObnPaYYbnQbnRbdsbnSbdsbnTbdtbnRbnUbnVbiSbmSbazaRXbnWbnXbgqbkBbkAblDblBblAbgqaaaaaaaafbodboebofbogbodaafaaaaaablFboibojbojbokbolbombonbkKbooaCxaCxbiibiibopbkTboqborbosbotboubovbowboxbosbotboyboybotbosaZDaZDbnsbkxbmmbkyboAbkVbkXboBboCboDboEbitboFboGboHboIboJbnGbnGboKbnGbnGboLboMboNbnGboObnGboPboQboRboSboTboUboVboVboVboVboVcAEcACcACcACcADcNqcPobfVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfYbfYbfYbfYbfYbfYbfYboYboZboYbpabpbbpabpabpabpabpabpcaVLbdkblwbpeaTjbpfbpgbphbpibeLbpjbpkbplbpmbpjbpjbpnbazaDYbpobkvbgqbksbjvbkwbdzbkzbgqaaaaaaaafbodbptbpubpvbodaafaaaaaabbQbpwbpxbpybpzbolbombonbkKbpAaCxaCxbpBbpCbpDbkTbpEbpFbosbpGbpHbpIbpJbpKbpLbpMbpNbpNbpObosbaXbaXbnsbiXbmmbpQbpRbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqbbqcbqdbqebqdbqdbqfbqdbmDbqgbqdbqdbqdbqhbqibqjbqkcABcrpcrocMTcMPcMUbvEcrOcrNbwDbwDcqVcNhbbxbfVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8126,11 +8129,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaabBHbzYbBHaaaaaaaaaaafbIcbJdbIebIebIebIebIgbJebJfbIcbJgbFYbJhbJibJjbJkbIsbJlbHxbJmbJnbJobIsbIsbIsbHobJpbIubJqbIsbJrbJsbJtbJubJvbJwbJxbJybJzbJAbJBbIBaafbJCbHzbHAbJDbIJbJEbIJbHAbJFbJGbJHbHAbIKbJIbIKbJJbIKbHEbwIbwJbJKbJKbJLbJMbJNbJObJPbJQbJRbJSbJTbJUbJVbwJbjZbjZbjZbjZbJWbwPbwPbwPbwPbJXbwPbwPbwPbwPbwPbJYbGYbmJbmJbmJbryaZWaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbupbuqbEjbEhbEhbvRbvRbvRbvRbvRbvRbvRbvRbuqbuqaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaabBHbFPbBHaaaaafbJZbKabIcbKbbKcbKdbIebIebKebKfbIgbKgbKhbFYbKibKjbKkbKlbIsbIsbIsbKmbKnbIsbKobIsbKpbKqbIsbKrbKsbKtbKubKvbKwbKxbKybKzaafbKAbKBbJBbKCbIBaafbKDbHzbHAbKEbIJbJEbJIbKFbKGbJGbKHbHAbIJbKIbKJbKKbIJbHEbKLbKMbDRbDRbDRbDRbFsbKNbKObKPbFsbDRbDRbDRbDRbwJbKQbKRbKRbKRbKRbKRbKRbKRbKRbKSbKRbKRbKRbKRbKRbKTbKUbKVaZWaZWaZWaZWaaaaaaaafahDahDahDaaaaafaaaaaaaafaaaaaaaafaaaaaaaafaaaaaabypbuqbwRbuqbuqbvRbvRbvRbvRbvRbvRbvRbuqbuqaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaabBHbzYbBHaaaaafbKWaRoaRmaRnbMnbIebIebIebIebIebLcbIcbLdbLebLfbLgbLhbLibJobIsbLjbLkbLlbLmbLnbLobLpbLqbLqbLrbLsbJrbLtbLubLvbLwbLxbLybLzbJybLAbJBbJBbIBaafbLBbHzbHAbLCbLDbLEbLFbHEbHAbLGbHAbHAbLHbLIbLJbLKbLLbLMbLNbLObLPbLQbLQbLRbLSbGEbLTbLUbLVbLWbxVbxVbxVbwJbLXaZWaZWaZWaZWaZWbmJaZWaZWaZWaZWaZWaZWbLYbLZbMabMbbMcbMdbMebMdbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMfbMgbMhbMhbMibuqbuqbvRbvRbMjbvRbvRbuqbuqaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaabDdbzYbDdaaaaafbMkcambIcbMmbMnbIebIebMpbMqbMrbMsbIcbKhbFYbKibHhbKkbMtbMubIsbIsbMvbHjaWNbMxbMybMzbIsbIsbMAbMBbMCbMDbMEbMFbMGbMFbMHaafbIBbIBbIBbIBbIBaafbsCbHzbHAbMIbMJbMKbMLbMMbMNbMObMPbMQbMRbMSbMTbMUbMRbMVbMWbLObxVbxVbxVbMXbMYbGEbMZbGEbNabNbbxVbxVbxVbwJbLXaZWbNcbNdbNeaZWbmJaZWbNfbNgbNhbNiaZWbNjaZWbNkbNlbNhaZWaZWaZWaafaaaaaaaafahDahDahDaaaaafaaaaaaaafaaaaaaaafaaaaaaaafaafaafbNmbNnbvQbwSbupbuqbuqbvRbvSbvRbuqbuqaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNoaaaaafaafbNpbNpbNpbNpbNpbNpbNpbNpbwcbFPbwcbwcbwcbwccambIcbIcbNqbIcbIcbIcbIcbIcbIcbIcbNrbNsbKibNtbGbbHibHibNubNvbNubHjbIsbIsbIsbMzbNwbIzbIzbNxbNybNzbJsbNAbNBbNCbNDbJxbJybNEbNFbNFbIBaafbsCbHzbHAbHAbHAbLMbNGbNHbNIbNJbNKbNKbNLbNMbNKbMKbKIbNNbMWbLObxVbxVbxVbNObNPbLUbNQbGEbNRbNSbLQbLQbNTbwJbLXaZWbNUbNVbNWaZWbmJaZWbNXbNYbNZbOaaZWbObbOcbOcbOdbOebOcaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbOfbunbunbuobupbupbuqbuqbuqbuqburaaaaafaaaaafaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOgbOhbOibOjbOkbOjbOlbOmbOnbOobOpbOqbOrbNpbOsbOtbOubOubOubOubthbtgbtgbpdbohbocbnNbOwbOwbOwbOzbOAbFYbKibOBbOCbODbIzbIzbIzbOEbOFbIzbIzbOGbOHbOIbIsbOJbOKbOLbOMbIsbONbOObOPbKzaafbKAbOQbORbOSbIBaafbsCbOTbGvbGvbGvbOUbHAbOVbNMbOWbOXbOYbOZbLKbPabPbbPcbNNbMWbLObDRbDRbDRbDRbPdbPebMZbPfbPdbDRbDRbDRbDRbwJbLXaZWaZWbPgaZWaZWbmJaZWaZWaZWaZWbPhaZWbObbOcbPibPjbPkbOcaafaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabPlbPlbPlbPlbPlbPmbPnbPobPpbPpbPobNpbMlbPrbPrbPrbPrbPrbPrbPrbPrbPsbPsbPtbPsbPsbPubyxbwcbPvbFYbKibOBbPwbPxbPybPzbLqbPAbPBbLqbLqbPCbPDbPEbPFbPGbPHbPIbPJbIsbONbPKbPLbPMbLzbJybPNbNFbNFbIBaafbPObPPbPPbPPbxDbHzbHAbPQbKKbIJbPRbPSbNIbPTbPSbPTbNIbNNbMWbLObLPbLQbLQbPUbLSbGEbLTbLUbPVbPWbxVbxVbxVbwJbLXbLYbPXbPXbPXbPXbPXbPXbPXbPXbPXbPYbPXbPZbOcbQabQbbQcbOcaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbQdbQebQfbQgbQfbQhbQibQjbQkbQlbtjbNpbMlbPrbQnbQobQpbQqbQrbQsbQnbQtbQubQvbtibPsbPsbyxbwcbQxbFYbKibQybQzbQAbQBbQCbQDbQEbQFbQEbQGbQHbQIbHibHibHibQJbIsbOLbIsbONbOObQKbKzaafbIBbIBbIBbIBbIBaafaafaafaafaafbsCbHzbHAbQLbKKbQMbQNbPSbIJbQObPSbQObQPbNNbMWbLObxVbQQbxVbQRbMYbGEbMZbGEbNabQSbxVbQQbxVbwJbLXbQTaZWbQUbQVaZWaZWaZWbQUbQWbQWbQVaZWaZWbOcbQXbQYbQZbOcaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaabDdbzYbDdaaaaafbMkcambIcbMmbMnbIebIebMpbMqbMrbMsbIcbKhbFYbKibHhbKkbMtbMubIsbIsbMvbHjaWNbMxbMybMzbIsbIsbMAbMBbMCbMDbMEbMFbMGbMFbMHaafbIBbIBbIBbIBbIBaafbsCbHzbHAbMIbMJbMKbMLbMMblWbMObMPbMQbMRbMSbMTbMUbMRbMVbMWbLObxVbxVbxVbMXbMYbGEbMZbGEbNabNbbxVbxVbxVbwJbLXaZWbNcbNdbNeaZWbmJaZWbNfbNgbNhbNiaZWbNjaZWbNkbNlbNhaZWaZWaZWaafaaaaaaaafahDahDahDaaaaafaaaaaaaafaaaaaaaafaaaaaaaafaafaafbNmbNnbvQbwSbupbuqbuqbvRbvSbvRbuqbuqaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNoaaaaafaafbNpbNpbNpbNpbNpbNpbNpbNpbwcbFPbwcbwcbwcbwccambIcbIcbNqbIcbIcbIcbIcbIcbIcbIcbNrbNsbKibNtbGbbHibHibNubNvbNubHjbIsbIsbIsbMzbNwbIzbIzbNxbNybNzbJsbNAbNBbNCbNDbJxbJybNEbNFbNFbIBaafbsCbHzbHAbHAbHAbLMbPQbQLbNIbNJbNKbNKbNLbNMbNKbMKbKIbNNbMWbLObxVbxVbxVbNObNPbLUbNQbGEbNRbNSbLQbLQbNTbwJbLXaZWbNUbNVbNWaZWbmJaZWbNXbNYbNZbOaaZWbObbOcbOcbOdbOebOcaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbOfbunbunbuobupbupbuqbuqbuqbuqburaaaaafaaaaafaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOgbOhbOibOjbOkbOjbOlbOmbOnbOobOpbOqbOrbNpbOsbOtbOubOubOubOubthbtgbtgbpdbohbocbnNbOwbOwbOwbOzbOAbFYbKibOBbOCbODbIzbIzbIzbOEbOFbIzbIzbOGbOHbOIbIsbOJbOKbOLbOMbIsbONbOObOPbKzaafbKAbOQbORbOSbIBaafbsCbOTbGvbGvbGvbOUbNHbOVbIJbOWbOXbOYbOZbLKbPabPbbPcbNNbMWbLObDRbDRbDRbDRbPdbPebMZbPfbPdbDRbDRbDRbDRbwJbLXaZWaZWbPgaZWaZWbmJaZWaZWaZWaZWbPhaZWbObbOcbPibPjbPkbOcaafaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaabPlbPlbPlbPlbPlbPmbPnbPobPpbPpbPobNpbMlbPrbPrbPrbPrbPrbPrbPrbPrbPsbPsbPtbPsbPsbPubyxbwcbPvbFYbKibOBbPwbPxbPybPzbLqbPAbPBbLqbLqbPCbPDbPEbPFbPGbPHbPIbPJbIsbONbPKbPLbPMbLzbJybPNbNFbNFbIBaafbPObPPbPPbPPbxDbHzbLMcPxbNMcPwbPRbPSbNIbPTbPSbPTbNIbNNbMWbLObLPbLQbLQbPUbLSbGEbLTbLUbPVbPWbxVbxVbxVbwJbLXbLYbPXbPXbPXbPXbPXbPXbPXbPXbPXbPYbPXbPZbOcbQabQbbQcbOcaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbQdbQebQfbQgbQfbQhbQibQjbQkbQlbtjbNpbMlbPrbQnbQobQpbQqbQrbQsbQnbQtbQubQvbtibPsbPsbyxbwcbQxbFYbKibQybQzbQAbQBbQCbQDbQEbQFbQEbQGbQHbQIbHibHibHibQJbIsbOLbIsbONbOObQKbKzaafbIBbIBbIBbIBbIBaafaafaafaafaafbsCbHzbHAcPpbKKbQMbQNbPSbIJbQObPSbQObQPbNNbMWbLObxVbQQbxVbQRbMYbGEbMZbGEbNabQSbxVbQQbxVbwJbLXbQTaZWbQUbQVaZWaZWaZWbQUbQWbQWbQVaZWaZWbOcbQXbQYbQZbOcaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbQdbRabRbbRcbRdbPobRebPobRfbPobPobuAbMlbPrbQnbWobRkbQnbRlbRmbQnbRnbRobRpbUkbRrbPsbyxbwcbPvbFYbKibRsbRtbGgbRubRvbGgbRwbRxbRybGgbRzbMzazObHiccWbPJbIsbPHcdbbRDbREbRFbNDbJxbJybRGbRHbRIbIBaafaaaaaaaaaaaabJCbHzbHAbRJbQObRKbRLbRMbMIbRNbRMbRNbMIbNNbMWbLObxVbxVbxVbRObRPbLUbNQbGEbNRbRQbLQbLQbNTbwJbLXbQTaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabRRbRSbRTbRUbRVaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbQdbRWbRXbRYbRXbRZbSabSbbScbSdbSebNpbSfbPrbSgbVBbShbQnbSibSgbSgbRnbSjbSkbtkbSmbSnbSobSpbSqbSrbSsbStbSubSvbSwbSxbSybSzbSAbSBbGgbIsbMzbRAbSCccWbSDbIsbPHcdbbONbOObSEbKzaafbKAbSFbSGbSHbIBaafaaaaaaaaaaaabKDbHzbHAbHAbSIbSJbHAbHAbHAbHAbHAbHAbHAbNNbMWbLObDRbDRbDRbDRbPdbSKbMZbSLbPdbDRbDRbDRbDRbwJbLXbSMaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafbSNbSObSNaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbPlbPlbPlbPlbPlbNpbNpbNpbNpbNpbNpbNpbSPbPrbSgbSgbQnbQnbQnbSgbSQbSRbSSbSTbxwbSVbPsbyxbwcbSWbSXbSYbSZbTabTbbTcbTdbTebTfbTgbThbGgbTibTjbRAbHiccWbTkbIsbTlcdbbONbTmbTnbPMbLzbJybTobRHbRHbIBaafaaaaaaaaaaaabLBbHzbTpbHAbHAbTqbHAbTrbTsbTtbTpbTpbTpbTubMWbLObLPbLQbLQbTvbLSbGEbLTbLUbTwbTxbxVbxVbxVbwJbLXbTyaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafbTzbRTbTzaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa