From ada66fabd4f6b023071101f0b11bfc0ce8fb1a3f Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 18 Jun 2015 17:47:52 -0400 Subject: [PATCH] Update II --- code/datums/mind.dm | 3 + code/game/turfs/turf.dm | 2 - .../living/simple_animal/revenant/revenant.dm | 214 ++++++++++++++---- .../revenant/revenant_abilities.dm | 87 ++++--- .../revenant/revenant_spawn_event.dm | 35 ++- code/modules/mob/mob_movement.dm | 10 + code/modules/reagents/Chemistry-Reagents.dm | 9 + icons/effects/effects.dmi | Bin 276813 -> 276951 bytes 8 files changed, 265 insertions(+), 95 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 1585302f64b..73b92eda82d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -90,6 +90,9 @@ datum/mind proc/store_memory(new_text) memory += "[new_text]
" + proc/wipe_memory() + memory = null + proc/show_memory(mob/recipient) var/output = "[current.real_name]'s Memory
" output += memory diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index e861ac1786a..be8743242a3 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -304,8 +304,6 @@ M.take_damage(100, "brute") /turf/proc/Bless() - if(flags & NOJAUNT) - return flags |= NOJAUNT ///////////////////////////////////////////////////////////////////////// diff --git a/code/modules/mob/living/simple_animal/revenant/revenant.dm b/code/modules/mob/living/simple_animal/revenant/revenant.dm index 953a6f371de..1dc15bbac83 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant.dm @@ -8,7 +8,7 @@ desc = "A malevolent spirit." icon = 'icons/mob/mob.dmi' icon_state = "revenant_idle" - incorporeal_move = 1 + incorporeal_move = 3 invisibility = INVISIBILITY_OBSERVER health = 25 maxHealth = 25 @@ -31,7 +31,7 @@ var/essence_regen_cap = 25 //The regeneration cap of essence (go figure); regenerates every Life() tick up to this amount. var/essence_regen = 1 //If the revenant regenerates essence or not; 1 for yes, 0 for no var/essence_min = 1 //The minimum amount of essence a revenant can have; by default, it never drops below one - var/strikes = 3 //How many times a revenant can die before dying for good + var/strikes = 0 //How many times a revenant can die before dying for good var/revealed = 0 //If the revenant can take damage from normal sources. var/inhibited = 0 //If the revenant's abilities are blocked by a chaplain's power. @@ -43,24 +43,13 @@ strikes-- src << "Your essence has dropped below critical levels. You barely manage to save yourself - [strikes ? "you can't keep this up!" : "next time, it's death."]" else if(strikes <= 0) - src << "NO! No... it's too late, you can feel yourself fading..." - src.notransform = 1 - src.revealed = 1 - src.invisibility = 0 - playsound(src, 'sound/effects/screech.ogg', 100, 1) - src.visible_message("The revenant lets out a waning screech as violet mist swirls around its dissolving body!") - src.icon_state = "revenant_draining" - sleep(30) - src.death() + death() maxHealth = essence * 2 if(!revealed) health = maxHealth //Heals to full when not revealed if(essence_regen && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate essence++ -/mob/living/simple_animal/revenant/Process_Spacemove(var/check_drift = 0) - return 1 //Mainly to prevent the no-grav effect - /mob/living/simple_animal/revenant/ex_act(severity) return 1 //Immune to the effects of explosions. @@ -99,16 +88,25 @@ ..() spawn(5) if(src.mind) + src.mind.wipe_memory() src << 'sound/effects/ghost.ogg' - src.store_memory("I am a revenant. My spectral form has been empowered. My only goal is to gather essence from the humans of [world.name].") src << "
" - src << "You are a revenant!" + src << "You are a revenant." src << "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant." - src << "You are not dead, not alive, but somewhere in between. You are capable of very limited interaction with both worlds." + src << "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds." src << "You are invincible and invisible to everyone but other ghosts. Some abilities may change this." - src << "Your goal is to gather essence from humans. Your essence passively regenerates up to 25E over time. You can use the Harvest abilities to gather more from corpses." - src << "Be sure to read the wiki page at https://tgstation13.org/wiki/Revenant !" - src << "
" + src << "To function, you are to drain the life essence from humans. This essence is a resource and will power all of your abilities." + src << "You do not remember anything of your past lives, nor will you remember anything about this one after your death." + src << "Be sure to read the wiki page at https://tgstation13.org/wiki/Revenant to learn more." + var/datum/objective/revenant/objective = new + objective.owner = src + src.mind.objectives += objective + src << "Objective #1: [objective.explanation_text]" + var/datum/objective/revenantFluff/objective2 = new + objective2.owner = src + src.mind.objectives += objective2 + src << "Objective #2: [objective2.explanation_text]" + ticker.mode.traitors |= src.mind //Necessary for announcing if(!src.giveSpells()) message_admins("Revenant was created but has no mind. Trying again in five seconds.") spawn(50) @@ -121,50 +119,58 @@ src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/revenant_harvest src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/revenant_transmit src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/revenant_light + src.mind.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile return 1 return 0 /mob/living/simple_animal/revenant/death() - if(!strikes) + if(strikes) return 0 //Impossible to die with strikes still active ..(1) - reveal(10, 1) - visible_message("[src] pulses with an eldritch purple light as its form unwinds into smoke.") + src << "NO! No... it's too late, you can feel yourself fading..." + notransform = 1 + revealed = 1 + invisibility = 0 + playsound(src, 'sound/effects/screech.ogg', 100, 1) + visible_message("[src] lets out a waning screech as violet mist swirls around its dissolving body!") + icon_state = "revenant_draining" + for(var/i = alpha, i > 0, i -= 10) + sleep(0.1) + alpha = i + visible_message("[src]'s body breaks apart into blue dust.") + new /obj/item/weapon/ectoplasm/revenant(get_turf(src)) ghostize() qdel(src) return + /mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) ..() if(istype(W, /obj/item/weapon/nullrod)) - src.visible_message("The revenant screeches and flails!", \ - "The null rod invokes agony in you! You feel your essence draining away!") - src.essence -= 25 //hella effective - src.inhibited = 1 + visible_message("[src] violently flinches!", \ + "The null rod invokes agony in you! You feel your essence draining away!") + essence -= 25 //hella effective + inhibited = 1 spawn(30) - src.inhibited = 0 + inhibited = 0 -/obj/effect/proc_holder/spell/proc/essence_check(var/essence_cost, var/silent = 0) - var/mob/living/simple_animal/revenant/W = usr - if(!istype(usr) || !usr) +/mob/living/simple_animal/revenant/proc/castcheck(var/essence_cost) + var/mob/living/simple_animal/revenant/user = usr + if(!istype(user) || !user) return - if(W.essence < essence_cost) - if(!silent) - W << "You need [essence_cost]E to use [name] but you only have [W.essence]E available. Harvest some more things." - return 0 - W.essence -= essence_cost - return 1 - - - -/mob/living/simple_animal/revenant/proc/wallcheck() var/turf/T = get_turf(usr) - if(!istype(T, /turf/simulated/wall)) - return 1 - usr << "You can't use abilities from a wall. What did you expect?" - return 0 + if(istype(T, /turf/simulated/wall)) + user << "You cannot use abilities from inside of a wall." + return 0 + if(!user.change_essence_amount(essence_cost, 1)) + user << "You lack the essence to use that ability." + return 0 + if(user.inhibited) + user << "Your powers have been suppressed by holy energies!" + return 0 + return 1 @@ -172,14 +178,15 @@ var/mob/living/simple_animal/revenant/user = usr if(!istype(usr) || !usr) return - if(!essence_amt) + if(user.essence + essence_amt <= 0) return user.essence += essence_amt + user.essence = Clamp(user.essence, 0, INFINITY) if(!silent) - if(essence_amt >= 0) - user << "Gained [essence_amt]E from [source]." + if(essence_amt > 0) + user << "Gained [essence_amt]E from [source]." else - user << "Lost [essence_amt]E from [source]." + user << "Lost [essence_amt]E from [source]." return 1 @@ -192,8 +199,117 @@ R.invisibility = 0 if(stun) R.notransform = 1 + R << "You have been revealed [stun ? "and cannot move" : ""]." spawn(time) R.revealed = 0 R.invisibility = INVISIBILITY_OBSERVER if(stun) R.notransform = 0 + R << "You are once more concealed [stun ? "and can move again" : ""]." + +/datum/objective/revenant + var/targetAmount = 100 + +/datum/objective/revenant/New() + targetAmount = rand(100,200) + explanation_text = "Absorb [targetAmount] points of essence." + ..() + +/datum/objective/revenant/check_completion() + if(!istype(owner.current, /mob/living/simple_animal/revenant) || !owner.current) + return 0 + var/mob/living/simple_animal/revenant/R = owner.current + if(!R || R.stat == DEAD) + return 0 + var/essenceAccumulated = R.essence + if(essenceAccumulated < targetAmount) + return 0 + return 1 + +/datum/objective/revenantFluff + +/datum/objective/revenantFluff/New() + var/list/explanationTexts = list("Attempt to make your presence unknown to the crew.", \ + "Collaborate with existing antagonists aboard the station to gain essence.", \ + "Remain nonlethal and only absorb bodies that have already died.", \ + "Use your environments to eliminate isolated people.", \ + "If there is a chaplain aboard the station, ensure they are killed.", \ + "Hinder the crew without killing them.") + explanation_text = pick(explanationTexts) + ..() + +/datum/objective/revenantFluff/check_completion() + return 1 + + +/obj/item/weapon/ectoplasm/revenant + name = "glimmering residue" + desc = "A pile of fine blue dust. Small tendrils of violet mist swirl around it." + icon = 'icons/effects/effects.dmi' + icon_state = "revenantEctoplasm" + w_class = 2 + var/reforming = 0 + var/reformed = 0 + +/obj/item/weapon/ectoplasm/revenant/New() + ..() + reforming = 1 + spawn(1800) //3 minutes + if(src && reforming) + return reform() + if(src && !reforming) + visible_message("[src] settles down and seems lifeless.") + return + +/obj/item/weapon/ectoplasm/revenant/attack_hand(mob/user) + if(reformed) + user << "[src] keeps slipping out of your hands, you can't get a hold on it!" + return + ..() + +/obj/item/weapon/ectoplasm/revenant/attack_self(mob/user) + if(!reforming) + return ..() + user.visible_message("[user] scatters [src] in all directions.", \ + "You scatter [src] across the area. The particles slowly fade away.") + user.drop_item() + qdel(src) + +/obj/item/weapon/ectoplasm/revenant/throw_impact(atom/hit_atom) + ..() + visible_message("[src] breaks into particles upon impact, which fade away to nothingness.") + qdel(src) + +/obj/item/weapon/ectoplasm/revenant/examine(mob/user) + ..() + if(reforming) + user << "It is shifting and distorted. It would be wise to destroy this." + else if(!reforming) + user << "It seems inert." + +/obj/item/weapon/ectoplasm/revenant/proc/reform() + if(!reforming || !src) + return + message_admins("Revenant ectoplasm was left undestroyed for 3 minutes and has reformed into a new revenant.") + loc = get_turf(src) //In case it's in a backpack or someone's hand + visible_message("[src] suddenly rises into the air before fading away.") + var/mob/living/simple_animal/revenant/R = new(get_turf(src)) + qdel(src) + var/list/candidates = get_candidates(BE_REVENANT) + if(!candidates.len) + message_admins("No candidates were found for the new revenant. Oh well!") + return 0 + var/client/C = pick(candidates) + var/key_of_revenant = C.key + if(!key_of_revenant) + message_admins("No ckey was found for the new revenant. Oh well!") + return 0 + var/datum/mind/player_mind = new /datum/mind(key_of_revenant) + player_mind.active = 1 + player_mind.transfer_to(R) + player_mind.assigned_role = "revenant" + player_mind.special_role = "Revenant" + ticker.mode.traitors |= player_mind + message_admins("[key_of_revenant] has been made into a revenant by reforming ectoplasm.") + log_game("[key_of_revenant] was spawned as a revenant by reforming ectoplasm.") + return 1 diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm index 9233819e109..e3197e90306 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm @@ -11,11 +11,7 @@ var/list/drained_mobs = list() //Cannot harvest the same mob twice /obj/effect/proc_holder/spell/wizard/targeted/revenant_harvest/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr) - if(user.inhibited) - user << "Something is blocking the use of [src]!" - charge_counter = charge_max - return - if(!user.wallcheck()) + if(!user.castcheck(0)) charge_counter = charge_max return for(var/mob/living/carbon/human/target in targets) @@ -87,11 +83,10 @@ var/locked = 1 /obj/effect/proc_holder/spell/wizard/targeted/revenant_transmit/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr) - if(user.inhibited) - user << "Something is blocking the use of [src]!" + if(!user.castcheck(-5)) charge_counter = charge_max return - if(locked && essence_check(5, 1)) + if(locked) usr << "You have unlocked Transmit!" locked = 0 charge_counter = charge_max @@ -99,15 +94,6 @@ range = 7 include_user = 0 return - if(locked) - charge_counter = charge_max - return - if(!user.wallcheck()) - charge_counter = charge_max - return - if(!essence_check(5)) - charge_counter = charge_max - return for(var/mob/living/M in targets) spawn(0) var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "") @@ -129,25 +115,14 @@ var/locked = 1 /obj/effect/proc_holder/spell/wizard/aoe_turf/revenant_light/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr) - if(user.inhibited) - user << "Something is blocking the use of [src]!" - charge_counter = charge_max - return - if(locked && essence_check(25, 1)) - user << "You have unlocked Overload Light!" - name = "Overload Light (25E)" - panel = "Revenant Abilities" - locked = 0 - range = 5 + if(!user.castcheck(-25)) charge_counter = charge_max return if(locked) - charge_counter = charge_max - return - if(!user.wallcheck()) - charge_counter = charge_max - return - if(!essence_check(25)) + user << "You have unlocked Overload Light!" + panel = "Revenant Abilities" + locked = 0 + range = 5 charge_counter = charge_max return for(var/turf/T in targets) @@ -165,3 +140,49 @@ M.electrocute_act(25, "[L.name]") playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1) user.reveal(50, 1) + + +//Defile: Corrupts nearby stuff, unblesses floor tiles. +/obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile + name = "Defile (30E)" + desc = "Twists and corrupts certain nearby objects. Also dispels holy auras on floors, but not salt lines." + panel = "Revenant Abilities (Locked)" + charge_max = 300 + clothes_req = 0 + range = 1 + var/locked = 1 + +/obj/effect/proc_holder/spell/wizard/aoe_turf/revenantDefile/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr) + if(!user.castcheck(-30)) + charge_counter = charge_max + return + if(locked) + user << "You have unlocked Defile!" + panel = "Revenant Abilities" + locked = 0 + range = 4 + charge_counter = charge_max + return + for(var/turf/T in targets) + spawn(0) + if(T.flags & NOJAUNT) + T.flags -= NOJAUNT + for(var/obj/machinery/bot/secbot/secbot in T.contents) //Not including ED-209 + secbot.emagged = 2 + secbot.Emag(null) + for(var/obj/machinery/bot/cleanbot/cleanbot in T.contents) + cleanbot.emagged = 2 + cleanbot.Emag(null) + for(var/mob/living/carbon/human/human in T.contents) + human << "You suddenly feel tired." + human.adjustStaminaLoss(25) + for(var/mob/living/silicon/robot/robot in T.contents) + robot.visible_message("[robot] lets out an alarm!", \ + "01001111 01010110 01000101 01010010 01001100 01001111 01000001 01000100") //Translates to "OVERLOAD" + robot << 'sound/misc/interference.ogg' + playsound(robot, 'sound/machines/warning-buzzer.ogg', 50, 1) + for(var/obj/structure/window/window in T.contents) + window.hit(rand(10,50)) + for(var/obj/machinery/light/light in T.contents) + light.flicker() //spooky + user.reveal(30, 1) diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm b/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm index bd44a92f228..0f1b3545391 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm @@ -1,9 +1,16 @@ +#define REVENANT_SPAWN_THRESHOLD 10 + /datum/event/revenant var/key_of_revenant - /datum/event/revenant/proc/get_revenant(var/end_if_fail = 0) + var/deadMobs = 0 + for(var/mob/M in dead_mob_list) + deadMobs++ + if(deadMobs < REVENANT_SPAWN_THRESHOLD) + message_admins("Random event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") + return key_of_revenant = null if(!key_of_revenant) var/list/candidates = get_candidates(BE_REVENANT) @@ -23,32 +30,38 @@ for(var/obj/effect/landmark/L in landmarks_list) if(isturf(L.loc)) switch(L.name) - if("carpspawn") + if("revenantspawn") spawn_locs += L.loc - if(!spawn_locs) + if(!spawn_locs) //If we can't find any revenant spawns, try the carp spawns + for(var/obj/effect/landmark/L in landmarks_list) + if(isturf(L.loc)) + switch(L.name) + if("carpspawn") + spawn_locs += L.loc + if(!spawn_locs) //If we can't find either, just spawn the revenant at the player's location + spawn_locs += get_turf(player_mind.current) + if(!spawn_locs) //If we can't find THAT, then just retry return find_revenant() var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant/(pick(spawn_locs)) player_mind.transfer_to(revvie) player_mind.assigned_role = "revenant" player_mind.special_role = "Revenant" ticker.mode.traitors |= player_mind - message_admins("[key_of_revenant] has been made into a Revenant by an event.") - log_game("[key_of_revenant] was spawned as a Revenant by an event.") + message_admins("[key_of_revenant] has been made into a revenant by an event.") + log_game("[key_of_revenant] was spawned as a revenant by an event.") return 1 - /datum/event/revenant/start() get_revenant() - /datum/event/revenant/proc/find_revenant() - message_admins("Attempted to spawn a Revenant but there was no players available. Will try again momentarily, bear with me...") + message_admins("An event failed to spawn a revenant. Retrying momentarily...") spawn(50) if(get_revenant(1)) - message_admins("Hooray! Situation has been resolved, [key_of_revenant] has been spawned as a Revenant.") - log_game("[key_of_revenant] was spawned as a Revenant by an event.") + message_admins("[key_of_revenant] has been spawned as a revenant.") + log_game("[key_of_revenant] was spawned as a revenant by an event.") return 0 - message_admins("Unfortunately, no candidates were available for becoming a Revenant. Shutting down. :(") + message_admins("No candidates were available for becoming a revenant.") return kill() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 0407a0edc07..999bd0145fc 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -440,6 +440,16 @@ anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,L.dir) L.loc = get_step(L, direct) L.dir = direct + if(3) //Incorporeal move, but blocked by holy-watered tiles + var/turf/simulated/floor/stepTurf = get_step(L, direct) + if(stepTurf.flags & NOJAUNT) + L << "Holy energies block your path." + L.notransform = 1 + spawn(2) + L.notransform = 0 + else + L.loc = get_step(L, direct) + L.dir = direct return 1 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index fd0b5638d68..23378218fbd 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -515,6 +515,15 @@ datum M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) return + + reaction_turf(var/turf/simulated/T, var/volume) + ..() + if(!istype(T)) return + if(volume>=10) + for(var/obj/effect/rune/R in T) + qdel(R) + T.Bless() + serotrotium name = "Serotrotium" id = "serotrotium" diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 9d109c9727cfa8c471a4ed4bd74ce8e28dc4dbf1..7a45b29f2ec0d872cacf57b1eed13edcb5958be0 100644 GIT binary patch delta 18377 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 SywEQUK;Y@>=d#Wzp$PymUmBwT delta 18229 zcmZ^KcRX8f`~Qj9wW&?08f}f()Gnn(OIwQCyY`6MoEWu>wzjmCqV}p9wQAQ^C6uD} zsvRSQUwl5#^LoDj{9dm}v~`BYutCx`!oZ4G>O+C{I7ZMg4`YbncLED1NQ!| zo$lY7Y?S9Gsd&ixVBF>eu47kfW0olSz1oIP+4GN%5~_f+Cu6!k<5$yHEj#UJ8sj$U z{oW~0=Xx>%@7qx@D7=w0`uOc_f0C%A(c8O7p6de3j*dst=#8i8D~fT&_&ks`m0 z0>2FNpG94Mj+39PQtUv76ynPE%+w6&AJMT}3l*-{JsrF%b16LJw=KOejd_o`C&{&y z^~Kj#pT4qRxmlmlHaDjs@ zg#}Gy#IyVNg#%55N;-{8oXmus;ESV5jIy!;v1K=1J#EQeBc^!r1;yy09c zS9Z65E_r{I{_Wr=XsC?(wXy4RV@hzs_eJ-+K1%w(;i?5PZjC+^v3m4m!#m#Qq{wn1OD%TK~OF0zMSG6Ia^knL1^I*XX6QBn)*ber^OFr?N_!N&HvJ0 zYoqW())@{|7T&$MXARyi_S5AO>BD(&eT)*AcjC|g!E7qvC>sZj{84MULZ4TFg^ywD zOy{Ow*?&%XfHikVmn#k+cR#n}0g0>Yi6=yW@ytU(xjZ6Wa{GLql#+qGRtF9ca>@mc`ZUdj|$5c=OL)OAVBwVP|oVdMMq=(McyVvR*@_4(@6qN`7~ zrp7)I-mwemI0m~|XM+}u8DYVs%EtOfNu;2WEKZhb?rZ98UTa-(Zn zfj_#w;X1#8tP$G%ZNP(mE1Qus-In6f5rI!U)^*=0sP5e2lB9x5_5-l|g0EXJ{j3Zf zw4RTFkHL!v;zJwkRN@N1ab-ICAhrCq|NE8wsQv5UOhja)i#Y!{wudKSk=c0?N!HHQ z>+@snbC9r?Y4_IeuP(Va>}60{pdX23{l!`||NEX3PP^gK!lI(~xS~iv+ukB7o!F9# z@kwq&nYhPaYtgH5otq`dnp77?JFuOs%l*whdoG+Iw)01vC$WdBaT0y+$ zfZDiyP)GibQq<|Oujc5(?uA{1NNQkA3_@trlV8zV)DsJ(Oo1Vxt;DH^C;H6f;6&KVxs{5nJQev4^=n2_LQ0D}CG z+$*X47Ez7L<{SNz@ZRE(n`^(A#M%7%?IZ)tOv=IZ3EH=T8qbnwqva-=nwkuo{A+?% z%$i3@(n3Q1}Kt^jhaW3UQ5!<92v{KHtI7(G(;f~$5@6ZNFhyFN~*#E3l?RZ6!l z6qlBHBT;J})ni2Cmvc6ftKnkJ%bEJ>rE}W5gy$?^=#Xr*J9zhN~1}lS34~2o_W$Bj5BA>OOIbU=1iP+$YDAf!papz68+aHQHO-wb^ zR*M`dJS7>e?F!Sj@m?ejnvsXHG|)Mn)ktXWyY@cw$3<| z5VT#CNcOZqp7SMC92fLp6x*@l zy)j<;u68y!pqRWyq|0g>v15DN3xS)SZc9bDrbWby>+7@WC*MW2G|wLmPm>}q0g67k zPsL8;tNzlzKSTBh*v>3R+B#8Xt2Ig_z3>-BRw3+@w&xVr#^w z4BV86z9GZ=?m_N ziuy|TKW(V(yNS>L&RCN~4Dy*7@i4|tcICCSz#^$Qs`$NHPL?x?UL`cT`t5vxD`n*W zd7~vG1^l1{ z_1AR<6-nRT6yuwAWMo=-R$^+Czn4x8OjKAxk(I69US1L_88I8&2e#tEnH;;dsH;gs zxl^Y5dN;?)H?SlgjN4Gv36V=>-ta#+2ST~_#9aB* zBpolpoIiUza1EZ!MF&AE7O%4ggkrBaeL5zymn_w^Ff48G(&__3aD)ETY z_D9CmotI@nWyGEcXOT@IH)oor-aic*kVG$T>hTh&KN#Koaf9|_v@8b-;rt8yOx9{x zuVZS;;o7*X9v2^Pg;^gvWGucW5U`YN;QVT4#!N1)X*t6Qh$EUMprw(PlCt{K_VSQQ zuE`ak5b0%7dNRm<)4@9Oy6x;1m9=@ap|mGX}<%wHpUt$T^PG*1R(or* znq&iA-aR~=h^zB`wVFkXUi{@$J}`+XE-Mo*`1x?v?bqk;@3F#~Kf@_6T+|Py6z;UeDCI(QGFh@!DB9B>De*Vk$rzx ze%FX*W47Ui6T0`a4H-H=)xi(n=JAr&(_a z##qV@E74J|d-+LWs%VTg3fxz5x0x?lYLao1{Z!<5SlfbgNe#LtqtVyv%P7jOr;kwp zSO!nB^BuZN5E)}H%8KJSY;K+kFvfB$qhRANaEWDWk&+LTGBopkWaQgEE@WtE@E;x> z3o9$*T)nMCY%%O;2kM|PVW@p)4UNds7CeEMJ*|=K^YX6H*zgwt^Nwu1Oks;CSoOGP z5~Kk5SSsXly0ClPT~x#gB+jE?KVRUiP0^=-w;*S1mZO7%Xvyq=H9!opdEB_7;Lh%> zZ;Uu#u^#rlS*)r=I;Sw`*X2JT+Sh7?Muvz=Ii@#`R;KyKhErTZ{Vt}`Jmm*=}?}it*Y?VlJwAI9&6QS!Svs1jf?6tREryjk|+Wycr zdtye<3tVL&S4Oa=#o?Yg9Ol@(G&M z4NGxfn|q`6K0FwK5O4VURn%=pUhb5O&oA~3tkUUi+O2D;5%tNi=o1E@Yb}=RYgrl9 zlY)l>qL6EKDOx4VgYROYBvgycJiBR6%u7tW{5Uf+GT;G+o2bo~B_h4AmIpFZpHT50 z=sQKkg77#LVme^E$@g-2-(4%9q7U7%fkKzyX?nCkr=Ceyunulw?>oPfz=I^^d)FN)D zc%9RCE@WKq=8KSg2Q9$FRzV)xy6G!e<~|6qJIpkclYf=YQAkY)=rM|yfP#bBnB#59 z2U7#gawzLyL8~-w4nP>N*bwis1JVXsbEe;Seyfg4|ElXzruu6c?drQSN4(NF zOMVWSI|97Btt#95COxNXG0h&`?x%liYu6isAuEAo$l{WaL~)s8=V~URC?n&ubrWr; zgsJpz*oqahYPwZ~WcO$T&Y+STRwL zFyX5xlD|0H|FG`k<&|_*`+FWtg~+DNc!%KdD2Ig04OpLe-TNT-QHIMO#*&yfDbbGd z)9xutQR#HZTs8X}@IVhgwD~yM8Mf~pOS}iVrKe2Km9?|1MOz3oISpL=dan6Fy@$=M zkrwZ~Qcb)lre1B{ zDNa;ekuNa+s26n7)bY^93jU#v&lNkre=9X$X_SeW5Kf8Acet1LI4i!>Dpq!-?}cfC zScHFar=7=O!A4-o>-VC>`p#Eu2YMhkc8pNFYo0tUMMZ~kvofNIq_3K3j_ zk008>e)&zp3X;};Cg9V&;Myt(B^W$OQ&de7H^T=lf`cbsUrQc{u@meXS;tWpYAX;A z{Eo2&x8BlE3n~kI9cAOo<<4BJiXb=LsL5D7yKd~ii`Wa8+~~iod>q29-FSb4#InvH5JNMLaMG z!~4h;iJn*sLuV?y3y;5povL*kI?-5ZKHYK}lc3DVHy!@*ql&cE9?~Dea)fp=$t>Hz z>H(BDpKR#qOSUGCya)s+Wi8Zm?t+Z%^jco#?zrKD!J1T7^d&6I%%L-792%EyfeFE;FI#2cVgLJ|U z6_M>lMOORE1DyvKjdxuj$bH!rCaB??`9j(8gbj$ceH{3}HcrxgFc*a&YW-AH#Ix(W z`MIb_b=c?`TK2KOPF7LTw#VQsTH-Gp=*cs1EitYw(;t=SFgha`tQ6=BP-KhkT!wdL zJ3Lc>ievO8;9WUD_J+JQm99+zK1+_P{7ilo*w`3pn5kyHpoaF~L*z4+aUSR$;_KRu zlSsn*U?=g%aKKB9@cqNkK{Gwgc*u=65a=p4HKy*I_C)2i2hG52&d(TxD>W$tA0g6| zM1;mCxYMZ&uT76{Xp!LE*hUiGjpA`VC))n#BhxCI?{(ScwGmWQl$0MTD``onIX`Fq zvc(m=_b-~e@3Ai4wOMMSp`lTU_cUMo?{D1)X_S~&tiHeD)zz2eKgNBd4%XG3DirZ9 zeslV~L#m>v=+~0&^sm=iHnxjLkbV|^vrxB!U_r)epAmw7&yTqp3G*i_S>0zR`+q4S z#oOoXv^o7(KjbW{j$itvO*^*{HlEPH*El+#IlK=Xo|t%^wSO5~EjiTA_&Yt^jsTf( z2IfIyTbYv;mSMP>d({9*+xpY3uLvrFUP zSYO{fx_iN`bHT&(Rq+}=w3`0ag#lXq>j#fK2B|+4`5WqwEyPty*qhkLHRat2>hw>* zLxE8ehGfYWF>hwCG~9H*;0;Yf&WQWljkI+1pp9>V5aO-u5{;R)F^k0|@=5toO2d8hVzY{-C zq57LF6YKL$0_L7U9m>VWNo22-Bu3H!eJgrQ2>%ek(wLUem^6VFdo-jn9JQfTM(8wF zq%Z4pSM$a@k9l?}ez0XFj9O8qjKtzH?iZvxslOIQ4_)dgQ;QR2m-W29U8Z?*@Ec3* z+Jt%fwZH#?dD#mlpT(uGQ#l5z2T@US^Mh5@4>G0xRCaS#4;3N=ax$C6*?0#vD!*=s z?agVd1S}hW^(|xW*0BUJ6gcExb>AC)NUpoJWA98-fcHowiBO? zD&a=!js(58mR5Qd)bFS!{f>6xZc#5Wr&#c6URfV2-W9pn6Il@B604o|)VgIYNT=#7 zg_KqB*NHe=&z;t=hxF$$ai>#Z|v?_~&OHeBu&>$;`|70KBjZS)gy?K974gpfU zsuo342U&i6T4EUT`>RhFBAx^mNRyy&m{$Jm&t6_%t zJMpfE1Tqjr1^2TN@~+-1=e9w1;9mh^3;&zRy(4a~gd&ToBn)JweZqd|7}^?I#QF6$ zFj(Q!0wJJP*1*g3f?*|)7};eg*u`v(8Sl@L=syeyz}+$^lc;4{Zp^`eOSjA&u1-ps zq6@ld7GGYk4D#p!#94GE9 zQ_>BEBsb@8Y{$DOoB1tW4a5|i4}4V})e>n6-zaZsp397m@RAP3ZJ1jRWJs2U{JK@% z7>X~P3{ov}25eTM{yqbbzRv!+Vt#yQq_anXPE5{wvvojvc9T_r+{MEA&SBHhjMK## z{z?bFq8Q^Ci+&Oy&n(h|RbS$b1Ox=b;CxG%DLTSUV7wL`&OceWNQ*z2GCp%f3zdnx$TQ_;LL|vq5&2rkdX* z0e`P2wegSnRok zm7c~kTG&b3EWFmKW##MG#-R1c#=Gu16)0fOM+=(M4ULWlY$BVs*SflrF$q*YA64Zg z<^|gaIq{3&%Z%^Bww1G`D89t9bV@0XSF=--?>=eDBCI^m=tWYX z6iulCjd-aCL>6vYZ_2Vp0R%Ad@y|wdx%64W;srC=sm!4IbblnA(-UbP_2)B~E;NbI zKKV6o)b-Y^n&#y4PCKX4lAxpAt?*{w?Z@#d<4j!(UaxnB_V#UXfxlke%JP0tNa0gb zs;S^qk3BgL6Tv8*KQnHb4SA5aQGVd-`1kCs;@Vg43(llHIod<46H)oMFKlLgZ#6|Z zUw#hl2`8*Mzt_xkHK(b*bS?z^EM5C_lRV2+4X|KI6isBT9;l+-jh9AoB-nJx|mH=Z)!EY4MCmY&N zJp6y2@ytli!tkY~+eWhw0_vDD!@+r59P!QnqD@!$Ul;ntozqlyO_7Y!*S> zLB7mdqErC+SlXQdT2S%HRV}qjxf1z10Fy!_Uu>r`r`92H1TqCp^?yHOd`IZ3#VQ}K z-SeIpa&mKx6~N>^`IR{}IDjh5BAZkFpmh7OJzj>Q1;JiLVt66`)t1Ftme1bjb5z4W zmNr~I^l|KP`O8Apc?mY+o-Y2L`8X5$!s*I*e{r9hIv9Q~i=lk|cJ1{j@WcLiwO}|@&i4O&E)>e7DNm=F42*j5 zJVLUDFfqYz)~es(JI8 z6RQvYh;ojSar;8%QKGbYadtMW!zY)LnsKu8q=l|`Bo%#YT>epiq>N%YI)`ycY3(i8 z%(isK#&C$`hvpIQ2HV5i@`tfkq&^r!rnLbk0$oTT!5kgH4+$i-kU}P5P(kpprrR64 z36?WANRSjrL1a$~bSg&gb>`Vv7H;fkm!J~Q#x2eKS$K|+W=9XRk!|^~fqF7=?w|}o zw&Js_^!N8Q*dT$<%p>VBZ%*piaUdKGy7jdvt&k`Tp^`AwQB>-Q={FCq-j#J=j<~iV zz52*nZ9p3eXM6peVY2_!Xa=s(rhf43nbKS^?qze`c?`r(K<4RloEgS;9}<^rN*2Dm z6S`lY6Hdp{@(Xk&V)H#)PDdS2bm@7e?#UDgqBpBqeMl0=4Wd*rh3KsgNRMxE==7+wX?h^oF;{U3*|14-*abQO$7? z92{+)AkoL=**rWH&su)-(Lo=!U^(yYi}u%S00pc1auk7Dav={T+!4f8;f12k04g&= zUyhr{2aE2%cH_Uf%levaS?cq@eHROy*#KOEw-nDD~&^%R>)% ztQM1Omc-pHFEli;OVVG-Z<58}NDuZn-li&-qzty8C5iH2gf%7Gn^p z@*HXS_P7*lvkaa!>y^aa?BOVvhnc_JfEk32%}g^oxVaYNiNmR4eMJLcCmM##G4yA< zGTYr4yq4yZ2Oa?vl;VJbEiRA+xnVIQ>gI@l{^$p(;6Z6Q;-I=m?1_2$wGI1G7QO?G z58CwDwMR=RPfWW>3#PWToSC_wD`#o_7Del|&Q|RYFxht2@aCL3b^vY3FzV!jJ1M(J zYxcukZKpAMeYPR;X!d@ybHo&EGL4k}F_|k%Tp%xKF>gOuCGt91fJu6voAvKIFkFK@aIpc})y*PbXg*x+(F!gwYNye+kl1{TyFJQuh1!X;(%_mU>sawFe~=RYl;;;dHTos zHWNc{8;WxvYwdM4*JF`;BVr|imT=`cpja< z-Tgv9f3{qxwQr2SOCX6zAcb2%otuZ&`%qPP4f~s-N1!XTn+4wYRHnZw!xms9ScSm5 zvDGAYl;=P34y$QuX8Mo}sq?L5GK*+`OA^{z%RaH3M`*{;x{K$d?m{=4IMQrE2?ic$ zHMJ!bQh}CP9D@4gX)*QH#}xE+>WI2_Mfm~Sv4GV~rHGMIKPCb7-2@Qdc@N=YODAua zNiKF1P*)4_eEES{4q_r@W-bbtILFPq2-MUB`!=4(tnm_uH;=&mZ}#%g^2C(n2n@i> zg9@=ygUH!QV{RVKw-2JK8HyQDlL>*{*A`rdWODksR&L3LlQNSchd^LoQpAHG2hWrD#2(_bmEcc5vd6D$6ad^n{>9m z{-)T?Ci#&-S3#WiGMr|_$qy&sj?0aLL(?Atk+~zzrq{*1aeZS)p@9aolLw}hHq}ok z7Z%inN9I|!DYsnfetQ%zgP}{Srz{lX^H~0dW(3Hm^9DDR(qHybhcb+#DV zun@5JW%Jl}HuSjkb$qa9^n98*mb(mWd14;j3a?tm=IW+d4t{4IHK=L=&UF}HmlOCF zcA+o$fdU?$T*~xMZ;r5R>Jk~E*W7^g7)I=0|;X+dY9k%m5Tr}&ss9WVhbg!{R?ZucX_oq|ACyRhvkI9u`sb^m$X zTR60p$zn@ekIoEpRrNb->rW4CZd&0_OIW|$e#n}EH7@3Z1ke>|q?D=u5Rjn+c>;h( zfxYBy#lh#rmBAmfI7_Es(RRYhAsevoHzx%vnjYh*z*`r!{q`b)Z*L~|W~nT0wjJ-An2tq>~4tx`Ix zRdY<1_LcRn1@ZpAQgEkUTo*G+p))a)BA2sZy=**MQPSg@bma%l930C7@g}uN+j+nx!agJLbG!Y z^3$^b%iOEJat|U+f-#`m72?VpT&nYZ@(FY^3u|5Bm7h&SwcJF`rlh2MFae@mKSTFehU0=T8N$bs5zJhk@vX97XHaCF~UT#W7&F ze`4DnIk|mn#OKPFr3eH|E!p}K@zOl5L-;X4ZL9g*Pp{06W;g93_>W{3@wZo~O!u~o zUhbSyp;9UCCSvm*_hC;6*jE;kZL%9@mV|t`OoUJukCjFrp7jIR2SOXCj~JN_u(9ch z6+4?dD#5BF?ggl2Y8tM&|n?`Xz+R zWuIzRd1C%t4lQCA5@ns@;VO!9d-ZV9CH!UcF!A(7b@9QL70oD8i_*PG5uclEhK(Q5 z5rW@mGlxu#4}yMYxc}x9dBOJ6aY27}W2Nlp<2tJ)vw3^7_z$SrsY{>mE4p7t6Nf9l z+Fa)r;h^?$8|SKg)UKB_R`=V%E~vM&{BcP(+WaS;CK9Xhxmp)KF?m=kU5kPEvfv{H z3g8vo=SDBV@E7)p6yiizH`l&PnSvb|MGA<%5EomQuwOIN`KTvKE`)2e20@*ugP`f2 zxcrb$r59Nujen={k;c0nReUy=nhQ#mfi}ILX;U~on$BIZ;tx>{Jrbb?Ios1_Uv$&o z!g%kC4GQ-3-+0Mi5}QSdDwM~^O4VG0RpR`EvNt-bU|%8@sHWY!pXE)<(f(SR%ij)+ z-;WP&Uhq6Ms(g`}1ta7J6TFFV={}>|9q*oZj7F4fqYg|rQ4P2m{~ORZE!3xHOt+$M z9R{0y0fh~eNZZDbLdDxF9l9vc<uzjv0c_Vu87xV z5+hDWxzqBb_ARysC9c{joRjvOzELkpeNVFQdcXn*)KcW*VFpgG?mT+$;QUx?WN2Kv zKjx!G1a4TPXG28e5-nc7@$Vfr!whhUb+(9y`5F%cMp6qtKo_c6@|ek25bvtxP%OZT zgx86rD?)?Z)(Bs8K2dF7h$L;WRbIrWQ7dX*9)il}`93ErdzHN_?dcGYVij-2adtZRsQMslhThQ_SaAsd0h$KkfnD|YG1MJy-V=KG@;Bz zT59PrX8|KeRS@+=?4D>+X8I+^aNzo-_=S zhOhj55yyYc!EdX%WcA|7G~T*|BzqdPN|Hc6`kR~o3G?Cx_6hFCKe`7Oa%x8L`sVwK zy?j#I&hI{U&@8bFyURx?U_!vV(9c;%H2cto{*BU($omk$^A*xraqrLg6|tG{MRe*w zJpLOd7&u3_^!fgdsG|F=8Ma-qEs-J@)>$r?l**B<;#`G&}I zn65WP7`JQXM@Mr&5To=SHupfMqSusqfVrs$^UJeqDC^ zqYidyy-$I~>{NuXY8UVv(5P%RA7{jR>O`G2pSW|{7cQ$R64!c`SS|ORG~Tf_Z=C>x zt>o^toG;wUBjF+qD*ySW*}R>pZ;Uz=pKon8?H~@rGt&hySUL0UyF;-jX#y)P6F{4l z(Fd!c8wM?OAbF5oo8m={T662OVEGXm@grt?<(aqXY@^NEB4fk&{` zxkKQLAT7);9M`v$$FO!&Qs}66JCsW*01cO>wxA3#gsK7Wy-x(MmTfIt4 zoLh}J`+UGP5LxnP1^XRIqXy~N(w#rGn)=nd^vKL#k$mk!gy=Q^Fz8?YBp{~THfWNf zuF?%|FdLje9-m8x^L){l_ssaH*MCq*v$zl@;Yl_;S(X3H^4hz7%>>(PrFjgRlCX}+ z1o2@o_}BW~!l$_n!*2)FCHo^ww$cBLNV}H~L9bwG4!*9XnoMoUxwOkOvE3t*S^Vh+)7$XAtLKT>NWhk{otCf%ommYHEmh#Hlr8^AuWX^VFyDv zeTVO2E88ctL)CGTF1u{KzQ7)Aa0!@oDPkHM0Kc_Bdd;Lw4E7M`m`Pm_%)22XMe^~J z49yG~m-a*XRNsT&S#!my7bIuc>9Oyx#>USVPwQH2`G&;-)RDArNk;e1xM_5I)^^v4 zRtwZi5oq)vQ#3nN+Y5DEqrMQ^t+zJbS&$tap7tRpv8%BTTF6)|%RZO}DY|w<=(7S= z3hEYPTGV|OGP0AR;pvh|hA$R51k(d#yVy>Zi+W)PTr^fM^n@=uv?z)It*)kvbDyDy~cax{M$`Oxy20$rCj z&<)un$<}T!%nXid`NPC}#r49R>=uYj1&`O5vGoR>F2jg&yA4qqtb_=k4(%IR|m-KS;IgU0YFC2ET`5V8a8 zbZONEO*-m50I??Q%F=_8*MiLNYFEEDY}vn5p0^i?gCaRcd#~iDhAo?G&d?o`c*s4y zF`#jWt;C4@>T|ebUxJV-_AnR+2iLlm+Q2>*o)bv+a$0LfcA#Q&UL#eBTbofVz38NJJTBV$H`!E!`%@Z3FPt zLefZCq8#By(47j*cOVhM1yv^ID(AcG?~^H1SJ>3lwCgM{TH3oM931i{pgr_awkBYH zNbnA*Qudy?>YF=psy59T*dS^-!9rc!(mtS9!twCtyLYWK9fo{r=gq8_urRh@MKW%j zIyyifx5Dxv&y{`lrsiN0*>V(6crnL@&&|49tLKq-x-0hT7st73>?wJlzG}?yeLiks zrLW6+GI8{~qgtm7Y>W4Sb+zl9^LlTdn$1r-It;ODmaJD2?A&4k`hWvGXo_BNwvDG! zw$@xwOeX<9;FQXe2Ul2-j;qGRb3Iq?&y7*GmcOwk&Su5tLt3%8R}&*agkP1Ocf=o4 z8k)O6@#WxSZ0M^x>#?C-jN=guXalZ)<@3DwHg=0{WF8#aGeY=X>pkQ>f3gmvACj-6 z69IP;qU{ac=9NsFaWu+y4K<=C|GfWZo z2J+k);!cFr0$Rm@?K8I$>c{5H$UeyQXM#FQ`U=OFe(V}TP@1Geef*fYuw_=@@Mw8f z%W}pDR66GtrqG;~07xf+xmS<4rpV?dW+7*m``eExlzAmgV_;^VX#%_}3}4<38W0aPr=XgA>IhvMSCdx6Cm%;c2aa}Y~8Z;yos^@8jaLCfkN z6-TA&@TUrkpY#5#M-Z+rIB!FOc zC}XzIH-*)!39o?F^}R!XG~YpmPtDD%V!$`CbgjhyHimIQ=kV7q+r}wGUbde5*&Y9Z z4$3;mk3VjuS?DzQ^~%#cJ~fF-bZE#f0SofGQEICoAv<|V3I#GNDc97UEp=ItkPG}@ z>kta${j^_8kN2*7i5$CV_W;^vP#SMy0{l?PaDxA1djHJ!8Gg39-??^j!bta7q8)9O z@XxzK;k05j^D;d^-SY@$Bwk&3Q~!_I9P?AEbY1Ys{gBMybwGnYyi9v{u#)axV79`z=x);7=-xY zX-Tkj4mnQ6pWJls7@I(QiHf%qKzMpc+U9@c@{h<(@FIl%OQOB_{-0D3I+gRpKGO8g zt)|}*zcNoG2E6SCfIoIzc$fff)c--Qa>RdiFsL5NO1R~y96n!Kt;&kYrwq(sU@z%NPI_J1?! z0SG%Moq-tI11|Sj{ts7*L`xF!Eu=2j-vcbt{U4$A0H{}q5E(g2WzkShLe3k9;s0!~ zk2>EwQW=sidj`Ia;>7RB02M9L7iQ$6MjRJ3OlEioM|lTNCjyQ@=nrX1V1}8f>Kzb| z<7kCRU8GPd>tc~Ez~LrAmB=Q6SsV)5=!bYYDOFG3ZZDjRK!maaVMhk1%>HI=e}(W|9*YT*#Qa4n zX+wvRTZ^^dl<)*-n168ANO$C+k7V?SeO7rVLk8jdDRy5nDkEx@a?+nYHuZ)So2t@Eb zxg<8?3G4v;eu)?2Yl3`;|5;k-%YV`PjTu>Sqn_-y6gO3oiz43h&ohTZXduTnl7OXy z&i}Q}v41#cWx)n0YR4n9Eq~LrB1M?e{#QK(3y^9}_PPSoZc)XCtoUy@LCX3s34n=^ zw5Xo2)=0%~n+_`OY5lZg<^uVQu5% zPkB#<$+g#cSl9=GA;aU z{UYbI0}-v!K75%GUT7)z@y~YS#uOvor@9AR=~qDtjUSEuyga&we`&TG;E$x^I^IP&Jl~Rg3ALPl`Tr*W zFZEIJ`#&PnV?JJgDA91zVFp{m{c_>+?|$-LJHuMQa^TVa1NxxOvf~gLqxD z>1hSYhWNy@&)@m10Un?6V~O8ri(ZBrku3+{c}PGj6r#JGXS z;r#jy%c7n;nlW7eXIv1>KBH@wP|ZQI1Mzse$06I++pM1 zK$%KK&ON&re}oFnh-+7VV`CG{TMLQvL-97i6`R21ddP^OD*02u=kN`6^~z->@(17X zOVw{wu4BITy4Ukm10)8nD7aQTs8#bjC^8>t7HiLCFxxlb$ekN(3*P@V1Qqy~8C0&l z_kZ-RQF(^_g^uQrEOP6YF-CmoebUXnuTgyUQg?_kEbf6|2Lg*5s4Milq`e@X z``#nG?vr*@FKhbA%*J=l_rXVCzct9guO*9NUEIWuJYd&Vc)!?ab!prFm^~?o-oMS5L0v(rcT8*yUzlz_bG>2w+xUm#QfTp}CMF6^YbFfcc~W<(pRASq{$_rc z@5;RqpDs%Job@~S^0VHtcisDX+{Nyi?AWfnTKfPqq*zh#diI}*Eqdb(