From ded20334151d76dc4eb55712dee5bad3353a958a Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Fri, 8 Mar 2024 01:15:11 +0000 Subject: [PATCH] Moonstation tram sprites/fixes (#1246) ## About The Pull Request Adds Moonstation variants of the required tram components, resolving various graphical issues with the signs and controls ## Proof Of Testing ![image](https://github.com/Bubberstation/Bubberstation/assets/83487515/90c480ff-16e3-4ede-b742-104497bc4a7d) ## Changelog :cl: LT3 image: Added Moonstation specific tram sprites fix: Fixed Moonstation references to Tramstation's tram /:cl: --- _maps/map_files/moonstation/moonstation.dmm | 116 ++++++++++++------ code/__DEFINES/~~bubber_defines/transport.dm | 6 + code/modules/transport/tram/tram_displays.dm | 7 -- .../modules/transport/transport_navigation.dm | 19 --- .../bubber_tram/code/moonstation_tram.dm | 58 +++++++++ .../bubber_tram/icons/tram_controls.dmi | Bin 0 -> 2235 bytes .../bubber_tram/icons/tram_display.dmi | Bin 0 -> 4426 bytes .../bubber_tram/icons/tram_indicator.dmi | Bin 0 -> 9746 bytes tgstation.dme | 3 +- tgui/packages/tgui/interfaces/TramControl.tsx | 5 + 10 files changed, 147 insertions(+), 67 deletions(-) create mode 100644 code/__DEFINES/~~bubber_defines/transport.dm delete mode 100644 modular_zubbers/code/modules/transport/transport_navigation.dm create mode 100644 modular_zubbers/modules/bubber_tram/code/moonstation_tram.dm create mode 100644 modular_zubbers/modules/bubber_tram/icons/tram_controls.dmi create mode 100644 modular_zubbers/modules/bubber_tram/icons/tram_display.dmi create mode 100644 modular_zubbers/modules/bubber_tram/icons/tram_indicator.dmi diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm index 3304429885e..8cb413b42f0 100644 --- a/_maps/map_files/moonstation/moonstation.dmm +++ b/_maps/map_files/moonstation/moonstation.dmm @@ -2029,9 +2029,9 @@ /turf/open/floor/iron, /area/station/cargo/miningdock) "aEz" = ( -/obj/machinery/transport/destination_sign/indicator/directional/south, /obj/machinery/button/transport/tram/directional/south{ - id = 1 + id = 1; + specific_transport_id = "moon_1" }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/machinery/camera/autoname/directional/south{ @@ -3865,11 +3865,10 @@ /area/station/engineering/atmos) "beV" = ( /obj/structure/transport/linear/tram, -/obj/structure/fluff/tram_rail/electric{ - dir = 1 +/obj/structure/tram, +/obj/machinery/transport/destination_sign/moonstation{ + pixel_x = 16 }, -/obj/machinery/computer/tram_controls/directional/south, -/obj/structure/thermoplastic, /turf/open/floor/plating, /area/station/terminal/lobby) "beY" = ( @@ -7882,6 +7881,16 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) +"cvG" = ( +/obj/structure/chair/sofa/bench/tram/right{ + dir = 8 + }, +/obj/structure/transport/linear/tram, +/obj/structure/fluff/tram_rail/electric, +/obj/structure/thermoplastic/light, +/obj/machinery/computer/tram_controls/moonstation/directional/north, +/turf/open/floor/plating, +/area/station/terminal/lobby) "cvT" = ( /obj/item/radio/intercom/directional/south, /obj/structure/disposalpipe/trunk{ @@ -9706,6 +9715,15 @@ }, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/starboard) +"cZy" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/transport/power_rectifier, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/tram/left) "cZH" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -10523,6 +10541,10 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"dlk" = ( +/obj/machinery/transport/destination_sign/indicator/moonstation, +/turf/closed/wall, +/area/station/hallway/primary/tram/left) "dll" = ( /turf/open/floor/carpet/red, /area/station/service/library/artgallery) @@ -15768,6 +15790,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/corner, /area/station/common/pool) +"ePz" = ( +/obj/structure/transport/linear/tram, +/obj/structure/fluff/tram_rail/electric{ + dir = 1 + }, +/obj/structure/thermoplastic, +/obj/machinery/computer/tram_controls/moonstation/directional/south, +/turf/open/floor/plating, +/area/station/terminal/lobby) "ePE" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 @@ -31457,7 +31488,6 @@ "jFl" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /obj/structure/closet/emcloset, -/obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/terminal/lobby) "jFn" = ( @@ -31778,7 +31808,6 @@ /area/station/security/detectives_office) "jKF" = ( /obj/structure/transport/linear/tram, -/obj/machinery/transport/tram_controller, /obj/structure/tram/alt/titanium, /turf/open/floor/plating, /area/station/terminal/lobby) @@ -35026,6 +35055,9 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) +"kKt" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/primary/tram/left) "kKy" = ( /turf/closed/wall, /area/station/commons/dorms/room3) @@ -36183,14 +36215,8 @@ /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) "lby" = ( -/obj/structure/chair/sofa/bench/tram/right{ - dir = 8 - }, -/obj/structure/transport/linear/tram, -/obj/structure/fluff/tram_rail/electric, -/obj/machinery/computer/tram_controls/directional/north, -/obj/structure/thermoplastic/light, -/turf/open/floor/plating, +/obj/machinery/transport/destination_sign/indicator/moonstation, +/turf/closed/wall, /area/station/terminal/lobby) "lbH" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -40335,9 +40361,9 @@ /turf/open/floor/iron, /area/station/cargo/storage) "mlr" = ( -/obj/machinery/transport/destination_sign/indicator/directional/south, /obj/machinery/button/transport/tram/directional/south{ - id = 3 + id = 2; + specific_transport_id = "moon_1" }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42694,9 +42720,9 @@ /turf/open/floor/mineral/gold, /area/station/command/heads_quarters/qm) "mWO" = ( +/obj/structure/tram, /obj/structure/transport/linear/tram, -/obj/structure/tram/alt/titanium, -/obj/machinery/transport/destination_sign/split/south, +/obj/machinery/transport/tram_controller/moonstation, /turf/open/floor/plating, /area/station/terminal/lobby) "mWT" = ( @@ -43167,9 +43193,8 @@ /turf/open/floor/plating, /area/station/maintenance/port) "ndO" = ( -/obj/structure/transport/linear/tram, /obj/structure/tram/alt/titanium, -/obj/structure/plaque/static_plaque/tram, +/obj/structure/transport/linear/tram, /turf/open/floor/plating, /area/station/terminal/lobby) "ndQ" = ( @@ -51673,9 +51698,11 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "pJF" = ( +/obj/structure/tram, /obj/structure/transport/linear/tram, -/obj/structure/tram/alt/titanium, -/obj/machinery/transport/destination_sign/split/north, +/obj/structure/plaque/static_plaque/tram{ + specific_transport_id = "moon_1" + }, /turf/open/floor/plating, /area/station/terminal/lobby) "pJW" = ( @@ -72656,6 +72683,12 @@ /obj/structure/table, /turf/open/floor/wood, /area/station/engineering/lobby) +"wcA" = ( +/obj/machinery/transport/power_rectifier{ + pixel_y = 0 + }, +/turf/closed/wall/r_wall, +/area/station/terminal/lobby) "wcG" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/cake_ingredients, @@ -79202,7 +79235,10 @@ /turf/open/floor/engine, /area/station/engineering/atmos/project) "ybe" = ( -/obj/machinery/door/airlock/tram, +/obj/machinery/door/airlock/tram{ + transport_linked_id = "moon_1"; + name = "Moon Rover" + }, /obj/structure/transport/linear/tram, /obj/structure/thermoplastic/light, /turf/open/floor/plating, @@ -213168,7 +213204,7 @@ sDL tjZ eUc geh -sDL +mWO tHD bGx kxs @@ -213425,7 +213461,7 @@ jKF fil uiv geh -ndO +jKF tHD pQX fux @@ -213678,11 +213714,11 @@ fhy iNo iNo yhM -pJF -lby -syH beV -mWO +gZD +syH +ePz +beV tHD eii fux @@ -213936,7 +213972,7 @@ crT iNo yhM mdG -gZD +cvG fwM geh mdG @@ -214196,7 +214232,7 @@ ybe iWG kBx iMX -sDL +ndO tHD asy sfL @@ -214453,7 +214489,7 @@ sqG iWG eNL iMX -sDL +pJF tHD asy wpy @@ -214962,7 +214998,7 @@ idX lLr cOG aEz -idX +lby ocT dmG vzC @@ -215476,7 +215512,7 @@ ahL ahL ahL jFl -idX +wcA scN gEj cHz @@ -230121,8 +230157,8 @@ stM jWC eYR mAX -vQx -jhQ +kKt +cZy eEv avW aWa @@ -230379,7 +230415,7 @@ iJZ wxh iJZ iJZ -hdn +jhQ eEv avW aWa @@ -231667,7 +231703,7 @@ qup hdn eEv mlr -hZv +dlk fzs wuM eWR diff --git a/code/__DEFINES/~~bubber_defines/transport.dm b/code/__DEFINES/~~bubber_defines/transport.dm new file mode 100644 index 00000000000..51f81a714e6 --- /dev/null +++ b/code/__DEFINES/~~bubber_defines/transport.dm @@ -0,0 +1,6 @@ +// Tram lines +#define MOONSTATION_LINE_1 "moon_1" + +// Destinations/platforms +#define MOONSTATION_TERMINAL 1 +#define MOONSTATION_MAIN_STATION 2 diff --git a/code/modules/transport/tram/tram_displays.dm b/code/modules/transport/tram/tram_displays.dm index 1975a54e7e6..0e36295f97e 100644 --- a/code/modules/transport/tram/tram_displays.dm +++ b/code/modules/transport/tram/tram_displays.dm @@ -123,13 +123,6 @@ update_appearance() return - //BUBBERSTATION CHANGE START: FIXES 2-DESTINATION TRAMS - if(travel_direction == NONE) - sign_face = null - update_appearance() - return - //BUBBERSTATION CHANGE END: FIXES 2-DESTINATION TRAMS - sign_face = "" sign_face += "[base_icon_state]_" if(!LAZYFIND(available_faces, controller.specific_transport_id)) diff --git a/modular_zubbers/code/modules/transport/transport_navigation.dm b/modular_zubbers/code/modules/transport/transport_navigation.dm deleted file mode 100644 index f5d05fe1b93..00000000000 --- a/modular_zubbers/code/modules/transport/transport_navigation.dm +++ /dev/null @@ -1,19 +0,0 @@ -//Moon Station - -/obj/effect/landmark/transport/transport_id/moonstation/line_1 - specific_transport_id = TRAMSTATION_LINE_1 - -/obj/effect/landmark/transport/nav_beacon/tram/nav/moonstation/main - name = TRAMSTATION_LINE_1 - specific_transport_id = TRAM_NAV_BEACONS - dir = WEST - -/obj/effect/landmark/transport/nav_beacon/tram/platform/moonstation/terminal - name = "Terminal" - platform_code = TRAMSTATION_WEST - tgui_icons = list("Terminal" = "plane-arrival") - -/obj/effect/landmark/transport/nav_beacon/tram/platform/moonstation/station - name = "Station" - platform_code = TRAMSTATION_EAST - tgui_icons = list("Station" = "plane-departure") diff --git a/modular_zubbers/modules/bubber_tram/code/moonstation_tram.dm b/modular_zubbers/modules/bubber_tram/code/moonstation_tram.dm new file mode 100644 index 00000000000..ca001ff0b5b --- /dev/null +++ b/modular_zubbers/modules/bubber_tram/code/moonstation_tram.dm @@ -0,0 +1,58 @@ +/obj/effect/landmark/transport/transport_id/moonstation/line_1 + specific_transport_id = MOONSTATION_LINE_1 + +/obj/effect/landmark/transport/nav_beacon/tram/nav/moonstation/main + name = MOONSTATION_LINE_1 + specific_transport_id = TRAM_NAV_BEACONS + dir = WEST + +/obj/effect/landmark/transport/nav_beacon/tram/platform/moonstation/terminal + name = "Arrivals Terminal" + specific_transport_id = MOONSTATION_LINE_1 + platform_code = MOONSTATION_TERMINAL + tgui_icons = list("Arrivals Terminal" = "plane-arrival", "Cryogenic Sleepers" = "bed-pulse") + +/obj/effect/landmark/transport/nav_beacon/tram/platform/moonstation/station + name = "Main Station" + specific_transport_id = MOONSTATION_LINE_1 + platform_code = MOONSTATION_MAIN_STATION + tgui_icons = list("Main Station" = "arrow-right-to-city", "Departures/Evac" = "plane-departure") + +/obj/machinery/transport/tram_controller/moonstation + name = "moon rover controller" + desc = "Unlike the iconic moon rover of yesteryears, our tram is here to remind you that even in space, mediocrity finds a way." + configured_transport_id = MOONSTATION_LINE_1 + obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + +/obj/machinery/transport/destination_sign/moonstation + icon = 'modular_zubbers/modules/bubber_tram/icons/tram_display.dmi' + configured_transport_id = MOONSTATION_LINE_1 + +/obj/machinery/transport/destination_sign/indicator/moonstation + icon = 'modular_zubbers/modules/bubber_tram/icons/tram_indicator.dmi' + configured_transport_id = MOONSTATION_LINE_1 + +/obj/machinery/transport/destination_sign/Initialize(mapload) + . = ..() + LAZYADD(available_faces, MOONSTATION_LINE_1) + +/obj/machinery/computer/tram_controls/moonstation + name = "moon rover controls" + desc = "Unlike the iconic moon rover of yesteryears, our tram is here to remind you that even in space, mediocrity finds a way." + icon = 'modular_zubbers/modules/bubber_tram/icons/tram_controls.dmi' + icon_screen = MOONSTATION_LINE_1 + specific_transport_id = MOONSTATION_LINE_1 + +/obj/machinery/computer/tram_controls/moonstation/directional/north + dir = SOUTH + pixel_x = -16 + pixel_y = 32 + +/obj/machinery/computer/tram_controls/moonstation/directional/south + dir = NORTH + pixel_x = 16 + pixel_y = -32 + +/obj/machinery/door/airlock/tram/moonstation + name = "moon rover door" + transport_linked_id = MOONSTATION_LINE_1 diff --git a/modular_zubbers/modules/bubber_tram/icons/tram_controls.dmi b/modular_zubbers/modules/bubber_tram/icons/tram_controls.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0b3909e962d585a8980b8420c7f237b0bf7d274d GIT binary patch literal 2235 zcmbtWd03L!9tN!-ubR^`PMTZRl(t%ps40kfBQepeu|$!|1=ldeOanAE9UYhHX09nd zV``WEsJ;^R8 zgoc`q8UO&$a5!b}s_e(s8hC^9sdFHZtLz%0&s`wc`-Xdm1%wg;@K*qU>-Q>OKURxB zy!95>GAbpWT9WfN&N1u9O!X!)@Yz6ZVxWqHKYu7PbnmGUy&dmE$9M);QcqmX+&1Uh zmlWpZp?Z^$?=tr`WZJNrmq|d5HXYV9$SX3`TF+Krc%C;FEHp-P7&qYnIryPIVRimRWNpM_A+eH%|3j$ z!wG#<_sx4V_g@`n!)3~L**u+asKb7Vy{_&v;7G#6N?kErvnBlEV zSrq+iu4;_I*49Ss``d*=j{h;!)wd8Bu>m5eQ&=yJAb1K{q_tonDMm4rkq@OrFS4`& zw9~O#yKKRm4cBedidzSUt0Wi#?S23lor|>Zz@?3d&OJQsvik1t zSwkg`2`ULi@#6JuUq>&CyEtjwV$rz3SD_Dl`md%02p6md2T>IA41yk-V5YiQo=9ee$w^eF%lel5L3Mm61(`lXOo1 zc#DTg$?#WDomQ!Yd4rB8^~`I6;T)j*%c&TdMBc$IX5Xn2a+)~;Ob<;sz$P`eP;qBe ze2gOTEz#kOCR1uumE;l!Cf4CD*a$BQwOcEq-?VvvT30$?*H)o}<>K|#9YnC|?|`rI zVbySB{@XeOul3|WCfWAo)pfUiqvcO*6`_CwWKHAX{1VlfAehd~5rhjEz4ADrj?w`h zdcX>Y-vW(T#M!y5b`7#e?uSbz%S8g%h~ixmR60s}T+eXRZ~ftP-wV1bs#BswH2(^Q zg&^wlN*5XJyfy}0mg{tRl3P@t`(BlLL3i}SwA*}0Wo`(uqn(#>6g10#)7J*2lZ@`A z#2#)@_FCNQT`jJ!-gOHRqXRjX$yJ$Q*W~Ucx$zHkry~5!&mKk8`8^Tcb?rT=Jw;~> zHyBUXwysXr^Br>>h~+g0M0fj)+7_V~8_kGYX?kWdMXX?QLQ;IjWTG}RtZYCuzgkm& zG)ND|WS054S*fL$`VCl-(+~EJ_RjE^+>xD;ZQ0J0nf`RVf_8|*$R~sD$>$@Cp7y`X z0`oF=LRc`WXr*=7nOu^YUEk24Au(> zk+Z`szcFoQk7ogNaZ9g8=w__R#EigM>d`HR-dRGL;3%mFA2Ehcy4|ltVfXcMbc>eE zvzOe;n6d<+#s`7(DAoH>#OkUKLF8A;o0_XQ=}`bZU)*C8ml7JD92&8b63SihkrZm= znZF1ugd{oX8tV;y%H-!wVEC11Cq7o)|AA9kktHg@ngXF(Ev1_J4At(wnYIDPzX9Ub zsRr|O&65_ct^e8i!g(6va)agZ(FaogY(-Fg#?d-mAV#)r-!V1eBYx_T_%;s|0*#2Zpe2thM z|C($I4l~yOqYV8|ghZ%S^P|qAwUY~O)$F>qz4xc?86KA`z5wKn3r>XEZ%o=M;# z*|v_gL6F&S7C0l_`Nf*R`C_r1%Z?z6JTxmay&98!E$RRlJoHT<&R1h+FuT0q?t$+< zOfUJYisEH+$`;lSn~SQd60D*SE?;;#CG3C13d`~f#IPQ8rkOcnx+l!Ub7)iimCv-i z;bUga#3+*q0t;f}#Buk6l76aZ2m}@}e8BU_Z$wx1Fr&bH0&&Y9a=$5y)fzu({TGq` z@9adVh4wQqc}kXP2W2v6rm&+ANL{f^6+mOydU}-9)|D~x@-Oky#|nAZGD)d%MW{`_ z=!NjF*d#gCF-F0fmySL3*BV!<`6pYD#@h4_J(Cg2n+rqoTiv8UmV_I~#QMO7O@)pn zQ&>s#lMs2c5bpyse4X}};G6Gvz?Hu8w<%8>l7KX7K%RKF)<>`Sy%Bw$U~bihxp8p! z5YAimv@pq$i8~$~99yknuGHJ151vR^Dt*X&rQWFT`|Ygxcf|CfUuRG49_d`wX)H literal 0 HcmV?d00001 diff --git a/modular_zubbers/modules/bubber_tram/icons/tram_display.dmi b/modular_zubbers/modules/bubber_tram/icons/tram_display.dmi new file mode 100644 index 0000000000000000000000000000000000000000..460c0eb54e5968ac0d533ac619720bcd2b70cc03 GIT binary patch literal 4426 zcmbtYXH-*J*G_-|87ZRg2pF1!9h5f6K!C(orATvt7!WWB0x}3l385zzK&6R@fHV~; z0R@6c2_+~cLJ)=$gS1dZ6ChGTfRy_NXXah==NZQikj6DbhRucwjhq&;~9pN@(*i+2tE$lNcFw~$?*7JX=8?s5&{dy~@AERl&uPJ3lL>{c)pi0P8w zhaoRGEm+kr|H}yWtRwm|JSNQMTK}}JC^Z-pFf+63Sz^*&AL)e8OixxPMapr|27G*X z>ENt*>;lTWeC2+=>#g7GF{rC)!8VWA3Jy*UY5pudk*cq#>+8=RYWd0LNhGTh&*Zza zrUm4fJ01`G4}3JM_CG{9tJ9B3zow3_eb@FHlXiL^C6=#Q*ww03hq%$vavR!o<;V{> zvWWo*wCk|tnNyD8xr^hlt4fw5($JKHo1S?X`rn&7WY7DxIf##>6Vm)U&Io;r8PGNab2yP4tFSg9E`y9 zm70@Os2tH^06}xmb6X9yak2ji3WbV;engc*Kx(K1Y9QV1Xy&NOP%;|p3MJ+%-TV)} zdqXb#EEt!s?CD9`Xg?gAzpP;n$L|^4VY(P{*DiV*1B+dz(){Kc3PG)6kxXVe<0R;v zBcZBFyD~rwXUraw{tU1)DU6fW?xQ^)nu>m4W||0Uu0=8Z?k;{s=XB5$h(yLn+Pyvb zs*n5!I-Q4RO=Kw42dTJD3%Ea~+PT;k&e#}yW{b0#=FXQ)Z*e>CVy9-+pXhWLMTB2I z(I)Y<_hOY4O>4j_lH?hqQR{}Nu*_bqecBb3zx5)t`vqUkBdhBvS>Kmdo7_@BShU<@ z>6AJ4;-H$|VxFlhy|zDbU%>qIv&yb8;a_~Hk2}ndPwmiPQ-6Q36@%s*K9XuG053jIC475eqk4zF3k0@}yNPMHaU_Xy79X@s2T<3v3Uz9;>iHpx+Pa zJtE(m*X1KbET==GF({_u>cJhjYzIS;a|cs` zYJQWzQSciK=4<-stXE*r~|``v*e|4*1wGeA|a31K4(IiQ@WZMXFRIT zNKmt(mm9B_U%Zv$Obon0MbJ_lbHDP2e4dsizbfsDQhHQQ?HuZn*FPRGnzvv~{6(Me zwr00`j>8@r^`|{d%H;t`6owi)j2=`%c2qLx1dcJ<#vYyQcg&$MH62IPHi$xgGD9-$ zMVhQxbw=Qm{-@J9#%$*=51qNE+O^Y9r}_<4_(Nh~o}=l99#oxZaJGVbk3eJUTl@>< z^~ZWU&Z5#6-4!eP%JdUcFTRz#z$m94U~?H;A)1QuO#G}O|JrTI&u<}r+)P{uCpg)V z9@i@V-r!^M;__-T zc4o`9|J*L?=Y#4`9LWu(Mt2G@(bfgL)B#xdM*YK+Am^y9SvhsJ{hP=tHXDK71G;ks zrsc%i{E(+5V9L`Anqs2@9~5PO>|)k&dV1{1ZrN45<<3u5@}x4?^k4Dehb!q58k}`* z$I5_5_*jRmr}aMAh1A4A?@x7aIs)g9^;Rr!Q9vchHDKe?rrys)_I1Ta<*)0%lADXY zN~UJHd8$1Nmm2Emux$4)4By};9;X1P;LY1%F{A2>rS&+%;w)2=p#$YlW=3)O=>_}+ z+Il5cIgZRUIzPBUh~%AY?_|}7uV>A>lP1JTp!hv&z}$6&R=<-n$Yo5YyRy_ z!O4PTSJAjJE((Hr;~lB8k{$@G^$8!dOYMBg%n!30C4H0vm-OfE-eDeLtV9I4~>wG$fO&tgV?@hPkL-HHPP^N*)PeKqsq|-^wY3z7?B=^*NUhraK)3QCH-a**Z)@3~nwcR{*V0zo5*1 zxZaS41HHTdopA+rypJoJFxNdk+V8natEk;QGdc5HD6o`>^!7I6MbFUdO_4RbubAnG zl-+0iDvyv@UQH>uwE!I9-%3ceLPPFX3T48}M5J4wF}$@^MwEot-pj!X+6=r4L%b7K zeaN+Zd@%px(Y8q2OQh!cLpL-YW$xwAkRdr*$3vRuT`=}6pY$SUHaaNCV=mR;B#O9! zn0tH)7#ixHn~0^8)|cuNRXd*mZb}irPCF?(1)qQ=CzF)Mjj2s!?UL4BidAC3DEdO( zQm=F!KX@ua5GL#=EjlmUX>2R_gt5SPH9I=2r=mxyEH@`lP*S*rZL4(0+op}!-gV;* z2O%>XkEn-)NBxbfvY!11I^fJ3c^|c(SEPV^pdPvz&{xF@zn`|kzt`22+QG@E-1apC;RZ42jEkR~c2<&z~8|uC^ zglS!U2E4D$--13Vj1~tgZ=oh4$G}g|0F)fwJdPMFaVGyW_F~7|w{M$>a-fxm{7Mhd zA5)pXfxjE*?M8VA9En+)!2YU_>}(7Rx)4fz|eb6V?@Q#1DC;E;7+yHIc1KhTg=8_<$Z%gKSK7kC;j9Qnk#qO*02M&&M;`S{V; zhOfrh#<5XWW?-zbWAJiMtX}E0eQ`KhHO#@_6I+|fCa~rtNRWk?5a&} z5y#Fd`j*tGs6cAH&Ib(ZsC)7G1WsGAHgdB*D<`JLwd~RsJ#?*J^mi7np%9oG2ZR8b zQ;HaQAC$E*Yoz{Qe595ikPc`mVBkmkftoeRJ5aUTLey5oo`1-Is;xYX0yOsS-TR4} z47z_f_9s!C6e;OPc)Xa{cgG|8f43&A;ez z{=zM>(mi{7kQ;y%nfyKye-VPU=LThZ`{*4nPHEJ=yg8HnK69IojBfqA4*IYCw`nA# zYTL|-*#7}G+akcxpp_+x-~7XYh2CgsG_t4lpfD`#3)v4;Rh3G=zy-Y-GRL!hD|meQ z(40dh3Qx<(R?G{x^#*tzErp)$*EJBM%m{DGpAL)k}3T){^Im0S%zJ0gN5wt%!txSCZf`6WN?ihN` zQzy5~bof))Fn0SpP8K9e2VV#TrIdoMSirwOHVW77M*>q-t_@Mp$ZLWT>IDy_XybcJ^qA%Do}N3EiG4eE3(1uX%S4UEvV29TAX|miLV)iNX?P!3Jj!1Vzz_r5**7(Fn#L{nw{Fk|I zON*Qmf=RA)NR?^U1E&;02@{)V0XOVRHnD{iQ#W0!6|&7INQKg-)(CRWLk>sw12hfy z8T)=jJ6S-xEB3ro`8-sF;?~Pg6}vJ9&Z)h8u}ceM$bs!XFEJY}aXY^nNW&Sa%|q4J z9tu-#+a|T%FR|q*?ZO!^3+LvQ4KK$(Pc{Ev+r>MjtL9l=UOupq^pAPF_FpN@-Ih|d zzooPqLYu#L;U*}{Fhl6OrWMQ~Xi$Cby~>tL8X3~z-y9eG44>rQ%trf*f@TvV-t_!c z?>~k$3-H-6{+D?EmjnkdJK@B{2(?o;35B+$E)&uHlVt=JaBtqDjBEIq^Lo3y96{!*Dd1*9FN5CC^IDK` zew~CCtcFce%7n_xWyJ_(0>kZY<_o$wP?!`=f-+3x%9m?}< zi7bXp7SzoB{RkXrjEOY6WtH2bo7Du`|*_i zDElQ=i?b61Pk@oZ|GRqLl}u}^K#he~4J{5J ZsW|Ve(epq`# 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