From ec88b5d8fb94855b09ed8a4a3d5f7d7e42f02e07 Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Tue, 10 Jun 2025 19:24:03 +0100 Subject: [PATCH] You can walk through snails and stoats + stoats go a bit less hard in disposals (#91546) --- code/modules/mob/living/basic/snails/snail.dm | 2 + code/modules/mob/living/basic/stoats/stoat.dm | 2 + code/modules/recycling/disposal/bin.dm | 150 ++++++++++-------- icons/mob/simple/pets.dmi | Bin 95953 -> 96030 bytes 4 files changed, 84 insertions(+), 70 deletions(-) diff --git a/code/modules/mob/living/basic/snails/snail.dm b/code/modules/mob/living/basic/snails/snail.dm index 4d12c928c34..cd721d9b98d 100644 --- a/code/modules/mob/living/basic/snails/snail.dm +++ b/code/modules/mob/living/basic/snails/snail.dm @@ -10,6 +10,8 @@ icon = 'icons/mob/simple/pets.dmi' butcher_results = list(/obj/item/food/meat/slab/bugmeat = 1) mob_biotypes = MOB_ORGANIC + density = FALSE + pass_flags = PASSTABLE | PASSMOB health = 30 maxHealth = 30 speed = 6 diff --git a/code/modules/mob/living/basic/stoats/stoat.dm b/code/modules/mob/living/basic/stoats/stoat.dm index 43fa3e3be7e..a3e635ccd6e 100644 --- a/code/modules/mob/living/basic/stoats/stoat.dm +++ b/code/modules/mob/living/basic/stoats/stoat.dm @@ -9,6 +9,8 @@ butcher_results = list(/obj/item/food/meat/slab = 1) mob_biotypes = MOB_ORGANIC mob_size = MOB_SIZE_SMALL + pass_flags = PASSTABLE | PASSMOB + density = FALSE health = 40 maxHealth = 40 melee_damage_lower = 6 diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 8c5718305db..050ebad7e9b 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -1,8 +1,9 @@ -// Disposal bin and Delivery chute. -GLOBAL_VAR_INIT(animals_spawned, 0) +/// Number of animals infesting disposal bins. +GLOBAL_VAR_INIT(disposals_animals_spawned, 0) + #define CONTAINS_ANIMAL_CHANCE 5 #define MAXIMUM_ANIMAL_SPAWNS 1 -#define ANIMAL_SHAKE_CHANCE 10 +#define ANIMAL_SHAKE_CHANCE 20 #define SEND_PRESSURE (0.05*ONE_ATMOSPHERE) /obj/machinery/disposal @@ -35,12 +36,6 @@ GLOBAL_VAR_INIT(animals_spawned, 0) var/last_sound = 0 /// The stored disposal construction pipe var/obj/structure/disposalconstruct/stored - ///a weighted list of all the possible animals we can have - var/static/list/weighted_animal_list = list( - /mob/living/basic/stoat = 1, - ) - /// do we contain an animal? - var/contained_animal /datum/armor/machinery_disposal melee = 25 @@ -76,8 +71,7 @@ GLOBAL_VAR_INIT(animals_spawned, 0) ) AddElement(/datum/element/connect_loc, loc_connections) ADD_TRAIT(src, TRAIT_COMBAT_MODE_SKIP_INTERACTION, INNATE_TRAIT) - if(mapload) - spawn_contained_animal() + return INITIALIZE_HINT_LATELOAD //we need turfs to have air /// Checks if there a connecting trunk diposal pipe under the disposal @@ -378,7 +372,51 @@ GLOBAL_VAR_INIT(animals_spawned, 0) visible_message(span_warning("[src] is ripped free from the floor!")) deconstruct() -// Disposal bin + +/// Handles the signal for the rat king looking inside the disposal +/obj/machinery/disposal/proc/on_rat_rummage(datum/source, mob/living/basic/regal_rat/king) + SIGNAL_HANDLER + if(king.combat_mode) + return + + INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/disposal/, rat_rummage), king) + return COMPONENT_RAT_INTERACTED + +/// Handles a carbon mob getting shoved into the disposal bin +/obj/machinery/disposal/proc/trash_living(datum/source, mob/living/shover, mob/living/target, shove_flags, obj/item/weapon) + SIGNAL_HANDLER + if((shove_flags & SHOVE_KNOCKDOWN_BLOCKED) || !(shove_flags & SHOVE_BLOCKED)) + return + var/cur_density = density + density = FALSE + if (!target.Move(get_turf(src), get_dir(target, src))) + density = cur_density + return + density = cur_density + target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + target.forceMove(src) + target.visible_message(span_danger("[shover.name] shoves [target.name] into \the [src]!"), + span_userdanger("You're shoved into \the [src] by [target.name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, shover) + to_chat(src, span_danger("You shove [target.name] into \the [src]!")) + log_combat(shover, target, "shoved", "into [src] (disposal bin)[weapon ? " with [weapon]" : ""]") + return COMSIG_LIVING_SHOVE_HANDLED + +///Called when a push broom is trying to sweep items onto the turf this object is standing on. Garbage will be moved inside. +/obj/machinery/disposal/proc/ready_for_trash(datum/source, obj/item/pushbroom/broom, mob/user, list/items_to_sweep) + SIGNAL_HANDLER + if(!items_to_sweep) + return + for (var/obj/item/garbage in items_to_sweep) + user.transferItemToLoc(garbage, src) + + items_to_sweep.Cut() + + update_appearance() + to_chat(user, span_notice("You sweep the pile of garbage into [src].")) + playsound(broom.loc, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1) + + +/// Disposal bin // Holds items for disposal into pipe system // Draws air from turf, gradually charges internal reservoir // Once full (~1 atm), uses air resv to flush items into the pipes @@ -392,6 +430,17 @@ GLOBAL_VAR_INIT(animals_spawned, 0) interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_IGNORE_MOBILITY /// Reference to the mounted destination tagger for disposal bins with one mounted. var/obj/item/dest_tagger/mounted_tagger + ///a weighted list of all the possible animals we can have + var/static/list/weighted_animal_list = list( + /mob/living/basic/stoat = 1, + ) + /// do we contain an animal? + var/contained_animal + +/obj/machinery/disposal/bin/Initialize(mapload, obj/structure/disposalconstruct/make_from) + . = ..() + if(mapload && prob(CONTAINS_ANIMAL_CHANCE) && GLOB.disposals_animals_spawned < MAXIMUM_ANIMAL_SPAWNS) + spawn_contained_animal() // attack by item places it in to disposal /obj/machinery/disposal/bin/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) @@ -563,6 +612,20 @@ GLOBAL_VAR_INIT(animals_spawned, 0) . += "dispover-ready" . += emissive_appearance(icon, "dispover-ready-glow", src, alpha = src.alpha) +/// Create a random animal to be infesting this disposals bin +/obj/machinery/disposal/bin/proc/spawn_contained_animal() + contained_animal = pick_weight(weighted_animal_list) + GLOB.disposals_animals_spawned++ + +/// Release whoever is living inside here +/obj/machinery/disposal/bin/proc/release_animal() + var/list/open_turfs = get_adjacent_open_turfs(src) + var/turf/final_turf = length(open_turfs) ? pick(open_turfs) : drop_location() + var/mob/living/startled_animal = new contained_animal(drop_location()) + startled_animal.Move(final_turf) + visible_message(span_notice("A startled [startled_animal] jumps out of [src]")) + contained_animal = null + /// Initiates flushing /obj/machinery/disposal/bin/proc/do_flush() set waitfor = FALSE @@ -572,8 +635,8 @@ GLOBAL_VAR_INIT(animals_spawned, 0) //charge the gas reservoir and perform flush if ready /obj/machinery/disposal/bin/process(seconds_per_tick) - if(contained_animal) - Shake(duration = 2 SECONDS) + if(contained_animal && prob(ANIMAL_SHAKE_CHANCE)) + Shake(duration = 2 SECONDS, pixelshiftx = 1, pixelshifty = 0, duration = (seconds_per_tick SECONDS), shake_interval = 0.1 SECONDS) if(machine_stat & BROKEN) //nothing can happen if broken return @@ -628,7 +691,8 @@ GLOBAL_VAR_INIT(animals_spawned, 0) mounted_tagger = new /obj/item/dest_tagger(null) return ..() -//Delivery Chute + +/// Delivery Chute /obj/machinery/disposal/delivery_chute name = "delivery chute" @@ -670,6 +734,7 @@ GLOBAL_VAR_INIT(animals_spawned, 0) M.forceMove(src) flush() + /// Called to check if an atom can fit inside the diposal /atom/movable/proc/CanEnterDisposals() return TRUE @@ -683,61 +748,6 @@ GLOBAL_VAR_INIT(animals_spawned, 0) /obj/vehicle/sealed/mecha/CanEnterDisposals() return -/// Handles the signal for the rat king looking inside the disposal -/obj/machinery/disposal/proc/on_rat_rummage(datum/source, mob/living/basic/regal_rat/king) - SIGNAL_HANDLER - if(king.combat_mode) - return - - INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/disposal/, rat_rummage), king) - return COMPONENT_RAT_INTERACTED - -/// Handles a carbon mob getting shoved into the disposal bin -/obj/machinery/disposal/proc/trash_living(datum/source, mob/living/shover, mob/living/target, shove_flags, obj/item/weapon) - SIGNAL_HANDLER - if((shove_flags & SHOVE_KNOCKDOWN_BLOCKED) || !(shove_flags & SHOVE_BLOCKED)) - return - var/cur_density = density - density = FALSE - if (!target.Move(get_turf(src), get_dir(target, src))) - density = cur_density - return - density = cur_density - target.Knockdown(SHOVE_KNOCKDOWN_SOLID) - target.forceMove(src) - target.visible_message(span_danger("[shover.name] shoves [target.name] into \the [src]!"), - span_userdanger("You're shoved into \the [src] by [target.name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, shover) - to_chat(src, span_danger("You shove [target.name] into \the [src]!")) - log_combat(shover, target, "shoved", "into [src] (disposal bin)[weapon ? " with [weapon]" : ""]") - return COMSIG_LIVING_SHOVE_HANDLED - -///Called when a push broom is trying to sweep items onto the turf this object is standing on. Garbage will be moved inside. -/obj/machinery/disposal/proc/ready_for_trash(datum/source, obj/item/pushbroom/broom, mob/user, list/items_to_sweep) - SIGNAL_HANDLER - if(!items_to_sweep) - return - for (var/obj/item/garbage in items_to_sweep) - user.transferItemToLoc(garbage, src) - - items_to_sweep.Cut() - - update_appearance() - to_chat(user, span_notice("You sweep the pile of garbage into [src].")) - playsound(broom.loc, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1) - -/obj/machinery/disposal/proc/spawn_contained_animal() - if(!prob(CONTAINS_ANIMAL_CHANCE) || GLOB.animals_spawned >= MAXIMUM_ANIMAL_SPAWNS) - return - contained_animal = pick_weight(weighted_animal_list) - GLOB.animals_spawned++ - -/obj/machinery/disposal/bin/proc/release_animal() - var/list/open_turfs = get_adjacent_open_turfs(src) - var/turf/final_turf = length(open_turfs) ? pick(open_turfs) : drop_location() - var/mob/living/startled_animal = new contained_animal(final_turf) - visible_message(span_notice("A startled [startled_animal] jumps out of [src]")) - - #undef SEND_PRESSURE #undef CONTAINS_ANIMAL_CHANCE #undef ANIMAL_SHAKE_CHANCE diff --git a/icons/mob/simple/pets.dmi b/icons/mob/simple/pets.dmi index 64a9f3038f73dcd0d5a4670a90c277878cfc8db0..907ac1d7d6fe87233f82aef3d90691bef46a03bf 100644 GIT binary patch delta 16118 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 kG11X;%A(L-V&z}X>ux* zDn3rvs+Xu$*lAdIdE}>9jcpwvks7vn6&Z7*n$P%Y2tWeE$Pa{^#CotW2i4mcZ=cC~IDn@*Zip^k)+s4))S{zR5%}S0lP>ht?-st~+$| zWg>a9i9<_OWF-k|nvb|kP4liEE&02Gvt>y%f2zu^z3}(XDhR;Y=vNHQjc<4IcLI#w zdt}}tk`TV%6-5W5|Jde)6$pbqwgeI>oygY!2PerMttTJU5{l9uP)1-eFfa^S3b;=j zHG{wfj)bu1j-Gd^SCrm-)zOjDiNb3a_uH5lVp3AlFSXO6LBYW?aPP&Hl|WFZ%)BH@ z;_7d%XkVgWScUxpt*fi6QU1MrB{6da1-zLO(-7IN?Xf(v?xJ_FAktIbvruTB&L03B z9bLIS9hUTgKRwP5-p9ea(`%E6G14hQzedA+vm^M!yipinH;%Em-Hl=NAbP3_o$aH2 zS6?DvvmYC{V<0s#N0oIW49?qrdGlRob+|!uA-eU=_k^j&)2>jBZIu!);ZkN2qi236 zQ4-SmZ$oC2 z)YUc7cnq&Pob;?dV!kb7kDe`npA+qelm+Vu>oo=SUT}u!j$t3>g6P-UM}sAAab~|7 zzT%X$9lW!Uqpat0YN~NHvTerlwrhgg>oq=(O2~piJJu{e9(wJ~y=OGP9}?A&l{Q)P z4#0SVo0JY;CQs$$E^OnclLOJ$VHag;Vm$n1#Lw949#{7hqh+A^+|LSa8Dkn>8T@&J zLqHIemX=oj299w7US75s@hn24KlnQM_3iiV!T5+qkT^08N$WRxgbf&@W2NsLnE}n4 z*K$iYyZfa%8@<-U*KuA5rjuA*{yI0;4sHOj!ST zfac(G0Rl>4c=*`Q!boX{UlL8ID|S)y_w+(6gG*iI=HSnty8s}8XXwYfb($t&%jP^G ziK$51XNoyhLs;pyNg605)Py)}BH80=k|uLVdwi_@x5aE{gUq6Mpy|qBdY+%*o|Ml; zp5e~qkSzfJ&Ejn76eRkD(*FzJ*4bD%HLLuQ>9blwK;m}W3yEANAa!z}KsdiQ$bhZe zFti==gHwQ?M;ltPc_+`4&e2D_*`%^7W8{=Yadvt$Pwln+1oYfbxk_Rk95Vej2XT8s+=6Ar`kKAz37bFSeEC66+KqJhz)A&X8-zy)<)UNMU7~$qAE%XUZRY zjt=6F_Rh7DAF$N7$Is39(r5M^7_OfojV;A?zy_r|!=iWuXd!d9`Pnrco0Ifub6vJ} zAzgQDfn(Fn$r-=M210T^Rt#RB)-3#E)8U)AhqAN(1_p>WxZg$F@pn3)S~1I1HgS~) z5}3urEm9W|2>e(D>YN*!fmC-yRh~+&`oZaG?AZqekvy#;bC7LhQM<^%A$vxB3*5jD zmVrsbn>0HXI|qxDf2nb1+{OIO)sq0;Pmn3m0E`xFykIm1$*#J?iF}>M)QB;BXohso zUbK6*7O1MvO&>w;3*IVf@ZT>Fj-OuCGSd~Z@^v2%v@R7V9@cgl|NGT>9Q>?1KE4OB zWOYf1wg|-_dEglNp%mHk5b&kZ3d0EaH8&oQGI^`@t1YiM*0N?Jtwy5QhXi74-|l>w zSSF&XqtnnWUX^KI!N=IpoxNwS?`Jw?bwck&G>2l>Hk0Q+wf?72-Yd>>x74Z1_)cmMXTHA@`DoJ}^R zT{A_AGClvH4+4uHU*5N~Acpx(`FOuhe|B*n%CgET0G)s6X&)yQ$nu1K2J)1*^Q z)6*5%>(f`yncgf=D@Nuk^)5Yu=0pCeJJa4Yg*}I|tYK&EygG8!-zVSaTo`Dk zYQU}x-OG(zg$y>8aM^aa0VYV~eCROg(z-oJmA~1-Sv93xbC0j`2KNHHGI-x3{*j(1 z_SA7?AnaBUX?$}MA0x2SmtGCwkY5Ycfn7>IA_-$b=eFaA&SJ!J6LVN~Zl3|5_AzL2 z?52+a>?BJPg!58MJZ>CV`E(Kl)tVX&o00{{_9tS&bo1{$BxoF$y6hW{k}nb@r>}7d znY@GMgj#JDhWC|!%&kjDBYwdB`L6{gbtpciZX-h9wlCHxND8d=(zCL%+N^>H*8pHK zkY&93w?x<%iGxM7O#}%09(f5*k8N39Dr7x?!C=*{2+~w#h1P2i50%U7j6Z+yUS^d1 zTjSO(552s)`c?fKr%nQ;?SAx+nIbRG_Qdfk&98jB2}^;CgEpd+KO<_&;vF(F`BA4F z9G2cDUluc(yXZiUUiYI{q_p6DSjJFjUsB2~vQWDu0M?8sYT7%p7B%Z8KHJJk^F+GI z&AaxKkgnF*zGeYl`&d4zD;P`HtNswtzq5?yLO{@x%6;yI6jAcA{MC1`uW+e}PH&_O zrvS!#$v>GgbJvP7MM|2hm^_J0`&TJKy0_ShJ@uDiE>Qp#DY=eXx&eD@jc8~<3tQ?( zM6N(4=}WoFLoR!ZE{5qND3iXXRe1X=Ak$P=Y1}d|^`?t9oBAsT!1AwK`g+e1ir{;f zPrYE#A=W5zUxLQnU5jkbQ^CryM5cw*D)$$?i~g-}a5l&@V(uk^=Q4Xlp&?2fSbvUxC~8 zp_vgte@u4l^C+Mv3sJlMaZ=~Qm5GZWa1__D!rUZhWJC|yE~;E{YjZ&e7qX~y-dI3L zTlUAcX%k(nms00@xECqeI1o&_pjSqQ6y@jV|AQU;1DVs_FD)(o&MSD~@d6Wx^!}-t z!}iIV*Ihl^b^-$=RK8aqV^dpDMy z{Cvs+RFaHmRm(1Z^_{jWhV^@JHkR~!gl&PI1S4Z`?wA!h0oG=oizOYc|F`8wRi7lK z2#io{U{HIxoXolK`}b>7-}M5ld@3f;jG&B9SZUqeqtCXm?iX;VcMo@k;ZtepFR@w4 zdO9q|b)7U4JxjAVo1Y#B=K~? zG>-mJ+Hn+)d0Z#twwB#awy{0?jPG$g*jY8@ieFfrwi@t4k*q7M*~_a=r%wyVCFu6`*62~}jmItG^u!Y7$3P=_kB5$k77;J@D$ewEAFs`?7!OTVgU21{Ps*sgW=(7UDrf z`GHpM5SK7{z>5h!BHeIao=z1lEo`Y|Tw5OUbj?d+gQ8UOawoIz>}AdyN=vg~UQwxA zk-qGU;0uwn<6~KUeHw4?cAd^~rcW3c7y)A;vJFZQLKrfl^U}=MZb5A#!oaw&TlxAu znG3~NuZ&SB6!2PlP@~Rm-+ZOC)S+&~8LUO}_(QYCybnk7*Upa4jU8=s*Pw-2{bsP-0_smOs*Z0|l0L*Q&o2u;yr1u|7 zU$=Dsj@=#yzvvXN(}~6wDI+a}68w?op921?SDf#ls=po+d#}&iRlR8IIO*oJI7D*5 zl$*J%E+h&QNS5%x5M1&Z5>oIF?;$fP!sNePQ}+*PR=liGA*J(23a@O_AtHGFX`ba3 z%2laO~1La{wA_Zg4wm=Wl$v%x`Mx`X2@VM4^n8KDPX2T_W5%RyLU}XaZcqL zo-7(xJiwSJ=cvE5W*{jM_%cIPmug7O+s9{Vf1jwqfXL7gG-L&IO~QXF=;3B5aEg;z zpwk18;eoX^F1K4vEv?4_0>sy6H~2uY{X$csfUFojE3W<{s=|;T-@diBPKV9-5aY4L zDu|6_DF)umX4Pur&*P>UY6oqb6m)f$zECr`M~k&KkutXVTW6k-AYHon&+w}8%1;hf zWXB2l<_S3{ZK0hSY`XF@A8YL&f~BagOkhO_=d0p5Ug9BD5FH*DZftHtkdGd=;=~BE zWMKEGf%*C24APN{%nm&*RQ0XoqMC$Ao52LrhdFng*H9^ko#|Ca`kWei->5M)qF5h# ze5DCqPYqupjN?rC$DM>|+c%WR|_;&KTluu-j<>q~Pm>xFJFCV&Jb|??%VR9zAKV;Fhv>Cv(!*PZ0)> zHO=r=JR4{`7%9mkUXG5A%KucMZAVe>qSXAmqyF_k>`G8jkcTpYg=@f$su*L6;F}L~j|$?&7OSUQU2{rFoj47#ZCGu@?3g?etU4-Q-AYekWTZ$s#AkUX!|KI6k+KNeR4 z105>|f|fZXDx;!KA7a2_V`HJlfteW=#&4vt0Oe23Fqmr22m>oCE?XcBT{GWdX2W!_ zJGM1=!q5U27gt_cIYa@>3Xu6JrJ+HhqJ^K*ND0x@(qSN0fzeg*n9EA59(9F4O9LLz z(CnT(zvp3{tB}Q~_i$*+w4u(7pX!I9A69H%ch=U{UlS5O ztEPxfJ$wKCWT3%cC2ZycZ;H5Ps-W0OZVc*;Xr$T()^blZ1~w-6%0C*r7%G!x2No2R zV0V7&RBQfA<%r6|=<0#L4B56vrn$1e`nqHG)l_vpL-ZzOoXRD3O(ZJmF~+yb2se#R z$dMtB9kjmkUOJcw)1Dv|dl@Ax=UYi6QKywfioOuaf+&-P0jJ{8G%M|K!X^0C5-h%R zC!Uuq-izp%V0HzOKi6aQi(Mf=s&3xrz}T18+dF07%H<_g3WyaXU;jClmG;Af!K{9} zh`v@~Sww8$lh5)mUqOh1biFU7E!>r$v9XbboxLr+<@{H5HFtp-T|8k&l# zsy~;0ZF*thJx51J@`KF`yITqJVv}HpQ^{LnsBHvFNJv!s-iRWJC4T4s33$5|m1rf7 zK?l>XV_ck_qJzWXK*kV`AzjPXKRRk6e-RN8h|HRA=v3OMmWyGR(c=v3M)*}Tr5O}; zHT$DG?l(M6`6Fj1&9E#$xjG)w4Yi8K8M;qsxCg2kJ6_;e(?tpm7a7H?WeMBA-gozQ z76C`vvL>^Oa?iX0?=3?^Tm&uX2a_@(;1Mv0NaJIN3E13Ubq{^!hAAJO8w~XoEbw(Q zzVmh3i#$p9Jv)>S_5aRIS9YipTwVwn7YWNAshZNY%Vtf?TZ@8=Xz5kUBaCV)>FAZt z9Adn83{@*zY)|oU3EN^m?xyFBuN-fJmhJ8B^pcWf8Td!MI$52*lIQsy7K)JW+1S|N zw6y*QwW1dQ4v~FS@gPr(R!qit1kJI=nBb3zEPR2rwF~tkxhw9C5^Jrttaj8{Ra423 zr?`uT#)SkYA=Fj-ea*)3JudE(F(o0|s1^0zi#NC=a{O7`&0cV%S1{!wROV!~qADkT2(>)G;5vy{s=IC@{Aw+vQXTTA&V z--et(P#D9g*$*b1fAAur#cz9?a??e$Dz<}MR@IT$#MG1l2d&a}#{6`@ksb$*0n-=t zYNRSw+~|MnF>W(c2{qJUB_$;+Y+N5}@ZGy(SZ$z-LsWE{0|{IHAyJ_lQC!Tk^@s?B zGWu|Eozog#A^5Ha4JyPI17QS!7C-->gcusluV1QqdSL-bF$jILB4gv?er9STbG8Ov zK0b+kadvOxfka!JThnyyE~{7LEVnwMLsPPGCw$G;B5F&Wj7Q7hq5t9S#MQ6vdVL46 z_TZGjKw`*wUwFI;QtQGlul|--T>3`_P3_q8!C3_$y`6~FachvJVGON?Y; ztpfI^Hk0)AXVca@#)gK^u`pK-yXeU5=4v}e!x=ORIzO59%xd~WHhqGzz`k zY_8T7Y+XQ|37xsyayr@1xo8~{uFluuntG!(YO)-hyCQ5Plsn0-B3@GSP`=X*ae&nM zns&3hyPdz_Z8P%~kWBirV$=B_~)HS69p2 zKGzJAl5`6ppMGU#V&wOS{=KJ)gNrLYQOpDGNbJwzKAC3Axz&eS>mjbn!fp~O7IbBM zpQZA0-Z`I};xJ?~QhI`4T|RFYzEpP;EWgyacuf_F&NyddATja@9o_{TDQ*IiLH8U6 zJUkaX5u87N)loC5MNP|8s0h1$r5NyzipRX*cfzUVvXB zw?e;kEA;M9lN_)2mn5K(;9;J4if3E9YFAjr&RB#N=~jGsGqIgMF=IGvHa{z3<2z9Z zby%Leyq3%9xpX|WI*Xrg;N=t`_G~b~b3H=Db$54XUcdeIt5{fq7L1Ji|EbxUM8Di2I`c!w3@$`19uvPmv;7Rod<3 z_@iDR)AeFjC$->cZLZmGl5@xE^63DENndRjozWq~SK&-Du*+@73fY8jLHC`{lnLDr zTZ14WQ6{9;N#BEjA*fvah(AEPwCYD$UX*huv|*rA7p-D5SF0g9kGwnv6NW6C&vy4c zkoNn_jEdSuQhl3i(cp zD292S_~{nB?BH%%l+AhoI-8jOJUMQQ+p+2W91**xIKP6F=|hVB6<>J>0B&=xWK2rQ zmLI8Uk@<5I#7BON`*sx-b8}*ZYJ=I{*-b&x_I@|qE#g-D1H6U-94knZYMR*>bMz#;KS7K5;0%z ztmrqy%{3g&yxG0C&Z+O=G4`8fl%eT_tOz^ucd-PAFdr~9v~2U-{!?lyt}F%j#Ecnw z_5>Y#Aux|ZQgso03{7OE0=V$^a2fQ>ydm_D(@!26LWM@2$vMoctQXK*QXn}H>;HI2 zNybB9QZIg1&yy7e3U$ZDw;clgh%svEWVj5DBdIIQEBdJiFBRsSK-)swjeEP^;hdvaZ*#9`yad@xJ;;? z3VwRhKMUma^u}!3Z97($@4C9;*X;Ik)VKPz2yA)}c+I6X?xO$4-_SGknGJuWJ&r_m zu=w0WoQ{|}??F^7_ulyS(yO?EzET?$EscoB!?r%_nxI34UXiuwC-d zq^b&95D~dy_P3`(lS~HZ1L1GX!M4WW%g;0XwF`DfyvIj>vJ_wZRKk0d_&{8M(UV$a zD`9LiD!Kl1xr-Wn&FnZ%*n>P4ThlELWW*+n1=E}lk!DU>(V)Lm)!Dfb+~b?w`yM1=if%2`!BS~}T# zmnNvs+RYbqFnGQ)U;@;98(Dos85>tvMb#=65hA4=^xERk(|yGiJ0JTV9)m4*Fx)98 z7;bS$>ejOW>#=oHsEKoR*w~lk#MqVIKp~m2fIta&ofoJ5GsO;10rxX6bmg;@3Og-(myV}eHAkfvr_4V2JI`EbisN@sF(8c%l zvuMNa3M99nz!JZYvWcakqOvAM6Bow^<3prqQHd+3_Ir>UF=U=*0F!uY@6V0KmAv;N z4q9}uc%=veREJXW!OHG+hQaSGYDyiR#p`(Bov%Do0iHnbI3G+cDSl|KH+sFCqS?H> ziCXZiC;3x@Fe*YmtFgI@KmFgB#Ux8hD<_xUfRyS@_)O?u0BD{=&j11Ur=folD(b)6 zcI#~bsdw)lSe6#k7Liyued*4JCNkmMZ2Ao6Ce(qd@Rr^HDqE_8gnzwx{9kBwFpOb5^9a zsvhU~$oI7<8d{JY^G$dtZ{5Oov*U?{X=lmf-8Z^GB3wp3?=B0la*P>YG!UZW0LUNP zmoGwLi?c*RR2&V<6aCn1U~Gh(z+8s_BVwZIC2&Eo`N@?hCC#11`Fx7rlZn6#3gf>$ zWeqsx6}1l_C2)S#Lth*XVM>gMnm%6ht@6h8+^z--T8fR^CUeztGB>DbcB6DP!|Lm; zHuFw-VkTg4*}oOu$6W?JpN;iboRW~bI#3mIN ze7`OGFv0Ag)B@T)vbp$i4IeI~L296IK1>u!J2-bh^738shD6m6L7Rfk7uEd|QE~4l zi;eTs|I*KKv9pu3X{3-pcMqc?0uvI}IsNX_1UhmuXTKV_(N!V{+a$NC(G^JOE$J8I$E6AVY;itZKgZ-JrNvJVZFHmf`w{-Eq2=zg?VieX+F9fXp>0F;Dr3qL_)({f4u z`_tN&^SEq-M0ke%0IUW}r(mL_=<&XjX-<4YgI$4~y4|jzXBK zFaQ<({NToH%Bc=a`7c}H_vTD?#77IEH)#CDM@Lv~up98j-y2AreGnp>l3h=YV!Mss z(SnhKiQg)$H`MR{W&d62$z^ot5%g1e!FVTLG13kD9AWr)w)!6F?_PMhAnt40=ewUb z2fu%2h`Dv?8Hz)1N`^#c+s?7cGu`8?k5x1yv1?(8Y=ntuAE=l*`~ zYkYrx7Fnof7<9L%tNQgm4(`3yjx^s7b=|fTcw%79eTIsZF1N!8QaBJ2A^nJM6#D&*)RECRV+lI| zRuiLyY0+SdSFzTF-3~F?_4Q+zQeGFAmayYPa9)Chn#k{HsybDItf=1Gw}CMkFS3=6 zAt-vhef!1X@O0;^PX(qsmgf%B6Esz}HhedylW1yLsI&fny6TEEG<6sW_FRQs0 zPow><1NXVOq;y|f08+QJRKu={VBC34-OQM-TY1LmR+<-jPTRBcZaX6=RDi+PmgSkAT?@8I{P(b}Mh2&! zViAdafd|x<-c?dE_hYs6aV(IUUQm0;<<6e&ZGy+0hCT8jH`jcvmhWru-7l^xO>Bz# zjkhM74Njx;+IZw)4wi;_Bu3o0TiVznfV+efFha9 z&J!YjoHg;FE)0JEj=|(*skMl-#&!uSsu}FXr|ZI$K+b)!;uhVm@yZ&tfuNtgb8D5| zz>nnQ-iwa;%4b>cpy@e7Dw@vcFYZ|uI;|x>MwUN8)^w+pRoL#G$;Y3#Q6Z+*frE<0ul((6yZ>q^f=lH_nV?sxkH!A%G&fCtNH^H={o_;GqbJ;}AxLrr)k ziEu7S`DKBy&*9C){@%HZ^F$zg_(&Cal1XA!2v~7?cOzCK;N9pf5Gbi^xT*=L$`^U? zr~ZB;%i?{R*ifK!mK`C!Q11O%J)P=@Eq!n3?^%njZiYa0Mm!Vzy=pShur*GWM9b3u(m= z#IW&ToXOBxP>{arc@Bee9uC9DhGN?W9(BE-ub{E+i9MaQvm`C*V=CUE$!;jScTyeN ze-B=EhAXraylW|R0W8VU43p}TIk)eBO36X{s_8U>IDOpzlT_-?VglP!(Oa!QR6qat zsvi8+SU2f9f?&i%HHs&sHtf~$&;OJDkVnW|{nywv=_w96K+R3qemE>;LkDVNBr?uA zsgf1r$GOq6+{l%oK2?(!RNO(X%%7{P@8c2^*#s(gm006{4DL&Q2)meUY~qlNN+0K8PgW^E;8lxp+0^;E?y<6mip@I7sN@3MI<@ZDj0N!O zhS@givON;-gV(!n_q#x4!P(nXbWe-|y3Gc>2l2uUa2F>e%T|<+)p}Jxf$eJl=v`@* zIJs7qpJ}Uei;7QF-n&@9ZTb7^yuhANVD7fH^0aj(QJI`RlFFv?%fq_O*YuF~YR?DZ3QWVN!SjVV*%cgnqyQSh@c2C9HVu*Q@_MRebl< z>jeqGk6WvLYiz2*`)vQrm~aBEoD?PBBln;AJ}kLkTpL~co9DGbO0VAVqfG+YJO1); z608XVM*K)sgkjIi|J{ixG3g6TC~wd^hE5XJL30}zn(hbNB7(^(3&@_{YJLGXuwJ~H z@gRRvfDL&kB?gmEPcVv^>4G_*JtcO(L1k_$7d$; zo$Yacn$a`o*!+BdLhjv(4uPMAb7}GRh)~1$+;z9CV%FgGa(vS7q^TEoJ{@GV6iH#u z`AYBY$00In{3=AOTQCJT*l#+I<5z#mjXbX4V4fqR8dzHqdH$*_pkXaGB(Ai=8T(b0 zmUwxLDvp58M+c%A9^XGa7RN6ueTJMr8j{_4_;4rZEN@_+k8i%qvlT2J`+knIy|buH z?&!X#tjQg#cPINaCz!LZ^D78Ezd#+uO0s~nPvx`2>#XF>NXKk&A-Et!Z{H#f3gDn} zQ0~TI@ zfzw(zsh^wPJV)C?(nxE`dpBM`lcKQ}@b+FAC}TIv0;9*`Q^qba!#?K$eovo}NN5XF z`dvKZ0pH=Naf3bpP;87;j~bJn-|d^@Q(sPL+pl@Y^q(>QRx_ZI8$c|jlm|`LS8=>z zx2v01#mw^qdIpVU!dpGZ%8{K^QCU2A{;6b0P!o^Hqo#K`L<_ft2tDt@7RaL|E#f8@ zO5%hrnB`mg4+OV6S!;32oe>XKSBaOhr4hNyVDEv05ICY0KC!g!+Oi{|yfioeL1ca4 zw0%oao5${{^QmACzdvMfDj`U-*^TTl`Ay5p2Ks9}iLlqLlf_2?9Fe8&Bxq>-U#BhX)@c)91 zXYBo?R^roy97G_qk|AH6efyk`9>Wr6ov^oeIRVpToJT03EFZNGhOt#}{}iyVy#@|HG`h>?zh^Qb*U~ zCV6`grDRm4SVhp0URZXyyx=<6@PWIyNBK-{U-|WI(7RL#G>xRjqi*f`^K5P-3;YUg zQ4hFM@?U@+OQo6L6vo*`#~nsRO)*K2!S$>AGF-lSs$nCu(9m8~ z?{^0_zMP^lkG>i!R_m3fbVVuF(Sci@6sDBL`H%mC?#I-(Qbp}*Q>?ZX6P)%VhRF$D z8fH7g;H&o}fIO$a6No&!#+Nff*WI0N_E}L;UF6elopn>$?rZ2s%2D)~v^Rr&L(p5ab z6G^VhJw_L-N(qzs0{l>8=lREFhxLf{2@YgH`3ZG}>o86*@~2wMeJGO~DRy&7*BxT`{(bsu zdqf@l;B^q?;SMh0a3su<`Q@^g7v|l^4I&BexOp9mkSh?kJ1iW+Tq`ZyO|bYzkngc-MCyiQCF+Wy>-3D-V# z#`+`irh)=h?N$XoIiTP4QroeAqrhhZiJB~5ih>JZ^SqpnO4A+Mszxg3XkO+f>yy{oP*R=vzj;QVTHmC*!dluZ!>Q8>;+@o%rBY&^i zSil<{H2IjwAEq$!QH?#_h!jPgaMJ@}M+gB&hf`%cSoF!=zW-hAfZMqB!j4Gv)vK3V zS3j!uumNf?$sO%OO_nwyDTIt~4;{$Nxn4#TkS!${1T~s9f8EuQO6!NDdzI%p4F&R# zbFYynF~HP>$yiRVln?M`lVDWyYMSG==$53)Y!+yo_q?AoGVp2*`(*2rJ@qCQGv~s1 z+q0kz=H8R;8b7i^kJL*dnt+49^u%Pk`)7n&FTtN}aPz0v6RPEK0fC#TxjB}Aq_KMT50(Xh#~59ES$5qH{B>Ye&sQ*YU3RTn zEjapYYTkIpc1)zHSe3{Ar}#KH*1*S>xvBmKBX>1f?mp75fxBt#YpKUY7}Xop`kSguSlZ?Av866ef5vvaGqZ=av90Z_ZztmOp*jvw8 zPb(}>&WXp@9lLB-D{6JIvT%H^Lx+TnCTJ)nAZtdaimg3uO1CIxKQscL*7RDFt9{4z zw!ITGsw6ZN2RX1gk+lcKr{eeB&oy=n_m1-z#!v??OjgJg+V0Cc*jOdAiN{u)MSDIi# z#2#trd7)3>t;k3G{r)#-K<`XkWYfH1i31o-$T)WA&GN!UUE3AnA!9|IPe)D{#dMco9N!2oP(IK7-Hy&^PjyU3MsG-gDL>D|t%W}*|Z!04sEpci!=e4K9TSN8>* zzOgDI_V#K6!Q(JU&|adnxwn2)b4s^M5@~J?@|w5#B2Q6Df4e#4G|fd&o*;AhR56`g zSp_XkU==E(K}IvyZ}`Y6xrg}nu)9_R7SVtA^}Plzrxn4X*F+-(Xy0=+%E9mDD}Fe* z6f5Qm?l|YU;cugBi;{-6KFzBz9s1WJ!fy%oXgO^+3>zQs?S(ze;norR!#&D8J<-biW@*jtUicLW9^@Z)?K6J za2rEPcs>8%Z&!g}7KwsyxZT_vecyQ$vX3sl6)lF~6@#>}p5?YVR6%h7VZGnM2mK8B zn8j9Sfs-C6IG=r8#`~_GrUOvvzCo90zWW7qAcE_C%i*4hMa(G6!SZ9%!)`EYktpyJ z05nRtVR1|FkunP6Ma8h*>7?~Y=ev%Zx}ts)CnwVO-2u5`_*)pzX){U0krbNW>qM+x z*(N8MwW7T}gms#HFnn(bwK`-oKKR51hc9^BKJLwPlNdazT&TAPE}K6^Urg?!N?>Dn zaER{1=mI9UEurMyOC>e($>Q9>q&ZtS?3T_rm z+9)=_Webn|+|>+9^B+K-0l42DTTnE*Zz@cvC(dEf2RBzUykQ+WJ@UZuPIpeeW;1&6 zDgq6=N&E|A5(*n|IGD*Wzy&$~`Ma`m@M~c=dw;_s0_!!77OUj^KPv)&V2y`xrEgf@ zz)HzzM(dd@wzg~d#lTsMebghNq6fyi$bwH&60e>}Fo8g2C&>euP|k=*SiMGiYyWY` zosG25=4rDv#{m@u!$xG!2Z#g=Npiu#c_-q>V%kgVc0S1s*MdtBTIV_ao^3mi2Le1M z&(Zq##F<@hJV&NvI3Zf4ix(&sl#cRIVYeUW(5=w0sl$cowaHxAjYiVJjky z8?=raNHe?mW?#0h>5u1EIMwaeh1d%{%xHJ~4J~&&_Gncm@TRv&i(<}cHYZ2CbAG|L zE-S)qq4OL^#yy?8o6Rbd9t)^nD=M$2RNhCu^t8ouKIYkI!Hqx-_j@=56yFTONOkDY z(&ldn=hL2IF~EG^;>5(0Q070swv1H=xxJ)|OEzBOe9*Irgv~Z?ib$ua;>_8m5TmWF z8a4tB5ckPk3xyev#7lZ+mX7O!t7Hb)%2BfFk~$G<4-H!PO_vAj!sy!V7c;?z{3m~F3uGf5@HYl_`RW!xy|gCnCZ3Yu zhta-A14&}hI(VDp^lvaeL>|?-5kxZu2xNI%e+nYcI=~K$s+^tn3vo@&L8$g~0&jfqs3K&I)f%0a5e^8S2BBep63k4>MkxB7YB&j|vSf z)e>wcv4}^mbj8GH4N*9NoQ7e}WM5hkX13l8=cqjpAL$|bjzZ=yP0!LRdXv0QEc%c8 zUqYIQgAw?hjOdewC+RO-p_h%PL9kf+YEb;bXvs2(^O4)Phs=ES2H8mQSZw>|6N<$& z+-81Gl_OKn>*EPYE|n{h<-JC7Y6{D7680i|zy(65dQ*ilbYPcgO@((&A&m?SD3Ux4 zDvyA`CIj*J>ktnyjE@8=i-kcrTW9*X_ZO|vY9BaVG)4wBeG?Oh7WwjnM}^D3e|gW9 z3>XDO14mD1$Wvz`3A9_H0smXOJ;orm> zWEoUY$+!%*VEi1wVvkuKT=o2b`^mhh3uN!8zDV21aXH0}fjuj4W+M5C;;Xb+b4l^F z?4P4M;+XUe3ukC;#f%dEwyPiL>e6{RoH{MY5)GQikXBuJjG`XMVau;-6M<01^U17L5G>Gvtq>S z>j}0!$bz>}x5Lux8~4+`wzP`tcg6*4uW5yQ*sOY64L_@fWxi0%?3qGRZaMBNQw5UI zQ6S!4tbB6WW39jVt6eW?8(t3X+W1E3Brv`#(81xzgCmSY31Kz?HQR4;0;L5DrT;YKvzl8~YvHLb!REYPYAcO!W?+x7hYTu%J1<3Af?p*K%bw z(!h@uNQ`$FO%8Mc zP&|O=*&s-^pTcS%clAI<_g)Bky7$uqU10JgcC`CJy1?#6?tz73ZT4`!;Na+$?Dx6Z z7qn=c3)WvDN+b3ZD|!H{Q`EaDchWko35(%%r|tz>``||5NK4II6qIV_oVd)bWddWR zSXF)!bWCTNobxSUg)$s8(NddsqTeI()jH~k8wXXz1F}jy`-76t-EQ@?C9L_9!g&rl zevr6kkD#EXJjzp$O72)`oH=2u&Fje7>N|!DY1(PV0)J)b0hc1s0P@$JH|!nPb$XqN zpP}uD6$i3n@23v4@J|kA#4dsXV~XzY;c+yxZKQ=B^Sg#<8iLvO*HG>l9K$g$d(;5Z zNF@cXIUjejZni!Sv}s!CW`WL%+V`gBt(N&~i6P%+q)GZti@A9m_PlBRW4m!MwM0-B zR&lU~+o#`{#k{Af+px#!{RqP-k)p?)$V?b4M&m^vTP zz5SdO#bi1Hz7^N)hcNFXddkW{Gv1WnpsD4)tNckKE z+(@ptu>3x1((#Kj8T_exrW`dfyHRbocLXyU%ie9B&T=L%oG=<=I=ms#gZX66ME3r% zWn)E-R=FHTqc^Wbw+--_G>(0&E+a)M^yKl@fL@SYVk5U~#Pi22oNjrN2RLB+Q;S^{ zWDnvYK2=&;0hF81fcgbQ46FT*GPAQq%QM*dDPlW>mLdbH_I@`&SG*!s6P`i2#w R=K%D2^+M@+p^Q<${{!kbW844$