From c5ef9cbfb269244b2c94d898a52f8138858d7963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Wed, 12 Mar 2014 11:51:14 +0100 Subject: [PATCH 1/9] moved internal time step setting to Game player should not be able change it as it is not synced yet --- OpenRA.Game/Game.cs | 13 +++++++------ OpenRA.Game/GameRules/Settings.cs | 3 --- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 - 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index f0b61be1e6..25ee37e312 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -73,7 +73,7 @@ namespace OpenRA public static int RenderFrame = 0; public static int NetFrameNumber { get { return orderManager.NetFrameNumber; } } public static int LocalTick { get { return orderManager.LocalFrameNumber; } } - public const int NetTickScale = 3; // 120ms net tick for 40ms local tick + public const int NetTickScale = 3; // 120 ms net tick for 40 ms local tick public const int Timestep = 40; public static event Action ConnectionStateChanged = _ => { }; @@ -163,14 +163,15 @@ namespace OpenRA static void TickInner(OrderManager orderManager) { - int t = Environment.TickCount; - int dt = t - orderManager.LastTickTime; - if (dt >= Settings.Game.Timestep) + var t = Environment.TickCount; + var dt = t - orderManager.LastTickTime; + var world = orderManager.world; + var timestep = world == null ? Timestep : world.Timestep; + if (dt >= timestep) using (new PerfSample("tick_time")) { - orderManager.LastTickTime += Settings.Game.Timestep; + orderManager.LastTickTime += timestep; Ui.Tick(); - var world = orderManager.world; if (orderManager.GameStarted) ++Viewport.TicksSinceLastMove; diff --git a/OpenRA.Game/GameRules/Settings.cs b/OpenRA.Game/GameRules/Settings.cs index 15bf950ebf..4295333806 100644 --- a/OpenRA.Game/GameRules/Settings.cs +++ b/OpenRA.Game/GameRules/Settings.cs @@ -135,9 +135,6 @@ namespace OpenRA.GameRules public bool AlwaysShowStatusBars = false; public bool TeamHealthColors = false; - // Internal game settings - public int Timestep = 40; - public bool AllowDownloading = true; public string[] MapRepositories = { "http://resource.openra.net/map/", "http://resource.ihptru.net:8080/map/" }; } diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 8a83a0958c..fd3c72d7ea 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -479,7 +479,6 @@ - From 0c20e38443d79632acdd8dd51ab24944e9d04499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Wed, 12 Mar 2014 11:51:36 +0100 Subject: [PATCH 2/9] add a pause/slowdown/play/fastforward button for replays closes #4633 --- CHANGELOG | 1 + OpenRA.Game/Game.cs | 2 + OpenRA.Game/World.cs | 7 +- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + .../Widgets/Logic/ReplayControlBarLogic.cs | 51 +++++++ artsrc/cnc/chrome.svg | 37 +++-- mods/cnc/chrome.yaml | 2 + mods/cnc/chrome/ingame.yaml | 83 ++++++++++- mods/cnc/uibits/chrome.png | Bin 75589 -> 76128 bytes mods/d2k/chrome.yaml | 2 + mods/d2k/chrome/ingame-player.yaml | 104 ++++++++++++++ mods/d2k/chrome/ingame.yaml | 135 ------------------ mods/d2k/mod.yaml | 2 + mods/ra/chrome.yaml | 4 +- mods/ra/chrome/ingame-observer.yaml | 99 +++++++++++++ mods/ra/chrome/ingame-player.yaml | 99 +++++++++++++ mods/ra/chrome/ingame.yaml | 129 ----------------- mods/ra/mod.yaml | 2 + mods/ra/uibits/musicplayer.png | Bin 3043 -> 546 bytes mods/ts/chrome.yaml | 2 + mods/ts/mod.yaml | 2 + 21 files changed, 482 insertions(+), 282 deletions(-) create mode 100644 OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs create mode 100644 mods/d2k/chrome/ingame-player.yaml create mode 100644 mods/ra/chrome/ingame-observer.yaml create mode 100644 mods/ra/chrome/ingame-player.yaml diff --git a/CHANGELOG b/CHANGELOG index 54ec1af64e..b14683d7ff 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -23,6 +23,7 @@ NEW: Order lines are now shown on unit selection. Fixed chat synchronization in replays. Added a combined shroud view of every player to the replay viewer and spectator mode. + Added pause, slowdown, play and fastforward buttons for replays. Fixed the game sometimes crashing when deploying and activating the guard cursor at the same time. Build time is now set when an item reaches the front of a queue, instead of immediately when queued. The attack cursor now changes if the target is out of range. diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 25ee37e312..64f4db447e 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -167,6 +167,8 @@ namespace OpenRA var dt = t - orderManager.LastTickTime; var world = orderManager.world; var timestep = world == null ? Timestep : world.Timestep; + if (timestep == 0) + return; if (dt >= timestep) using (new PerfSample("tick_time")) { diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index d9201f5aa9..8aca6522a3 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -66,9 +66,14 @@ namespace OpenRA } } + public bool IsReplay + { + get { return orderManager.Connection is ReplayConnection; } + } + public void SetLocalPlayer(string pr) { - if (orderManager.Connection is ReplayConnection) + if (IsReplay) return; LocalPlayer = Players.FirstOrDefault(p => p.InternalName == pr); diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index fd3c72d7ea..1dc2c1ffbf 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -481,6 +481,7 @@ + diff --git a/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs new file mode 100644 index 0000000000..179ecc6995 --- /dev/null +++ b/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs @@ -0,0 +1,51 @@ +#region Copyright & License Information +/* + * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using System; +using System.Linq; +using OpenRA.Widgets; + +namespace OpenRA.Mods.RA.Widgets.Logic +{ + public class ReplayControlBarLogic + { + + [ObjectCreator.UseCtor] + public ReplayControlBarLogic(Widget widget, World world) + { + if (world.IsReplay) + { + var container = widget.Get("REPLAY_PLAYER"); + + var background = widget.Parent.GetOrNull("OBSERVER_CONTROL_BG"); + if (background != null) + background.Bounds.Height += container.Bounds.Height; + + container.Visible = true; + + var pauseButton = widget.Get("BUTTON_PAUSE"); + pauseButton.IsHighlighted = () => world.Timestep == 0; + pauseButton.OnClick = () => world.Timestep = 0; + + var slowButton = widget.Get("BUTTON_SLOW"); + slowButton.IsHighlighted = () => world.Timestep > Game.Timestep; + slowButton.OnClick = () => world.Timestep = Game.Timestep * 2; + + var normalSpeedButton = widget.Get("BUTTON_NORMALSPEED"); + normalSpeedButton.IsHighlighted = () => world.Timestep == Game.Timestep; + normalSpeedButton.OnClick = () => world.Timestep = Game.Timestep; + + var fastforwardButton = widget.Get("BUTTON_FASTFORWARD"); + fastforwardButton.IsHighlighted = () => world.Timestep == 1; + fastforwardButton.OnClick = () => world.Timestep = 1; + } + } + } +} diff --git a/artsrc/cnc/chrome.svg b/artsrc/cnc/chrome.svg index 7f653feeee..19a978210e 100644 --- a/artsrc/cnc/chrome.svg +++ b/artsrc/cnc/chrome.svg @@ -13,9 +13,9 @@ height="512" id="svg2" version="1.1" - inkscape:version="0.48.2 r9819" + inkscape:version="0.48.4 r9939" sodipodi:docname="chrome.svg" - inkscape:export-filename="/Users/paul/src/OpenRA/mods/cnc/uibits/chrome.png" + inkscape:export-filename="/home/matthias/Projekte/OpenRA/mods/cnc/uibits/chrome.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" enable-background="new"> @@ -100,16 +100,16 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="5.6568539" - inkscape:cx="371.83537" - inkscape:cy="425.37964" + inkscape:cx="424.27411" + inkscape:cy="420.32669" inkscape:document-units="px" - inkscape:current-layer="svg2" + inkscape:current-layer="layer1" showgrid="false" - inkscape:window-width="1386" - inkscape:window-height="856" - inkscape:window-x="54" - inkscape:window-y="22" - inkscape:window-maximized="0" + inkscape:window-width="1920" + inkscape:window-height="1060" + inkscape:window-x="1364" + inkscape:window-y="-3" + inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true"> image/svg+xml - + @@ -1355,6 +1355,21 @@ id="path3208" d="m 416,596.3622 -4,4 0,0 4,4 z" style="fill:#ffffff;fill-opacity:1;stroke:none" /> + + + + 4a!1l6BcS?5(2un(X5`vV{2*T1xcf(zzTSTNmQ97k17ePWwL^_sk*hRYE z{e3gv_s)DXduMj`{&V-9bDs0m`8kTc{0IA;ACMQA%VgJh-c{1-P{$id{*lhFhHW4j z-*JEo4G#JqFW8CpgwSLpw3}m7Ks2tD{pNraTv7d8Y}rTIc6cBr*JI|=F5S~OrK&+i99tlop#`>9X)!b z1I$0jIuGok`tzwnxP>(qo`ct-)Af6CQU3QaAe_ARIW&)pLld69s9zl73cn`9@3^@~ z4YxPFwNk=EKMBUV>9%-{h<`AB3G#^RP^7xhXB}N$zH1uEA5V%iIbVnIdBk_<;2hQ+ zq`?K?75j~KKTm@~@9NxEvDqlciDF1Yfznr1h2{Jll>Oi0@vY(a3ix2qs+7*0X3_gz z&%|=;{bG)Qbv#QI9t5EbZfajmry)}ujDt@4`zNwsKCsw zWhgE-+44UVn-hM3M&1Fg*W(DGCe-eeg_OEjmwyZ(&6^{Fs&YzftS97Lp~*AWQUac9 zA*(10*Mg_6vrdiKw(Wwpjz|HVQPA1Hxg~IZ z}x!qtA)#`}HEdT@*ZXBKd07 zt9uEHdw-Q#i#YyH1O7P98=YN0fH))VMxF{zwbos~_+iNI zn-*UAE*(wWn#r1!jtD-fPHT-(#p;O0L539}A+-te1r$uLg_92=?b}|+fGEQw;CN8$ z3xj2cTV!DxW_W8QGeO*s(j&e_wKd7D{LJ_vAZ`z`w~DQbV4RLyDGTDfix)XpL0ER2 ziO}tIj&uTD_&wNCK#WxriR|Vpm~o#MtO+~Pr-Sr?Q5R!Bn_oD8j z;@7Q&U&y_(qrV~A4i=hk@dynJB{zuvPy%W}ItJTCdJkVN%1S+4YQ%ZM#=&9qhqfTg zgCRn%Y&{2`^3hvnPIzg#lxqZ|ag|Y-QN^wn*cEVfjZ=IpnbZ0W>h-MDQGSsL zB6MN%NJNApVzLwGX-pz7Q{DU?)!97e+m9Jn6bAP}j^T{qG0+b-lxmE%QOxsXK7VpA zWFsqs9looTf?1o-)7sCJ_xJh_GUeo!Y+vJqLH3hUJMXi16sc$Cg1a7hG@akM%x~5< z<^hmsEWT8py9~(nT%g1J^-#xMoZslfEbo1oWiXTILxHd(a8!j_I zOYw~Xa(Z52z&{vFk*Zh5btZ9S=8>pPj=ehe=miX-ET*=suq^eDxyWd~^LlD~X9^?( ze++fHV^=crZzgYP|TYj@DT8z>{Fg+Z*py}jyNX9pNF8j0rkuH)QkC2 z`kY%&8EwZ0ctukHf19xWe5eup!%`I z>mW5T*jB86L8}}OhZUV1@J4YQ|6(QB&9%gEz>!36Y`KBXt=d($?_!UZuNG@HY}r!8 zb0vuhQu8y?MmpDRUXl+Viu2_>w7cn1U%+KXyCC6H`>?W6s_jmNRWfI- z0phOj{c2C!X8EdK8b73^v%N8d1a7UR+L-}}@xa*8&o}w4#PL{xZ|AdjQGSP9e;A@U zHDvi^KDZY2jDNjl3XzKzp_gJ(PGUbq<2_&isZ*#{u=q#Llub~i8q~2Wbp(WU6He(k zjmccwjo^3kD-!kd*>aK#j_bT(fLetT^ektlRK|B1@JpvD`-O#r8NsjEZxn?31473* zI8R;pW@y*`PN%;Cx>(mX<*{Z6lnMNLUeIKimJE$9`ajC0IzAuJH+%dvst-`c66%v% z-8p+@H=lj$$Q=1Cd11KvT~%3yOOt8t~3o$fcytWkaN*oFzKJLDq)AqhMR;B5HlQJj0TP+@OyTD@pI z;XsMva;_+sF_Y&?j?ut|JD;B&WkG%hob#gUDF~Kk_d>{WjS!YyO5r5fq1-nL_A|~A zy-1P1-43w>Ws$SQG3%27yTr~b9{1rTzeA*{zy)upKZnaloLWV?B=-Hhzp;5K&Coy) zX`w>u>I)}8Bg~wxP}yPg7I>k#JrUc*kYFW;)8jE*=Ni~TNR@>yoZfV~q@CTfn%_hh z=6M_1R~?66A}pa{g`{NQocUlR^3wq1w}yA2W1Jgh25K%(?Gpt>G=mt-@Lys1?i(D+ z!h$tuDZOk*&8F^#<+(Uz7z@~6MRbj_AR>ubOa(Zj{KCu(rM{EVKOOHjsZbi4Szo)) zu;#kFk07}5n>9NtvPZi2-xMmUY4^8r^B5xzh&xMOQ<=wplVO?~YLRthDp7oKL)^oc zPk8e#`xk(NMlEFuhV0x2?RMPCibRIU^!*ZrP({s7EHkn1oXoAc%meF*9fWC1)7;>z zTEG<<(a?+X;M`GBQrNT(_|c(poP_Fz5-aki?R^@+<|`D+N^vjn*LuR#zlvYtP|@EJ z(`x%6J<(1f-EjpA2H4=(5ERoz4Uwf8NeEN za~xZB@uzV*qZB2^^R|J`o!g5d)v2)@v!SwY-}#wD_Y|M|(%DMb2Jje+Z?N;YY8TKD|2)*FL2OtZiA%qu>I!Fa+*P(&!z-g8T z)*s03m2W-WK?-rwOWD2QXQzR?fZ;mcd$MO94*CV_{Z`(Il$(7PXO?d%=#n8#^{D$; ztHh;kJ2zRLr=Y}B9y4M`M%iLhdH4q1-R~5i%z2p0XRKHi@f5nNa^F3rjAsUmGp`o% z@pw;V`w-`&=hK7gcV)H;Zl=%vhCWa%P#Bqh>CLja=IvG*9gs*ojl!i9yG&@rr@&67Tp&G!43zJTUE+3TrQojE6 z3Rh+relSTZ{#T4%$Q7qKmu_-2?YC$6Z4_cCr2D+^9X7#B9~GHiiUlj=ys+ z+z;#t1_TBUIfvf=fH0hyuCmTu7i%d|tD>k=$;x-}L_9ZVO>QO(P8*t$VZo}@s;@cz z;Thg4(?ySPUZ*JbVEZ1(T^0ZHjp_!Jtl>ORisdGjoR=cg6ih8kA2@z5zgcCJ49C3O;F z{bjaejcdpCBR1}tp8@IkU-)FmrR0fw7F;4-rrWPH#mw^$UxZ0sd+dP#l|AVEj@e#Qsh=)Ql_rysrE- z(I9!gKV|E@|GFsZbuavwg6)f{N8(#lB))`qqzyx^u2SQxstE&XzGbW0OgI+Rz52Rx z&*%F7_2$ncn~!2fU-+h-Qq2Hko;UL=R9Rgx=_1NpbSiTTYGu0R_%KTD_(m^3Fzg|j zVrQlTG}l1T*bnOt*7|d{?e?(Otv)2b6fsjH=@+R&;)|XP@bw+0f$7@PR?| zk7eTvxrm{}JzVjy&EYKG@?BxC&7?jkb}(SYK|zU&0eZ)k*t((JEy^R4LFpW~3=IBF zI!TmGZSAAobc*yeV!uz4mkKXldtRDOc3r=hmgt=1;p(Zs!&NvxXrL%>eE*}99wEP1 zyozn|N%w-Vk#+Izge>#IlFw@vzvWOp096KEHK6n4YWK%B_y0U#H?rwgnOS@40g&c3 zNC06T6l?t?R(p@4$0w+c-R~X1TX~(bF}nFm!Dfg(_sUf~#cN)?L)mTzu za+xl;L=<2A-$PH@K5P$=hcUHkUVeu{f_u<(CC|{!Xa-@2u`vg`9K|62#1z4TG1i}rR!3ae-6c?8Inj64ysN_flT#ZsGt>}rr8fjn$*@+16b5Y0{p$r{S;H^rfHbH&~dG? z54Yy0ranSRMtk3-&&lKd7~{{h-Zq!|tk?|2q29&`ox~=N9|5F%SW?;VNR{E7uo*P& zOK&SW1$yl6m*sQN%e-7RM4r5b^9O0O z9bHj^n6FJ*bK}2_5867Vk|!r#aqUF9D!g@Zw8khJ8vEf)PiMMl-nfA=mEM~Yy(Gia zuYB=tucx>61o+c4X)4O)PA;tTgEn20Wu0Wtkiksh=d!iOq+c#}GyK;2<}KD&fPPxY z=J}^8rrOq$)5HR8m;Hz9y_5b{zqZbBUWYOv8CmdqJnX1dzq4FC;C)rng$F-(xT^aO zeE^G9Jh47=bau{Jn3zbr()s}n`I%jW--9mWi*FhnrawUPx@&c5INOZ&Kia>WhNif*#14;B?L?JAnXVlh~WWyyxAaR z7|P+_@#vQ5&E+MQp2+ zRqsWFb6CjNDj8qsX>wf}o4YhS8|dnOJZ1br^G9jwfuLz?b_H-sOk@F=4n9+qN;S54 z{Y1j3iA6E7s*h}A23Y*qrFbjZ6Z3IrC+=G11}}DgM;77{oTgC1>_O`MW#{$(r)%@K z9RIMt{jP;*cr&s4RLFiT|1~(-&DnWkw%#Elq-;Ls)KF^9Sw=Lz@Qvvs3}>-hRg3`8NVW?0ihExwEH$7o)s^xHb8`^pB?SC@j8tKFdUCDw%W zhD8>m&>9oNPTJ6STqj3GA*>iIS(Q3F2Cwt5c{yJ>oGRlc;KRWkpPE;n&E74=hG=Rb zytdnEs)LP_SrPopMke3dRSkXVqBEYoYygVd-0eoM;_!)(M;8>%xtH3; zHU-U$R%DIk2U|vB(A^KIW^ATM=;Z5?7X9dZCdPzKbDp)++w8t+bW@AMEi1_LV~;O9 z4xey6PPd}7(DK&3jVRR`%GwQ`sv8?4QtmE zg5zbbpn}qC;#idX@*!|L0BMhW>Xe3c`JHILp6ff#e{j=D3B-uGT5_ID>6Qk0h;a;TMOu*~hj#!X zss3d81OFM55L)^7<@k==VO?qn0QU5*GvQm~^vVw+VWx`mdT7^mc=>26`Ug?}W)e+m z1$3N9IB3KYmnFGyyO1wl2+UIa01M7+*61CYOE#QRxGnsW`gTr2$fEt?3Gq>kR$eIw zAv|c1J`vD|eWa-EeZ28*i()78_xyf{2ES#SMO{q7#Q8n>D8V@IXs0B?hSIC7`M`Kf zcUeS8BQhdlNZ?(wPPjJ1E%zNM#2!5QQr?xG$)8Bh14pn8{BaRXCK$1X`LSwtA&JJl zV-b@_boFVl&c}`P(IFczi9UYw35=Rhs3$@x0x-GevCu5u0*fEK$@6ito1H%rgquHj z0Z>nNk7q<{hqX3%%$`j5#9uZQXwZsqnwcLeep(MYPk_*=d88GL3s<%s z=x@6BIoTdBQ+XCe29LF`JI0dgZ;$-c#_=S%Rwf{{OdVc%$!3Q0yIYJZRu`S8@k5o_ zfIoeq5*T$rj5KO#SF^(JU2txN-*qd+b@jkUu#A2oZR_tgRz}-s|DC-jw7glD{eGYN zQ%(}4-Fj#`(3A4W{twpLB5h)#`nl;tSq1Qm-+Sil=mEar?+kVO3Z~umG?94q+k%7({?vqZ_O#l6P z^lE~zLcnaD-902kd?K_bmV#3uaLUx-ky%f_6#4Rk_gE;4zCv@gFkbTVC}|J6hNRDh zw7vCo$_zR4i52ekz5T0RSqS6Wn=a;B?29k43r0d2$nA~&19-xN3vO8n-`jCI#cwJi zen#*lbo1Pic8tufSAb;1D}GJ$Hx)>|e~9NUfnP#TCm61X*@V)*Ir%RKV{mbVfl%Jf z=&<>xCzVK4s8-o=|MELm z5|=hkw5Ha+SAF(Aj1c>ElE&FT7h#)VRe%5Hc=f&00Qu5gEXkwi%IO}Qu>)Sq+YVtt zqdU6yCr{?4U;2&~-`}@=rGk?lxCC|w+tO9+fD{~s;ff&OQ=Sm%pQ&7`)^z|9J0e+@ zs}XZowjn0vW47YvmFD1M^PyCC>^skIZeo;rgT$-?xQg4Sd=B z7RX-KAE9D32Td2lM#ThwTS2f@{4u* zcV8+f`hsP#MAvzbpG9Kr?cOKi+0%cfdBD?2n z(O7JQ!x_BVThg1-hV4X+_3wdd*F_5RXOSIrw~Ol&tH}+Vh}Gm{w;-xVj05> zdT4Fra)CJZI~aa2Cl7-6ZbrJxmK;B#{LBoG6}$VFRC3Be|6gvz^EO;FSBd`Z zZu`d|5F1EC<%z-7UV>?h2Zg-+W%lME9S5LX9Qyvi`Qz&n!0w`#HHbI)2PX3kq|*_D zRlSGEY{8V`-aF7d-TZ~W?D>~6K+am&H>%jWz5K1uU^sq>nCWpnh2KykAF@apHFAJ_ zKPk9s*M<~Qf6p?rV%M}E)t|!|qqj=@p`$$%3C>sjp5bTjQOmOdCnA9-fj#~x{4Kio zjhvI-<(BjV97xewxT2{bdTph=#U+hni`gZWBw>!S;cz!?_2*aR66_bgc)1e=0a5T= zBW0$Z>F3Yaz&W@)PfVixyGVM}y5lM3s1V#0uBWwrQjXZUrcrrI(Nt!IBSD^ z56;8DwPeLC2l&L(ij)C_$15Sk7mV+IfhUY@C2rXOgOT`WF%cF35!o0Bw@WRyJA>j zs5q|6zdp*E!P(6lInPdIota537jyqL=o7~CJn8D$xSFjpN#@%0A*1j>A+WW(PPQfJP?lZ%alxe^>U~fQAmu-3XulzbyN& z7gk87s$5bnN%7N9mZSmMp|4ekZNZ0)B`gVOw@5Pm=hwFD#&Brm zLZ%fBC=^Jg`lTbjd*Qy;-fP`j=;_=m}HZ25+6gT<;j$e)fEKt(eY1+m0CJlf4k7 zf+Jq)EYPENKrr~B&G&n=?fJ={$HV9BYL&X;xTD>_bIdZBUpSlI{AFEp;P454k{D^!_Q{Q`e}S5hyazAnlQ^*vwueT&aCCVen3gPpM*cv#FBf%($So=7h4 z=xZ+I1oo##KJM}hF=`063L_g%(+OU54zQa)Yc@|9jNh7T+xfT`cS-W9KekmQ$pA$p zD5CIDOJllSfLwp5tuC120k|3L4m&}*zk7H&#VFH|Hpm~^ z`o|u=#DBW+SCzMrulkY|<)ETgvOZr0@vI|68M^6b0EgkjDP{$>fjkJ}Y^ zp#Fzw>y0oW^){YR2~S)I5h5(C1LcY#553KkeOJg zy?X^$P(@T@@BhL(DQmqWOuIgVKZ3<8{IXq4fp?I1rtL68LZaF1o?~$MFoJw<)}6p5 z@56p_cJeNOIC_HZ!dpHmQifM~NPImc zn9wCYcBQN?@Zimua9Z|LS%8UJIVJCydWTEXZkd+u+3A>FansYAyk_K5W{-6TCm{Lc61EbjT6qzYliHs zhe};OW3@R>>B=big(VF0`KfQ>?CEzKr{E&l{|0ZV`0RG~|Fj5z|E&=eGDQVh+>Kq! zo4?Y?6hUB$tt}9P3E;0I^!4i<{_Z?%YeQ~nE+}zy8&?<(IuY$N87CX7I7wfzE3(3E z)EB~(fWoQs>5Rl#!~~el`tO~amYU5=7}YZn;1sb-NcW&8i$l6xn1~{kZqyvBXYLaN zq5zuTPaD{y2AOTS=p+Y_D=3LSn;=@|cm3G=gbR^JQO=R6e#6xrxpo~GRsYDLtHVid z{E_#A+U4|(_EWzoQ{<&Uedn>%SVzNKf7W_{k&5?V5bGM%d&@aD`xf`q36JsD2;H7? zMd^(6DReU`A>5F!Mma(-^-g5iIWw zz1H=}b*IQjmvTdaap~>7AARkitj4hSH&Xjg5Je9$(blZW zuknud^^0?6^pw#4Jq{%{8mauL1pI`?PX@a)qaQmqmI;ik_@P6CAFZSdW4b}CD|CJB zet@wRh(x}-^60bv_p;>TJl|zlR0BtT`?wKio9(^f*RI`}<7#oA2o>)~yc1bW?YG~- zA1|4Y4AoTIo}o6WKFnS2mf;H30~YmR$fJ-I7luk6bDVTE@9o71@^N|a)5bMoL0d2 z{Mryc*~BB-@kg}ma*4%Erj`xfe|{!M9+yE2+%Ab0|LuJZl_Il_r^k8-L}2PS5c0wnuSzKc`rkc-4P8}Z#L zavVw3g|e&1Q3)8{$PKLo7XbO#DgLp!A+-b5cnSM+>|X!40@}d^7S?Gv56wReVtG9H zJIjoRS&%)JU&yroi9Q4kNB#NEaA7|8I3>e|i-Pc+Q zjsk9|u&luQfE-X(y>;T4&;Y4BV7*;IB zFL|I914NBiWV3?>~SbD=cz_~U{ZztAJJ-1>`Y*YK#qka00W&TcoZsI#>ycV28V>G1T zMO(EhJ_7ENS{W5)G6w%9D zpteT}7*7P}0$*&O7}syQUhUx=-b_6GC|HI5soR-$efJNLNf`-FllB*07Y1Grv*Wo9 zrs_9Y-FNhPqLgbq?=3BKHyfLq>kpbxu)V5g+m#=x?RQtJ61H~}neicSMVqmLCFxG+ zXcVv@<(%WhvcG%WvnugCOBS@_dR~5jn@Ou!elk1!{6N4mf{PTM{r)Vp_a+{`(>n}{ zmlV4D%iRXN!sTk~FY_5p_i=o6z3%WYhqu2zw&V>{Dw<@#PWDhN%=&7CF@YuVEbM%qKd*TP7^S;mZl?B`D#j)o%Bv}GOS~!kO{Tz*HB*F{;CV%KqV)*zeMqf2dp1Sk5 zLai49!~LL>H!_ZxB*g|?ZU62URt?$3UDR#0>Ic|7L67u$sM*<@QGG?=>-m$=pDV4z z>n59Cq9%>9At}l&a{X3v>Y z&YrBj>~;jkwWODmzcQgwo*VG%O_y1LNUf*Y+9Y`hoPz^0X@UjbyX06S{`5!>`(YgM zwq}NKgF2QB=s?jWO=@q$a*q@3O(sx!Th(g=<=Q*hq61lSF6Z}WF{(s*2M3*zJ=Vjm z)nBI!uaP6rWYvu+Z%mYjom4~hR_61{M~L22Zv&4pnOCRHck?@L4==iCZK_+9mko>_ zzD0V{R#TOxj5v_m@Z|}FG4xLn>*}nAaC#I`Wfxx|sFdQWk^tdf?ycj07tn>&tz4Vk zqPp%d{wbVpZKBeFch^tGXA4=~}p|9R6X8Q{()Gw=2aD9vL zWa70-(h+!J3l^-c{*4KcaM0JIqoeLvfXN^ri!tuXDX5lXyUJyF5eNGV5>Z$igt3K= zP;Zib@ppqSsYz_Z2ri;K6jOYbf@0nh%qU?PX=%~UNbi8Gb-`Xp#_3nz&wj~t*NIpX zWs4iDHDZqgoGUmt!wQ_@cX?k2BuAdnzrQvAsZ>IMu6c^};u8f&Dw#IbcmLJ_;QbDV zW^vpCV_Zn-c~(ayqbiar6~H4;t(TFN?IOw*q`oK$xnmWjmvvy-IkG-(jrMp(&<87j7-UnOdC-O(qe zjiEw68_s-q2d7mD1JrLoa`jJvDzP5)5YZ%s<9!_Dt~t3 zrk#f=0|9PfpAy=DC?{OvaQ`R{R@7d*q)9-&lfbv}J(A+MkjK$!TZlr36?!l&KH#%i!Y@IJ2R~-36*Gi80I8B=13yp~!+?S{l5A)ZY ztb)tS8Ou{o$A_`N45y=gqzp?qg<=T#K zbVsu!N1~Ig;znY4JkcWg>T!HEb*g~|%&_BAef_aHTulq~+ZB~2*AmKp_mX;~VQ*}E zC{RAJm;84c-1%C@R7I_PH_3`FpIY^$^~|M2?uvr zudZW}xA+3lyZ6Kw5R(KG9I;JA;f8dB;VQxaQ-N#9X`=A`Ag5B%E z7jg6N-(I-C;|l?mrVsc=wwnv-3uWlLj>;mF0O5?G@6zX(<095+=ToQ7cwD_mignBp zjOqq=9)Gx)B5dog;Xm&^+j^=w2dZh*4L(CA@04?FTv903vV=(}t)Sa!5b4Krf8-V{ z(DE#Zz{phMw;A`v{<7Td9Hs{hG-*sWI#|7V___rfjtSH7!X9HfR1=~HisY#V>>uQS zRn&4O=noE@$-+7PBE~A9usm#f{lGhKLzr$6*Wz~%g-*~ zcd>S6IMOZ9jeXPot47x%X19Vm7~KJ!aeL=(@(RIDE3u5=r;|n87wzyvLe75T+J@b1 zga_Y&RbCPGsI;-~6L)V(T$5FRUx}$7nU8sZF0hZEpGB00tN<t z?iDNUM=n#!)VlIJj`+eo6`)u5!35>e`RYycz|PXspg}6A^Hk;ePtOo$wYMXM^2uv^ zS36m(Hr6ZG8=9YZhF0G^y5a~SqFVed9K4uFFLot%FTPANj6AEs7>0d24%aa{S4K~2 z5e!P7vCuE5erw;f<4qUTeUp7S#zeQ}=5cHKKWd-v$bKjdkiWH+F3>XvNQpVvKh zlR>{lM?T5q+8Z7D*&`bj4cr1t2*5?_L7At;Z5j!v-mF&K2 zlX&N}OoiA8%}mR#DF+JhduoM`Yp{~BjLt-bFj4rK-Careec^-MtuJhMjM7}1j*=28 z99KzAO_=cXyyqnMZ!Y)MM>^g+$fy7^<*0cs;zLYV5yEsX#}WUgq03YaVPn*5Lq}N^ z_4u)L&N&l5hlY4~aMOQufXKHe9-Q^?-^(bZ0edI21!HU)fP}&5J|x4BjII>r4Q^|E z1M|ZzjC+8h?m#R@pt5DB)jJhHki{Qpb(COuTHuo1y_hl zdp75JT|i@bD)-&jn~}M5=CoA1PV>x9!sTsZQcvCEzL$F*YKqh7q$!OMKpR^eqCLEE z&qhq2WquBVc)TWfd;Y_I?@I2vn@;lvHTOGC5rI=)LKZK zC8+m`E~8^icsp(INI0xWX>TFJ8YY(%#k#qT5WvlOl+>?}pkNjUqsd^P(P~;Uja`}YkJ5a4xvuA$s;1A17AC&p@K_vSVH_~7>Y$ppnW9Kc5pinWJB z$O@Wm&}WZf%p`-SsIU7YUM9c{Y1=y`&%+cG^FTfDU}dR*2+itRmd|{6?Mursh~RK{ zea(OMJmVS^ge^Mkd5pFEEeOOnb}vlgz4>cw0 zfWF7#*T*-uC)uX54{0~rk&E=A$8`pphR)Y^u7_C?i($|Dk0cKe?*2=c-A+u(Ov>bJ z*^vv}{n*&F4wkabuV~tPJq1M^2a6Z936Ew%f0mthZ2k1d_Thm5$NukTW~krO0rP6G zP{Ldr*rLqRF;SV~lf_Ij`Qza`7er?9l^54P!{u^$*x#XAugh$GGcc5^>Z-ty{2t6G z`yb3_GvG~6YZm?K7hNm?8ELZM>!K@BmJ5=`npr>h5rfXx4sGXNyRxgh?@wAf7U~5W z$3{dT;rNDzK;F7Hw#tM8cvV4I-TXYw8|O?ej*7z(R)94o@{Q~AXTtuSZ$Toe>)ril zR}*|gpw#0TBldMwR4F{vYWT(RR-lJkE0YtZ^u}yI2IRlin{=OP-pcb|3N(#A7iBZs zpn$O^QfqR-j(a|E&OQ966)@YjCFF;xKe#zcnmTQzH`bIvUMW{m;OG(jcd^4A}SmN1+C z_P}Gm;*VT>4_%p6$0IQur1vH=l;}ds-U+mi4J>HN+f?uLZ7(_gdm0zHt5M>M zE_#9bCxP`;`;~4cNL>r}E;CeVBjylq%dOyN-C5=kL*Qw`)MZji?T=N=+oXHrA@i0ofugcm1V#C1ib^q7#sSV3%Wy*h=VH*%(p(LUhimXQ z3EO&To8j(HyRM+#0r|cSFhDJo`*|({`ymdY%RBtHpGFegvcv8!xBQJNCN&U`p}V(q zY3avpn7Z1Qp9{h9aVMt-nFkwsYECvV958wj&G5OL^T*+&7>;dJz8rvcitqBV4Ba!0 zp!CtLfXPmj7^tcyMt2i=d+%X~<)n{>l0@sq-fsEO*!A*E5vcq1pI282Q9NPW8!K-~SL%3;wM1-2l)# zRk&~2R9>EAu747DT3e_?6suJ}od<2|IoOw=2*9gtXO2dZnJKtLlSxgD-%0rB!ZI&+ zEA^x}C}&ABh0${8+#eJ3Jz~6NX9A(l;ov>SLOv%vA#}EaVU^MAk4h@*a?5yU2kOhu ziK#r8cM4|n!WAKSc1>sv6%4~y0U*m%#v|9WCwV88Uzw$L{+_jU*^7?m|rd4^|2GUANcyvVibgY z^2erk%Iy4J-L?U7UGAX-YU9_Uo>7B2JCO!_CxX6krpo#P zy_o$?Bm)E#P0+%iFN+Wco-N?EQ?)Q&Na)z0|8H;Lceb==_}wRBmd~e|a21AA?g>H9 zll`l}UM}7GPg!>|c#7^JPSxDC8s$uu+2;)e1mk1bxViKQhga=)bCPkAPgbS;W__Is z;+lcn^Y2;T30SE?-#C{xvwFE9&+{hoYt}coJsJs^j#AbDljlZ^sZx0Hncf#XbpD{S zNip?8hHPo=YDmay+kJe^{qWFm`S1e?&!XW>pTx+c_>KoN&SAvD*y#3b*2)?b?ok4I zmtW6~GE_|#8x?+}q_Oe~6h_x$1eWD@Nf}piNx)o?L`dJmeJly8Y4RSXVLXoYX!cRMF2%J<)LzkmF3KI1 zV&j*QqBlfx^F}-$+2&FelcxkTOW!&-mw-;`RT}3!PhGVIF#F#4&FfPM!Ko*#?Q(Gj ziT#k%{(?x;7hhu#ay&}&QB5F)SyA0=8%W4XilPv!i3@G%%Ye;TrZENinm%vdiru0h zyq(G#%pTE+HKydZ`OOU55f}+);QY<3!bTaiq<5Bsyn!_o&?5T*`bX{InyO!*cd3Xs9|Q z^7@OJn$!a&nsfD=_u@#KB?5Zx#;x(H7Gu;73{h5pX{_=Hyw=a6T$FCk-Mv{eDoBB~ zVY91#pe5c=EjAJPuVwc!ELYyZ)CbVj9FLVsQk=wHr+hx@p9U4aCiuC{$WZtfyJ;=P zm?{GZVfAKddjL}3X}{UZ^(1VY~Sz-bsy$!(?|Qt>S^wT z_YLCK;@bBn_Jx>fuk1r{x89id-}a_*gOETn(v z7^L9&RiW70#-^&xIM71`osxwP!|lhP{)uU_6jn)$5O!W>6NfL{(fEN^Y>?DZ?X?JdNDELXPv{+eDE1qC}Sf`b34{rEh#Ti>is0xF+rKub&Qj%VP(%^ zI&uPof=~hv7xr1$dt|SHA*xZLJZls5XQ!lnO#H6l5{Q za64(~DG<{s`;ls4VZl6g>H28b{zh`Xrc*u5f(Z@it66 zI4Gz~nINuIK!%5jPXq~aqvvgZGxDY$9}HN(G2KP{ezLv2ooQO4dHl3b69IQqBr2iZ ze+c~SWefwtcnB%ebp;YgL~N1b7S(q)Q%>C*XC-+b_!=@5DX$0bcx}F5vbscxviPC( z?l26cP`U9nr~rf?PEFg0a%u)XFn%`pZj9y?>@`}&-rl0+y<8wL4tpsaN;eNUA=c`cHp@I^ zSN!K4eY+2|aADK(ZvF8n8T+?_R{MN^ZqLl9;xsVg)W>On=HE{S-g>N20`|4hi1%W^ z(fuTyg#~b-B4uRI+1a@>G$@D|Xu&c^Q+adeRM^j_%BG|GZfyt@1*MI1y-U&D%R&;5 zpc@Ls?PI3952fDN4s+rJo&^1cJ^}VcUWz;t|59z76`iM<71ltb#^`U*GSNC-&8xV7}-EXw1ChM5BP1H0{*8w@-j)qMTH4j#brRt@;bTV+#SDdkPx zC9x``R$ng}Tlgt!_l}=O^C9V*F<0BWsUcBx%)#M)6X$C5czl+6rhxiIgfKI8%5B3I zdwS9?GoiTO7I4>|Jw>#&Gfv-u(ux4)yY{Iw~_sq>iN4 zPFPM^>N>zk3%d8YaP%`Iz;W;E}xlOLH{R$5j zlFt{|eAEG0yM#jyQl|AO-ZE#eKt}qjQeKwPE9oyM)rG~YR=b2!&aqiw7k84h7rVL? z?_G(kd_=Xb`9rHh19Um;Mo?Orr73CjCPNtF3~L4Ks*`mhZsvT$Jn&*INQ(h8`UDjO zM2B15qJzbfWnvFWc9owcRC{Betqxw(LJK;OC?@}~%1Dh}<@79h5LZZlARai7_c+r~^lZug6s)--m%AI^JTYrAhR4_K8?!eK0gF#b~h3W8I zTA09qs(uM~vX{7DSN|wx8wz^VKm9744To|+MVr@F2QmX(N@g#0pdo`&@86icJn5{f zt2>PooS_P9A8d|5+C33$ONpXsido+7+$nj5hL`)^52u>B0jsz_&i*Ul*cc;>qrz#C z4@umN93^J^H2gQnb2P=KU&%%Js88qC_gl#ufB{h_HT#?oeHg(Dsy-`J7C$A`y8_>Z z(h5AWWfFGGjfT@~A^5USAH%A;t7^9tnS1{9iIlxa|GGTC_~Lj}b&~s4h<$xsY=VFl z?TtaKyrFCchj|3pWBpE}{_Gp4hFrLE01ss6BJX}yfpYO(xRRTG@pmJ`ZyqB5fgF;2Vj>hk^%6ywKKL!aU+Id_^G7Yz(AK#D>` zLs5TP?WFQ1hy1(R(aakI0jbEB9i5#zY6TuOHd6T%zDXk~w%}Uj`g05eA0J=-=@!{+ z0)wh?vKZpCZonyKm@oADxNn29AGwy;fflm}3a=^C9qjLl4Yh}cyy>Q&hjyWwB*k|P z-o&!pjcumM$5S2^hKMV^zs_23ru#HZBd#usz*csh`h~K}MAchFZ@Ov9UHITjB|24o z^K=RHbiOg!iV!*V>1h?mh1 zGTJ8PLYk@5vQX}qZs`f?r9Vt{N1Vi>m5d&a59^|*q#$BTS$z35RjVlNV}Ohwy+rqJ zEAg-M@g#59K{f@@Jvvq|7YZWphQ4Kfih`gu`jfz`mm|d$`Da6w(WEwdl*XOrE4h8M zLyS|{L^PkbSfOi60ZEy3VE`qPjg7XxN9@o>2<+0cE(T9K&$T@rVAk;JLA#Wp=dQoV zPe>Wj$IYoM1buz=E&g8yJB=OK>Zs+@Z+12uva6oTB_0;}bUbQHa*`C5OXXoGPU@nQ z0lmqQAWVKjgVm;bsvgQsSPVk0xym*_d2z{3~cF3Slg zi@;5#Uea>(6oGC?Xbfc@7Uir(!=!r098^>YFX};g9 zo5W{v+Od<==EJ4xYW$!2rz{MpyNI41tLTab{I$rPSthxAMdY{iF_*5>eTC61EUM4Y z!gi=+xn04Tn&Q_h^ty+MX%u0d(ZA zLfF-T6P_-v;oT$RVSC`33m^lV@{hLPzVk{wU}faR6aVX;R$+NPc`p__?$)|!1h0Qf zJRAD_+89nLDCT(2n`7C|uirUzAsC~}qRATXMrfC3JZijn{-r<~^~RCE{B}&ipGPYg z0%Q8rsUmrSjb|TFV<0MqbUNq-ui%-eG%_XHcYBnDnmJ2uVgi$Ld7FFd7s;I^2wtK> zFhVPCZu1B6bY^CEuqBe7wzER$yO=^&g^=H`@b0&Q!S|!0=b|2W-)pQ=VhuB9++35K zpuwC7RjL_SRbXClK|QG@sFWNQ6F53dAm+KR-YYbOn`I9@FQFt!UK3*nkJX0uqdakz zxbD(*yEj!WkBgk;-l|105!PrWdc}u1-_oRAqPwre#^A9k)37LP^HKmE(@q(gOxJgb zg($|}e&U|Zws8_wt83^2IiH+w53J~DA`pd%+cr;mnRJa;^H_Ddosy*oNOHn!J}I)f*| z6T6Qh*SmHKOPZg@vx4vA>)JjsjRvrK926N3(%g{@`_t@%PT$~%z*ECHuMbszUTfym zh7GdDwXx>}5^JC9o^NlS7|v|1?oUvj@0*PIT;4=Hpmbpr zjG^{h%9Y^68@isoSUo{Ouz%&>%xIOhnH_W&MsRkSD>Kdv zcGfzaDKOcvM%sNFayd0i##2C$7^`ws_l%S@Q?TpX$6*I|8O9t^%oxtQ zcHPRhVVCPC!8#IMJtUE;DZDmAD*0(Ca0-pAbM;S2>ul5JHzeltNs-GcWpkTifS7-o`)t) zVbHWp5eCDRBC(Ge!9B4I;Kx+Zat+Ddhw?+n_5pp!|pd4 zk$0=_;>LElAx`&DAG&uP1E`c&BE=>MPC&00$Rc_1-EygM?hOkIFd{|JdosRPA(68> z`AIweX6f!j-R&NG=jr!_io=*_(i=g-rCBeEA^&WT%;e9V%(yj3)P$!EY509<<}FQS znD}XKs!?& zu>ElrI6W?S^#q$8f^bUGFj^TtYFvDm;w?2N9mZt#p<=l#if=Vcg%YlBtPQD(88jD$ z0cUe2B~O@u=~v5a$+>=({Gfh^i$;FtuxRUH*SeW!H`P{5!F|+sG4`CyzI?Ok`tNy@ zzbdafyRNn6JPS1jUMp=|!uXsI-`u5$>BiR2v%` zq#K6Y?AhI%$PPwKuaERO(*Pc^YGgl}>l%-dR#8#u^y;B?g4iP z-9Ow7WriTFypm+jz6bc`r9G|*z{Pp=dHZFK8Uy~k&W&@^!tDul5hlXBmkkXAic!vg zR~qdQ2Wwj;A$p?SHSg>t^b9EnexF}2Th#}mdP7~>L??|~u%TJ!Ob{=SvC}Yd zZh-7X8k#vB?C4aliz_QDmlz@{(J@*`aRkfwJ;RmP!U3DBMZPYQxvqhM`_eWCayx@3 zc2l4@PyqKIy9GPV$2rHrL#KRPDpb!Sv|R-n%7ge!rn?G@QgI`1~j*lDr*h{wu?CCCsLJK1^k+5t$obb<5fiV8PuP!(n89p-JCZRM!r%+Wq` z7Kwb;LHF1@mI7cjaFcB_;ujh6e=pCteYLXWqst$2y<^hh8H+HxQnS=|9++!NTCG3u ztb>al-diEHcK`weJ&3kltOg4dPIN}2Fvscn6nFxDY~q*xgmOkz%+DLyy-H9L$b_+^ zI_E-aISis?m<6N&!=)9?|PR& zq8D~aQ1V(1>Ef2NXc4ew8V89gWnRqn=$v-aOE`~dznE7KCUSSD}ho-jOv+D0E`n%+zf)yg_pf1=Pr5AICmEKdm zS?6wu+lk3vr|~OUwzu+gf#R+VPk{GnrmK34k=zg@fDMq(J^?Q+kvMBg{%e0K8hFl)#8ToPj+m*{ zXKMkqupQSgFFH#t&7|}TY9i_y;O%(HD4e9Hm)gF69t}h^siD%#roUH+-Yntbn;}1= zQuMsXwENwhjC8<=eetor^4g!wa)e-Jxx}OV_0lKuj6B1jr7joMXNjvELR?h0765zm zxDW6CyBl$-iMzh=HUkCb5zaB|3vTh?p#*Z@VyR#qRG;m@w@NY zcP^p$9n9i7cm@Y>yN-^I*pHWedyZE<>S}Ad^$q!h@^#qMC~yPllLw*?&d~hH-3V)! zr{c@OJpP|4ov+c6JmkES4(b77Y^^^`lLhmqTdrxjbSR?%L&ea|bwh%0bH*y9RKw^a zhZVh8?a51Bp~T__WWV@GKWbRq)9In3#$Mw^h~FTn<5EqJqc`}@U}#m+d$)m~eI}<~ z2c8j5nKP_6uVv1_eqtXMr`=LJ7Qz0o+>lN4@{^aec>y_(!znQ4a>xAY6C4lS9~s0Z z)>^$vn%5~Bk2%siKRfd01=EK$q6qlO%5{N9=+@r#OWTzAi{!8kS8N7(hrwDjC>vRQ z1cJw^8Q8$B=INNMR+a($1t4_ie$5p^Wm44oXs&qgpIlxKHM0-X6a*pDNShFja{xbO z;vKUFoHMW|z8)k2cvO};OG)iS4j&72R5$hjnhbbms*d+KqlY9f{4GMQI9=1q1 z&-$MW0Xx(HRmq{e*(r_iUJ1={=q(uO!_d%>-9D0rnKz6LDeiWl+IU1qh;1471M)Sd->s*_A%yo=Tj#BQ^`lh%e{LAA{3z_;jcK$1TC3K3yM8@)oG=4v23siz ztdww;zOQ{Zbl+Epu$^br>$7jdX))bGByNoF+^LG-0Tscj?9))b8;jvY#=FE~D%|sT zZ(Xm2$-Epp?0BC7xG#rHB68fpr3+!-1_@y$lL^Y+h&_1B*oOYH8@~DER7?i5e{w2V z^+(lVbUR}*v6G!M7xR=3Vaa{2@FliN>J>wTITa=Qv24a`73hCsld|!glj52BhxfwN zaKay_+NpT40#6}N?kmq68P49VyY{gZBECz6s84u)M6y7Un^!B&o%FLonI)AH_2Bh} zp55a~@LT{Imb+c6k3*%7gnc&Rj#lx`b>mr#w@L7uiXbTh`98kB;Bo_E_*&o2zx3op zyF}yNjWTWZ9?}A|l{1#n3iq^Z8D;(G-qn%m=t~R#CQJ0T#Z<89yzaAST4}*FNZ;@^G6%^GaYZ1Of1yuAe>irN#sK0;^R!E6-`q|& zdBq8PHjQX7A##LO|DVqDhm3(gCk8kH7`8K6r*eVPtJAX^T5Wtg&i>E92cYhUS8Z&g z3ncQWcoYlr=u?9)CI0bW3ycWVHmL3!KGU@SwT*@yGg>NE47l9rxVR$(lnkutDauw< z-Ql93=hZOYQ}>g0BS_P2B>nL-2sz4cxNicryixrrfB)Cl8Fy&A{rDqOF5ScxpJ~7~ z$lA&JBG&YfgRS9ucVBYkwxurJ?U|#hoD<4>;C)XX>Q&Pu^n)D=4JlxQPZx37L$H-E zgc%ZUq)iJb;v9af*0a^}q`Ln~JQbk|O&Y<1!y1dbYCTIM*&-E)G&zXhqvYpXDPPei z734Uob6(VYTx3owG>_E!c4{{@3=OM6pNlNU?5&JS8?8`92A$R4qpDt)5GLO!a|aOp z^G6@uu_>)jlX<<*%sJnhkeF}b=6@ccinlfkyMc$41-_0S?@IUgTv=`xkHxN?F}eAD zxcqAT(!SEnu^OlA{;4#nW2&NT*HqUd1oRn@ZvSI`XcN}OXW}1ruH8k*M0Z?RnVaXx z+W#A^)<>PBknHbU_v|VNznwNZrn>;rz+gXB-od7-^3YIOUaUd|NC~={)F9D%@QEZY9t0Ash?d}3F@)1f3=lghh zbrrWxuI>ANvq|5pg(fkZVi|>nLdH-+5jw->s*nl zYszflzsNyXF+}ID9xkbeC-H!i`A?BvrrYUh?7M3o!)ggd=|8qW=2vZ`(S^zWkepZF z>BCy)7xEUvIQN29a@MkRLv~*$KYDFxy2<h1=DDW4N1-Q+zAOG; z^oBh?QBd-JV z_uF&JTwm8(0`2H&OcZdz?O$*%ada{IHwJ_%54ookihdkuhG?O+)V#(5hf%p%w=RNd9rC-?8BWRo76(7y<~?W$0o0s5OBOjF=rw#<C4&c8 zJU?vJp_V*4dtK?3{L5mBOs?;~`yu1O>J&T$J4za974e7KI$G>G&3Cr69G<`?!&%!d zSNTmo*#hr>+LgfQ*R%?M&DM2WDzZKywk0c|?X}Ve`*|w!m@aGjPL|Nl?(~1wVwo*= zOpyF|*Jm^}CPPI(sp<1b%)0IM;b|?bnLg`w*YI?%+{*zf$*XeGlx{pZ(%5)>lv7j; zAvj~%zMr8fgyF9N!lwBya30+z>~akrNS zLirO|vzLYI$&U#TU0Czgd~;&3<}Qgoxekk7H8@VRp~6@FE2})i>r&-<2<3pR?Nnk} zUR{!=0}LCuGLnt@wME0iPjs0hHNb|grpDIxk6B#8f8~Mwb1Z!7e-#1kGPE?e2YWV1 zF38q7#LYB)rvla0?|wwGcTPUkHut9l?&bH$uzkoAcI|h#*C2&Tqz~H+xpM(t?{sGE z>Z^ODz;QDEu@Gb^Y3BOQ?yq0L4&5;i_HVyN8Uhr8uM=4HX{(67wCp*zb*XflQZTnl zsc-SJmLXWP3aO2Bp~Jh@>B9AZ#NkV@&_n0Jf9{9O1Sbg?1w71Ip&d3Vp~GDTv?rC%IuT?}Z7Bzev>WCDH)PVBxvob{1eOF&lVOi% z7W(s6dBY^sa0Q8W3BX}uKX9~=8Ng{EYFVBUyuJh!$D_4f3|Gw~XTR2gs98QlR6~;2 zEh&?xTcc7G*1^UpO+&t(j~*D8JVvrRuBN|Mvj-KoUdCr-osLc%IQJ*A%(k^wT$7n?6& zcXk}uDK9ugh<$CGc|Mtls2fOR>GdabKUdHZ$(yD9@Km1V`@)8MuWdtA|B=c?9xYpWXDR*?H;ZwX}Ixl ziAC=Iy$~=%_037DCkD=rn+BXJF_-JO)%=}SesmVk?#eH>jd<|UES6)Agy=|c2bz*I z6V~%J;1YtUerEw%A?)1A^6DfE*iDhH3sdsN&d*0V&@Me9vwg*++YsW;zfbVfj3$BA zg$_rDJ}H3FFbhRl7}jBDX6#=WeEPg3!4KsAz8?&d76te2(092YMSvI*bvB6|xzlNO zz$eZ4)&IGl(+Vwe2f$x3**wx=!nF3>I3P#;UAL!6#D#ws;7BH;{$CwVN`Mm*jv%A| zY5V_tFNa>|cIb+d^GiMR{Ndhvyjmppa{NKP!TQ72oEflOA&{j1pP>pEI8GTbSzc}5ElF>wZvSEGLW z?os-ai+Js{C!|U)g2SYb^%-kyeJVV!wbZ`fTeXy4=Tpey4F$jYiTn*d!pS_-q|Xr# zBClnQ2X>$Tb(*a?@(^SI89sBqF#U4d|J15ghmuJYe|&foXlP#xl6q&Rp;=&Y(%$;STRV z5FVx?xKhS^h$jt0y8M|nmkZXh(UkOH(g>gMUg^7I8r&0Ma4(&#*IN5LJm^}}+9Bfx zUo1nX3rx;pO5BTFQ*!)sx*)0tzluRvH&4|nNa8t&{z-}bb*^;qm ztK@f_PUw#HpgdzZS%^`xC-NihO>}3K7+$qxN-+E)=@xBZrCn-ImJnzx8e>gGkQL4U z{WWWEe5XTiWoy{zeAhp_`|snO0*rt5SVk&He0|w4=8OZANEucO&G&R~1BVgF3SR5z z<8(9_P&XYRDO=TfOcmjR}KiA(*Z_o*fLO+C+li>+6&!9KvgN9G18WEM~%Z?#k)e3KodYw6*Qu zRrSJrbx3-W$K_L)Tj8}zH)>U1$$Yh4F6p;xN*ug5pH(@*D6IRlNz`&wNi{>p1kU($ zD*2DpA0@&2ye1+uTApsN!e_y;lr0B;3^NCTRW5Le2o zm5wh*IX6Lia7AA|=9S~h9SLDayxy(wMO&du^wQuh{!~T6+zxyJC%3=GikvO3n=#^% z>+8B$avyI&wV7EpG>z{0Rj^L({V6Q7X}SYhr6(Q$PCC$vj8r1o!vs1kS7xVEYd!{P zV|UrJn=c#oY(`|GRAmDkO;f&AL!y|!fNNkX#uJ2SZWOFf4cmZ^_MWa=upL*T&$D3b z6o4k_c#>qm7S3Vi1+oiYt6aZ7H#diMy`KO9#LbEcra(Pwc3#n$pno+vthodK>_v`) zHvkQXzuZ8Zsi6xcFzpmL9tk^0M|W_Cke=^C7Sk34YRB-@0Q`s7>8-g%{}R1A1De0w z25sF}rrKG@%NlP0@1~KXvHdGrt8`7v$LG%xx^u^LYy6Pbc}0QPNs-(3^Vh!Tpr@a5 z_2?h$DFMC2zZKZo+$-LOpbD0BKH05s^;Zop(ulv6D$0nmhZkcBaIe) z$-s1?n7dAm&=vXVq1w1~VH)k{>rzA}0QDLJ=fWvkI!2&?w-B729Cgf}IUBn=am6EAT!4dIbQMDEn6F|I480Q#6Wz>=`Sol zN%MXtJ;oY#@N(R~kqmSA+0R59y!CKD4HOg9lI8#1_OYjx7<&Cf-?d-;)6XWCJa?nF+J#{QuZt&)q4RXXt7;?q zmxOapsp65PyIyVhM8)0eF*{wu+T~Y_16h+rMOH!sxN>63X>Z$E;K_f})DJbes$u}- zX968mRmifm@GF(TM6njfL(=FuJ|cT~o`RSTkSTmP$c-a!j}HPSp?DdpbM35;KbM7% z=hP_)>$!^Rs`9{T&$j!m`x2J&gpSym*IIpoDd;nr;Ltm)0K%CUW0!(QpF+w99No_(b&ur-s2+wkgeSjrb8aj+9sQEQS#&79bl0PX9h@zKh>ud zNKuIS$G%!_%NSDon2r%PD*lOM-Vk$p)h1esHen- z8s3u|ucrp`hj>W*xwMYFAh|!|FZn%^5VEz<9rW||-a>6&|K~d~Ah|GEvpGmjAAT!s z6HFGM-P3f)&0kd>+NVDzU2MZf{8=$_06_uhRcIikLb^CdU;DZ22OV-)sp!6HYznNI zZ)uf{Zq4DcucR(mSQ901R#Ls?_-XMh6TK%W!K>@`)Ru=HlrUeM9->clJRFb7GqnAy zuez!}=^xCEaUfLR@|jg+R7;o`0|INXmmn}+AX3iY(H9D!3a-1q(EdwcnC%+lmDt>r9aq^5)h_xm;y4k0yfFE zoim9$AG4H(kg;2Sws1hN>#4>Bg^kK#oaalNex>!k2}Z3)LvI9vYdLR7tUAzYn=gww;|A}FHz!>^p_gl;1M8@rtm-| z(nr{4ZmrC2_idu2Aia!~wyb)(=4HS$UQiOKmWp9 zw+8P%f@}^T=WXZ}WCH1;M%}We-c1V1_Vm$P6ExRYfWa?54#Z;W-*soS?DG=OJAL=x zA|omOdzp{es!ZVC?2eQ|D_wOel?mgDN~=%WC1VKR$P@4@*m{2}(mT56+!7Wy_$j)E zM`R{vtvzb%_4APa>ldg+wr}ohWxR2UXT@wqZfTe|c7;jZW8Jyy1n;dMzgbwfGNZXy zz7vTJoP2P})p%Is;y;M=k?ak1vq2s@uec6Xpluo2ttGJ;#%i}DU0<=Dd<?L$n=dUB=+ngS|3s&B$IArJYzFf7Z{;Nuvf3U|k5Z z&6I`B6j@dFNNf1Zo|Ry0#>aO`?@W-xsbs~2#EYV(q=n!8q^_ssjnmsi`qk$Xnh@-R zweUiR3q!=&2(%GeUt53K&icQy3mvR*`}|2~$Kiv)_Jhd}(3hDJmziut82si2JsFVH zY(`a0;$1#UaY8As`BCX3i^s%u7usrRK{m0!SFdO7A0ce$glex2ahA}P-qPVsVHZgO zzxfpO_GXa3sC#4Y9V_}6a-XkVp{IGpMr#f2yKq%OVN*-2-bYC!UW(WCLhsPZ&}5l*;n=|L zdJV`BX!7=G(SD>(1mvUePE|l(%GU(}zNbPYcosJ6krIK ztny=Uqnnz4jm&(+mf{!x1&W>}0Xwfvj4KJyt4)P>=YMi%?a7O__O>0edV|Cp?dTrtezdF} z98l>xUJ<3)JG(0>gIgI+1|^kUK%we-4QzaIERPm(hZI8zjVB@J1-sM+47OjEw{T0`tBVQ=Z$qaXYJU((o|Rj;Xi z%Bat`qW?<>Yo`WZd*Ri?qjkTYf1eP7{Pqvq`M4&gr0T=($`~zx%>zZ>wY|99_aP}- zXWcEupI2c|f!|6}Gj8)2k7(<`c#6?mt5G7jw7+^_@td;6$I6vc;gDX5d@vdL?uGbi zb_#feneDW{ZPpyb&L@T=%k*s#`}U8M=?*73hL!uWV9Upim(6yVOjN+xTCmFQ`K<(b zY5Rvdy|#%b%`?V2Pr<8?ZgI#+=3b`>r?J;Ve=E!yi43Q^n=!V(a@Z&Af)E7rIK?c* zFRm)ZXT75!3i#LEP_vumry~CcrH6%x9$A~FF$i} zAcR{A3QS%NxiFzA;MLptr<)p*$Sr|!aj6J{at^P_--x+FH2^v`{_+8p`5jl=59I10 zS2%RD)<4tiKgJ)i*S48oARR<(40f_}AufOTWIvLmrUCqI?hGC5W)~LDR^|B9Nads; z|LK4{J+v8FJT$>|9z*exGHg+=jwa~xYGI4cj*^@SRUM7!BM$Fg-%!b*LhZ?{b&u7s zR`1J&-Zh$xO)tSUrt7HT&BRrnPchuZikEcqm&-R&g0>55Lwj97Im&OJKYwn}QP2pe zv-8Vni2YI=-P+U^n{i*W<+#gw>2LR&#a(-v!?0~BR*r98pqJ?Q#wvbr_ZoA(EUb9DT}P-VOiE=Q&=;@9%R|K9 ze$~_%*J#ef?gY0q_*hJVrTZ)q6@|lv=kSf7ImP9kU42MSvl|%@=t7mW7p_-zFwUO66zm z$fO&fVCr8LVF$X;6BmtG$KCz)wma_)lgfk>!?nS4weZIW^`XeZp+S z@Rbs%x3&fw-gN)IjI`m(#&|GMQlr1MHATPrx*^)_Q%0{BQ!NzZxqLuSKJUUWm`iX< zAE|Gt`Yz2s(^JCkmweZlJ;nTx49PTlcle?S+<4SD;dyaO4TmaXp9OO4bdf6xc#q_Z z{2p0fTs^Ln=2t!B22A#SJ9Av;Ua}|}$kumTC^fxC^#1p(y+Y?{?$@V7g*1F)H6Zum z$3l-m%w+0Np~q8ghV@Uh*X%e2tsM7Oz8~#MS@CY67^(0FO(jgvR<$$|s0dE7Qtuy9 zf!Cy&d%*P>$@2eRwnq1wCOfEx4ok1kuvm!dNsGx$Z?^t9+SR;~Lvf8pFK>lm#%t`_<>T-JN*ywP|xb_k;% zUx9^eihqREbZ!XPPWDrF2U5hf&uKB5Fjc2iObn$8&s_xAq& zz!1z@|GW3ct3{+&?GlB1h;DvsW9Lm|MifR_- zuih?M_*Hk{QIE;-uKk&XAdV{>zbU6NxvY;<(EN&=M7SV1p4o`jI~S?##q@-+in|F@ zzNHVb;vqJ}*u%iciEG+=8&nV17Sf~I(5g}R!6I{(fw!lLzIGzubbN!oQccYF z^ohgl#NZ1N$*rs43%O5Pe+&_}GXEveF$>Ziw~uqn6yp#mwm#luTx+_%MG#BhBgfoZ zk}>7zf`iCcuSG^NpM4&;_Ah*4Msw-01bwX(V|RIQ=$X8~M$p)d1!V5d>wf>~@M^8_ zOqM{LY+3sRr91O?=e<%&SC*LI2sOL+A>}sWk@?_mh0MuwFkXdAY$loG(|<7iHyJO4 zIa)Rf_B2h|cr?_%Tl7cFJ$x3{NitSh^+2pnYvmrJz93{0>0o!N4~leTM(np4DydWrqO$Bo~YrlR4oPB zIzMc)E!Z!7?mYGk=i4bBvT5#DAmjZOOOMsC8flGvwvV);*0B3xGcFnBGu0{7cR^cs zlG%dlb`j{cnko8?rU*pR#lXBu!+4nsuDyNA-orZ&asWZ>uEsRaCHuwXZ^(3fJ6ru& z`(*S=fp1Wib>gSuqFRt%sO=T%k=w;nHJNXLvpM5S;TYX;*YxX|BsDdOPxfObe%1D) zWA?{m@rP*K_7m%P0|Aw1bqTkV6SmsCAG+1U=rktaX@Dpt<1J^=JIMm`iof|)to~9U zdGyWJKn~HR^}#2c2}gmKel4<$`vx%p`k0Q#bukw|4!pfV|2}C&VMGW5%n9Lu@!qRL zC#}cRS@EQ^79F#X*v}0D*^PkByD>&x|E10$7LK|VAJ4&}&hv#-i}pR;Is?=|H^q4R zNIH^8UB_>7Jyc2gmL`V;i}-|ut9gR`2P>CTFn+GMo=IXmba7}W-{E+SQZbjh;;mPg zq`p8V_Km1ntXrSC{jYqtLZB!R2-0J=3eN;qnsgISNRt?NBT=FqRhHKQ0X4IxAy&V(&dAGi34(nQD5z5owj5tqx38xozhnFl6X z-y3=Jsiy)#aKFn1_!21}OYyF$aq-2p{p7g(t85ubJuJwVC_-2#=+G*JP5b0vzDYK6 ze0Rw*bhHm|!k~yNpz=Glhmy_7EW5zfPVv%(HmZP-yZ#EsPDl9*cSI7pR_YawuFCfT z5oj1u)8f~AX$JF7q&;A&dDyaQUU!+j64w`lG>v49-Zv+JAyJS1c+?YJ#c%?PBksC| z&&A3V607zb`S>e4Y%02>qXQbPSn;DpW<%>7~!+TmnF{0J9(jk`4mBGh8lh-j07G&3xvKtN3b@GYt zzEpV7vR853_!DAihG$5BaYqx7Cyb~n-}^rMZX67>K_*lf6*9cBomn*jn1kG)nngap zu$!6iCQMlfN|~9(XXU~N>OUT#&O9Hr58gtxf;rz#rXp{`Zlq!lpVeil<|)z8xfPl4 zZgKadQ2Zg-APXtp$wKajrP2gnS{dDAv~K@tI`R3`3l@poUcmIYZ{&L^_jUbcF1{;Z zUI%1qC*Nw7ltrZ_R}DsLv^t9i0N@h+pRn zUgx|$ey~sVu7lDralqXwHsy*?<;x4DXaia@{>!3P;_#DdS*)Wv^)%%d_ahZ3q3SRo zc|)aI@VZREs_2_px(t!BGs!@5uqMr_qw94m?T+5VK}POyFiMH07oWq1MU%DR%!gl< z4pvR6xVbR{<0pwAwZLf`8TXyUNQwOg{381u&Q|4wL}kP-^8iQj8%0v!;U%SC3;Rv_ zp0(*4)UMdQC^k7=Sb{dJ#amZc<~5+v{f2JA8#IeD+zT^oJrmxqYdp4yyUBWZ;x*^; z=2opep!TqOMbdESNe>}S;Wg>#!s)|s7rh4j%8Pf&E97yO=_il-luvw=6DLWj+kxUU z!Z%9odv3{!-7~G>9wAihe3avF&am1feKrR;N(XRbUSGpMHf}}9=`o|GWdTxeR_ou) zgTF$}oCJ?}*}>R3L=DR2v9YdeILvLeQEEr+rXf>ug5>LTX(4r;d^%B%+41OlK8fts zW1&ixGNb!)a`3qx)gOw@pKM7Y;|U13IsT{yFARCIMj%(Tg#9#d)1nkv?J@YFpyBxJ*n8HX(NXE4EkvRc-hlHw+@kWOcKIh6vqe zN37HO+wJKm_gg}gfZL5}C%fyirtgv(d_>#dId`$t7Tb6C;D;VVfJDi~J1Q2h#&~KM z`TdfB?-}RV*eKAdTk8|Cjqvy*E~oVq&q(RZecAjNcsg!6%Oxu&08)b5jTvIhD4p28 zNlA$#8sCnH9Fi!OWQbVVkx{B3GnGEIMJZc6=0`n;y=aQI;e}^REte4W+F49FFAmAC z!0LkEO9pwEC57<;D_?63F@LcF4t7Q_!z%nle6E`3g5kye>9NfV7>LUh9@muflXC{K zJ~4}P&RiYNm3@VcvG#$K1Jw4V)g|Gxl3EVBqkS@vhsGAkK;BsQc6OI`4J|)EcfWA( zJ92H^{;ZRFoW?B;1P#mi^^QSu-t0s)9bgd@f|R%btuG+5Iv1yE6$R&bs(D9{{naL` z-}RknHptExe?jV$8hZfa!Cr5Sp90-W>p`_TR|~=FifTVa556et_HhS$VT*gU(3zD! zdGtk2-?o>aW!n6;i+OMi$d@f|ukihJVmt9d@6evF`H9TlrNnt>2rPq&XTAGfVzgAZ z$+1sOstF)~u(7`g8;^}3$XimNz*#mHGw>dh0;v)8>X}0O>RDs`VZka=H!AZe{}PLJ z;Mis*_{+PBu;Z~SEwYF4Hg0Ulkz(A0P_U}VJO=dq#jrJnKC?cbr> z`HILpD=76L2VIcQUAbdXsQPLqb+f*_p&O_h2=E5T+jF$KbGDmV)P_g=j_&1TfGMY}kX2Ph9SR_cZM-GDgnNFXyBHb)Dzq=#uv@H}c9|qpS#v%c505t_zJ|#~c-7EZV0rzKdWsd@4)$;PQS=7WqWoj(m42G#3FLE?5tZEl z^IF$IpL|Vmk?}7`3IA?5V2rwT01EVv5F}FUZr=&J_A{#fdFhk4gcgIeEFtLi_zzQJ zde_;q=k@;~htHRKy4Q#aQ-V0{B0NBMP$42Q#z}w(nm!V{tBy$Tn>{+^@&R!Yi=@bt zDBb6^T5%~pK+yIyUpyxBd|l@d+4{!O=1+@5H4vbs7t0DaMBd*g%ML3fk+`4y@2Q4R zY#>(fi~dVjIA%JI`3g(f#B&!w@-VI z@p`Vb--Z#s@tB+5c8I0wQ?24aEs=u#e7RSxK(4*bHuqS$Wguzx@vmL65Sa0!q#@(1 zsg76dd~c(%u5%Z`ZRyza;CzFK{JsI*#9FiGim8mo=*F!!J|W+sJ0|U<3l7|U4l%t( z6TuX-;yFPyvluzK2=66V0Bn>?e*9-Yu$E%uW3X(}`sFQSW5>$RgdO6hF#@zw@ieD; z(bZHZzupgCjQvnbD2FJ$bFD+8Mk#SWZMXf6YUEZM+tvw2+?Q`3?6-JX{GMcK znN^x9Deu>X&yNusPyNyvkEtRiqf^v+(d#t-O}4w;=t~A}gC)k0g1NA!w|SpIpH5Kg zOP?AEboOs*AV7dG_tUrXCO4l@ZbB@aX>dW8#RVsKj=cxlQH2sD(Bb!rA}x`2esvd% z!bj7c*0InCe5)uV?SVf-ZWpgP*8!9Nr?i~6TW6c!TMfm-sa})88f?H_y6<{E9lSd> z8tGl#!m->=6WjfSkbH#$kITj5rA+5>T;=4AcDDfEF+gr$etPazNF_G=*_LTAQ>Gb< z@|U=|e-9Q>nJ6sq5xDA7R4aMuS01IJcq2D*)%EPa;~ufKzwed_^oEc0c&O9F?2CUs z!{!%A17m~V+J#i}#+)Z!^V-;jP=4{_(RQO-Pz`u6JqUSKF^$>%pvgm%9sE)t?xrf} zBI*5MH}GDp&)w_Nf9$^Ie6qyyT(EQx1sJ6B+dF)>?(dc@*knqfa7T5K?$Xi^)e)=L zHfp6RP@*KdL`sXXW8s1J9@LhE`^%izfIMf{b8#uf-#g&F<4g^E`4&N@5~j~9k_^}Q675*RXrC|C*#7m1;`??~j@hmuN96RAUF3sKN1l=+?mhDg1Zv`BnIEHh~*n zGSh~+r7U9(0+byD$?aV#^{dq<{_9{1#7WfxuLryC6Tkk;+>nU;p4&pfb&||=SJUbxBX+q!qRQ_6fISv<=_o2 zTShDyT5bHjP{w-W0!7xv(+YdzpHg&*bMtPIj*RiB{Yw@WEVUVUdES!uMNq6_Zc?rB0911?PnEPS=rl5?wH00Z@G3{zRZEy#aEXY`nJPU@dfClKL2n# zL4CFA%qWaW%Zn_DStG#pfw?yyp1Jrw)g?ak-JdlJTqf*KRM&!nx1J^dtt_woX#Y(2 z7%}vCxPo|7R%J$lTJx6u<3V#GfyYjpVLR^)bBbPxHkM%?MOhL?EbRSE^r${d&{#>< zoLN1&TiCu8Bm^=tQYxHlg|wE7B`*7mMk6VItbhEKTi&qh^>$e7mK!~r<|}uo2AjtZ!0W6L=OH_pG$|a?Z#9zt)Oe`N(mJi7Yi5JmCLG!I2OTXs zVWmq@4heY4qZ}H1=P!tc;2)M6ltiCRYsFyU>SERg!~Y(7>niViyL2*18H1grf=J+qhoqc-!@cSpC+kimWIB zebwf8IojzYEnO^vZ;V`9b!Hbi&+<^WitX!HgmOp&cnzomagZ z$tHV7KUtmR*=5<4I3k39HdJJlE4fu6MdMN3fzKu;B_%ASinea)@aGj$L{aXGM}t6# z;C8(~nQ7X$WTr^V2=%GuJ;{28-bal$Jjtxe?+>w9^L(*(!Z1oEkFZ~)X0gx~n$L?T zqFkE~%z*XL4pKw+EB}kzjNs7@umsLU@zj2xW8=||BP~R^D<}6ehI_%11U{S`bJ>Ln z2?gCzVn?O^ZTIgjz+CcAE9S7CTr4U;A`#Z%^UEWI07j2PB9h6m2XO=%Mi`*i@ested-$upPmy2|NAh@lfC%qn|4>)mVr zBK>f_r%&3Ii*%7L&D#T{ro5*W)6H8Q3$(BGAX|F`%0GELPR!h)&{gM%KI4{!Xpu_= zg@-(A>+NZU=~2sW?Ham4o<&P5Cof2!ckeDN!|kgBwe;>6w${Z5iH^y@tJRNfe9nO` z2Z5e{s7yy{j*tg!xk$jh*5h6?{f9n;lFXfPM*JrUp%KO7F&0q3ZS34T(sQ}otYMdN zpe+8C2==Oe`DJWL~oBfbO=l9b3kpW2d>q7y?V;icX zc-Fh5$S7LK^=AxcEF^I8t}8KVgH?*d)`h^kE4{4?%05-U9)xt_r#i#?0N@<*vY-zd z>P}j++h`BilMi033xyr$wXRWo-#On}@aZL6r6>Sb62(#t{`H`{kTebKnZI_E)@Qg* zkqXVl5AsR%)crim{ILWVC|pXXi@43BU(PuS9(+6A_xN}2^e0E*@JPOi0nma)Pn1Xn z`6n@t^~x-;e6~xPBMdqQ^tzZeGW5{)*5GFn1TfjtiPd|IxYW6Jx-r@tee9t5Q6FOd z2zf@*jrJC%G_m|*gdz#<(pP}mltjwv5_#czKoo4Uwtd}yUI+u-{?IY@c%?3~{m{p} zmd&NGM%kWxOyOJC?#2wN@(s9NV>kOwXYFu+0diU5H^q7l*Gt465F|#r;Nb*RPRK;% zZ6UF3Ack33x()--&?~U%;~B{;$Jzr z?1#8KLzN@wodHqhh*&&cge#5*>3nN*Zh^M+7^tgT;RyzDAhQjwsc3Es$ZDZaou}hq zq}hNa9=pXB?Tw@0q8ixf3Tz+((!I*e!%PhIROB9wPHkqtJsgC8hSX(lhC90|IldlT ztQk|%|LACz4f5Dzj-a5Q@bOvsV9E;;IA;Y?xhn|)LugbZ@d+7tw?R7bsR|4CTgH@~ zE3UWmAJ5YNkR+6=s)2~lC_j}h5A?M%;AI#HK3yLn48r$LERJPtW59V{ojtTg_ASNZ zH31~Br=tr(vAQ4lV3AeEQD{u;);nBom9qiI*pFbYj$z8w9Q3G{((G=wx{+ITuik(h zecLDi-L2Zc6tDu<&2R?3&ar83BvBw^7=A%&vQTfmaX$pep$5R0V z7(4QE`?R;lrJ=rQh{`3~Y~r6Bk%GaMzqZI2y3S0Sj+s=HoW|NvH7A-I4byVGRv-N8 z`yxt(V%B9~#E(_yQaz@pjUkrL#&!=2QE&c|Y^^6QjnTDcg0QXrTx@!=l5&K__R!nt z(3B5c#D;t)kl1v#2e!F*u|0(CK)1{V{+d<6Bs^3!Rr`Io$ZD&jHjypIgGoAvn(d;_ zOi;}D7h910Vm}<0@<9Ba0hH(oeMmenMNt&%V^7!qYDc^;pXPpMqb~SX)V-whDA#WLp#H<^xkPmLLi30vkn-LNgvc&h z5(N7{h2Wl_w}Re)&sfL0W&hGsXnTb#@f`$i1&R!A*97kfJ{(J3B_3u0Nz(1_)2ht) z490c~@*7nuL!E6Qg-hho+CT8+<>d0*Bb2GOm_K{q-y*$oeIdO9Nx|Z29MDtGvfg$Q z2KYAX!RN(o0mZ~jo{vhM@2B(LR;3Vd5?I#g`Dm|i%M4MPpB()Z`^H7lR{`!Gbw^2ebuK3010zOi3+OQ5!`ndegPmV2;E^o`7 zJICJCE_s($%R_k2A*SO!O86Z#oXLCU1yD!weqvJUR-QS41g>L?zxTr%9v{zJ?y_T5S_iLks)nOxuSOSTQ4pI!L_A6P_pK9I8Fex9HV*rSdWiG0Zqm>Ql6bS0 z;&`x}9JK*Qv2g_W75kAJ$a}oYgVeXfWxEC*NM>cGlk07bN9um14WruY8WJq#hjA$t ze!TP@v1_#hibZID)qWHNMj92@qO9quo$7_wJS)EUEYu~6ExnwYs0ZrE+ix^(FMcKB z?yWK(yu|X8M|XfH_}|8yM9_|&xH*q>3o)juO4 zVPaN+a;=^F1hc!k{gWUg4))sG?Wnss*WU+K<;{WYofeV*OD52(M&Q5pTWZO}3gtHX z5{*7k3GEtsi%pEQ*p9ZSt9%7Bp=`01eHbHXBJUdxas;>B3x6G}uvTU5pU-9();u=D zip@8Wc}GjO!}icYW~aL&?hu#+6t@rRA;ASkOXJMpPUj>TChtnF_PYaA}ppK_Z#Ew)Lj)=nfu z!>!~TugCt+>p@alG=}PqMTc4H#OLaSag>ilu=ALZI`+JZz@-pErD1~G zMJ|y(mjz$K!@rq$h5E1&q*uqb`z;6cQ5;L1s>&Fn>IbT6opiPzaR)pV`GW!MAGL5; zTqyDh2(SHOsQ=2+owU)Mw2z`!tT^4y(x@Xdw2C*%N^;nZv?8u6Y9jnrO&xD!bg`>vAhjA(@|U3`v3XT}LbluY^Aop0}w$|1i*S=}G*OrUx{ zr2OM>bbZ$>K^(%;&q_q`h+j9aG@c#tI6d34{lo$tI(q16JI3AaAP{62qe6cv|CZu! zm%!lDpW+{vi@vHWBg5lC8WZ0Xc2%KAEQ$kb%tS8X>cEHO8%qM1)CXz zG1g9@v@iWg=(2K=N;e8OyT0{+J@L-&^F-x^NJGgVkm32bp`PV4dAVZ=Zx+xD`5O;& zVeww$r|Lhp&I5ieEMuG8y}N&ZQ9bF_K}9MheI3DObi3oS_U&PS()2>|&(0-98>ga7 zrhuxLW}3;=llpcx)6lwxn9hO}4+SE_C-@fnxb6_8HcZ~R!OM-z2`N|cvIf#hu=i(S ztNY=6yS+^s-0O;h7$5e`O~^(7(J#sp|AY4B!m@d$`QIqw==??G5oDfgBRP!V_TNl8 z>tKS%L&@4EG4gUij~Ph$MQ4fsWUIzfM!@O(f~E7d@_VSbGx&)BtUQn?@xx?4Q8@0A z<+eVavy0MQw8YfDA+*(@Xf7V9M}MBh6s`-`Cq5{+LzUfnXyLBXzH^+LLJ{yAr9#4C zHpP{e1$n^H!zdI(n22#99t>)+iOWy`z2Q1x^0bd!Ka2yE$&~2%kK{Y-ik(;Zyy&Ci z#X6G27+|CC2d|o!Cc(wRP^fq3x3SzO&$}XHp5rs5tjc;eD@9m>240b$uzLI*pK7zPH%}E43A$|(3C?ssg{7oUtA6HL0b zatJfi!Ep2_Si9xn_$)#IZ%67YOklB=r$VOorxidrp@v`C0WK_JekcgaPX`>CGHMk-vWtBhhA!$eQ`*#`$~Hzxldw z1LS95VFZNj>)Tv61QpQ8R;K?m5&Qe zy-0gdArvs!jBTD<;5_j%55V3wgM_^JsqaOUO?)N!FWK#(;9lbQW#nf-oer?zG?f?y zY7!;?(gtcM7B^5YLK;b$4iHzU)B{yp#qRz&&}Tvqi+h@V2+iu)2piRf5OAHA_Z)tQ zf{&&6p17lY;DnsqG0ij3-dI&mNP!0*-q?eeY-!Ngih0+c4EO&DH&(#># zU(t~)bS-4jr?qzMOQK>tK**{If8JiZc{i-E5eYx%zH#P$2H%?^R!dTuk=8Q|I56gf=P(BrJyMKtdx0?C%A*2b(YF zcc!|Lh8wBWlGoizFJ)K$v&r=uXLpl+4z*hK$_}OD3Xy%1&;^_LzWIihwXIG>SL z0u<;%)GQ%h8_bz2IJRVR;nZ$1|8oqbUi$3*^h6`0yake(%QXnHeQVN`@gr$B<2UTZ zU$`h?L~Y$>z`ZhnlU2C&+Bup0k$4fhx}@{^PyYHv712Y(%jjnv3+sh)>kM1xI8cov zF`G9}556gx0&>Rev|0Q)b&Sz%Rx08H1oxhQ)ZGK4i@ek0sX(jtPP*j|k?*b;Z8Qq& z9Kzyz-6#2g8GRe^V`a?TrJ>c>Uw165EocQW0tT;O^@>2~ylum6c&a zHF1I2TceZsgv5pTTfcOzcwK)Ubt&(;q&U7UPYgOR7e=Jx+jAXep>;^^hp-@?8O2nX zIl7M9zjZ{-2#`fg$$Dkj)x@JTH^yhnE zun0m_fdW47hPMUkUvumw_xa(!e%+uRv+wFU0uFN9zV9TyiL|%ro&4UpfCem}|6t|A zJOWH!3A$BaIUJMoRUio$T9l7LP#(%(Ur(o}s5S0HfONceXD*rp)Z?_~2sZ_-u3D)k znaj9k1-%X@!pa?$=Yc&wxZmr&`Et7Jgf3;P-RZcU?@mZPU#TH=3MiR{Boi4ywC#a* z5+s#W0LBWni;{A4V2s<;2+fz03UxO)otq-NO4v(v>8E!mqSg@|FhSOn{wSl0n)Gkk z-yl4f>>CcPewe^uVP>(9b_krQOz?6w*Pu~NNoF5Vf88d+3HYW_r+&0OhKRw*;>I+D z7454oR#LMA7&xoO(Ts9jsMOwmSjG@|+w^eBXYu6wsC&Xg!ucuh zo44L;c-1JvPF4onKcklH!mQt&zpK&RRQ_EJkzbq4_WMOz98*478Th|Fc;?@U1igLF zR0>tQMb-!G>m-qvY`%i#l`3&QW}0WP4jY}RlIv2X@X$KAWiEp7M_2>na5cunjSN=( zw(uvEm74^dc3mw!cYa^$Jc|FF$tFZzFFK-D@M}%1yyt%NyVBF_^UvX{^#5 zZRLxt>OWMO*>ao_RYF*QCE^|95MWc%Aij`8PKGT*BR*1$jl1Kd8QDmf${5k=? z0nKQ-`F@g@%JgBl%1ZiBXXJ42R63?Q9*D!HB&Sw;J5+zOx-SaCG}ArcGSe@{9H`EmPO5DfQC3ZJ{aPL&+-SXDMd4tLi6RoWo0YSNZGR8Gfd`zDT6g5pSVms zCB(uUyI@!~5qM}y!h|Z-WtTrk22N%?SASQTGsV0hH)+a6~s9=V~!Wo-XL9J;( zDqYSoL~Yfc#WfjOhYRS3ym_uMGCZjn+g@(EPDy7hEpK4H>|q&F9sBf#C- zj8L3F#K7K7Pfzkf1Fwj|J%jmpSjk&xLtW4muUc>*&{74%QiqHW`!r?^JV3u&Vs#;E z+)S0fyK>3p9Q+_g`dyc|%y?9K+cnjpOUsI1Vmagxo$dRZ{6CIht)gK!7qNDpJ5F@+ zVX>K!eCUMn#Z)dSaZbMkUj5K$gF16|y~(XXSw--GC1c3P8SoDWiJiygM$ICvB+;9@Nm`e&m`TmFsaCtf`-_d!f04Sk*6gBTT6Pti9+|CQ9X#- z3G`HZQK;B#$`diJ{k`Yk4g|@zBsRGK+PI~}5CG*-rM}qyRr)!QU(x+OCPicZE_oy2 zbg@o}v4fcV8f(BEPGnp7FKvE=Ym5Z#@Zpwor+DLKaq| z+J0@@V4FnbS*}3x^s&i>1I#Tv72c~$4(Y07C zX5mzo$_C+=Mq8y%OX`e7%R~PBfY}akJa6vR?#BO*>zKuDgT5wcu-zvc-Q4!YYy@p; zw=l&qQEC)cuxJsec>lEes+@wWzqHSbs;li0ODf95!Nc6#?-c5cYpmX~ zJ4njm(EWbIS1K!`gG|tZR?i%5<}QH9ac04XQ4{p*!#O3R^c`XcZ#7KmN9TCtl-jBJ zIs3eevJ-B4{7ZGp2~NU!N<}n^N-y%My~22JeZxT<^8TIm^CPYGkF|dQKb0a@9xAlt zIeqk-^KOeOj%{dKIYMY1fO5F3`$l62U(XlzL-Jr`+OAPdvmAe0{s=7SfLh072~w$qlS}xwTfAO82R_5%ko5 zAOp+inJGMso!4^{WvpIQ<^P0Mijc6BKq28H{OHwZc+B@7Ea(;2FiBY<8s^LF+3kd~ z5-oxT`#(d*(xGkB%EiVDYQNTk#CuB=`K|zXn|KltIZb}CEw(FWGrp24hZrYf=fZBd z>;TAJp@na)Iw9;av!phj)~gE4>LMAld>6PYi?%gn{QUfh_rYt=!S`C=xFK`Yi%}=G zNbPZjk|g1~!{^&87;#7T=Y9p{DX@^0c)i#JM%S1Gc#n3V!aMymb@EHGj@m1h-@qHn z08Z)}rBJKfmu!4;S+hr}$)C8(Y2$t;2I^{kQ~CeoV`yY5e#Wht^fMw*&qAy8;{;7o zn+R?|xO?u2zSyt+A0dJ6)JaaER&8q3H62H?&#{ceoiO7?F3#SV12Qh&Xbh3t5sPe7 zI8Ku{6WDbQq=c{hDVPb#pasYiv|tUJ&4>0b%{d(Sdu#~}KS}?|?|rHtgvuk2qDj*E zBPQ5L$z9;V-74Q1#4mL;DLDUx`6Wh*Co}H^R~KU0G${z;6f+FqG1L7>PSlUPAg&?l zt~_)ZrMa$3%#dHcVfx>5OggP>dSUf6U&=2sq4DPD%1YN0b@4+u(LA*P5aFQC zQ8c5!JFwPr4yVu?A3rpN)qq8Ocg{83}77RvZJ72In(nu4J#fYAo04x2abB&TK3ZaN;0|;jm4gA1UB-;{}v_m)=PFK8P$K-G{t^VBuOa()Zu7=Cgcg`?6T#W-T!K(F=-6r@;ml)zwa>mC*|;e z|Ax~YEs>Fv2>(#)2r)u;Vz9NQYlJ0Wj<4-m7eX;C|-+pg#{aekxN= zN%~8Ugj)v*RKMC#q5MOn$(0kVINKo`_b!l6%3b|~nC6$7oX!`gJ_CN}?m9)q=REno zMXYq%x96Cy-z)7BV3hLX6-CEhOx#eE5vS9}i+Cn6oBC+}(#w=Gk^iV>_YWgAV&ou{ zqKx0Psb>Z!fsp-FW-gAww1g%ITioBqpuxceojBA~3Y(l*aMu&1W;&*jFo~7h9R+FwqgoBwmUp-q1M5y6c9j$`d$am&iNV|G@ZUY>ly%6zzn{fY@)_U9XZ0 zWqAsx)<1i2)wy>jqWdrJYiM#&?!WT2yp+~+V*`9{`+k!zEl1zGvO}|Z-KRFdKWEnR z1@F7SlhD?gGAgR8ocZ>aa9KSj@g$)n*?0lGyZ=0;wOQ~4nchGk@?aki!@B#C?bcbu z=EKGb^2)fR+INkf0l0aGX7!sZ?wz-lnJONfo2S9st-D1t@bn+fZu;QGO~xif>Q9hC zf&F?f40C(9pz$Lr9S&|;#6I11ix^;VR|VJf6ZD_ueNhhb{pF&$U>Yy@yCg#NZbI9z z{%E6?ddxYz^n>@6e@n=M_Nh|SEv=+%u0L^7`Dz0?@UN1E5L`o77^+M`^tvs{wWCZy zzxx`8^Q4yQv5X8F6VNc}=VY9xXn|4D4+hlf@q<80+Yd$crjH( zmVN`Q&$O(Xl&N2Ki0xaAk|OVOiWf|j{{acE1Ybx}&WGOwyq_$Jx@Ljo_lHLh0^*Qx z$As1=kEMNO>}-LFQew(vyMa;qe)0N=iv$9jd1rI^n?0G8rDmebUzp66=RAtl2@~su zt3t6@#&-sGzvI*6RC8(nV}LvTV-cF_eqPbFS1E7{uO|#jxP&W-aveyw=X{;JQWqrk zW0&9IVRTpGG%-Ocz;`S}gdOoCe_C28!hvPomE&hO@UFDZR1~4QYUP||6uY~eFbW@xN{t8+}$z>4XAc#<3ae0ML7em0f#G%kifx|#?M&q+8HQR$HmC3DE{ zdv!kH6iX5!T*0ExH_*Ryo_~me6(rBxwhZt+T*TL@x+tMaCcU}KX9FKhc!Fs;_#>Pe z9fSM@pp}k;wM1^t&$%qFdCT<(@G_)n@BG7Ln#I2tsij&blRQK5Yp?~FIESYW%n}I( zA%#gFEx}JI)xB@hk-w1W_1CoCutQ|49{B(lLHg|Vgbbey2iM6U7s)=|F*&+6HOEqm z>?x(CQg*Qx9No=6b`*~e#)!oJN4yXqD|spzvm80_Ltfozy&jvoWypqlq4s^x$=01p zA}u{mo%k%Upxj>5J#~`AlFi_o6j{roWYk7gs0`M0=IR~Ja<@7Q281EIynZPTYjqaNjDvVbKm+cqZe2nXotckEl#YKS3M#tvoSTW{*;u zTh0rN3FUYM$caX%>2#ePJ7U^1iJl{&az|3j_NgJeutTvH9VdzyB@yWQ)V`plPCUQ1 z=}(Fl`L7|Lc|eh{Et4B$YgQI?sgkGMeXSfIcX+5X|9pZ4Z@a6$W>7hYqjj-@gO%f- z>x zX`F_CFvPg1OHzv@yFM~p^WRkC7rluajVm8(Y?ZB)yukv6+)`$t7$cI9@^#?uXf zgqZv$_hn6gaqhqD+KgW!<2kj%l%mA~*kGSiJ49wp?a-q3dTKIA^=P(tHUz*u0^7@8 zLstcWvn2l5KK@g~rhc#xBIlo^!=+xO(}L9TL;Jh?D+aD9)V8^B=MQSzN53ei8~RwY z<`-i5L@ZF@$fbT++g#P^L}a3f21#xAxLQk&?Ee4d5+EzBI9}-d{q2Qx2<$HO*Cx3_ zCI|N&#h;{>KcKFn9(wZf-&WH=kxRRz=@{}P13hTBzt`&iH6GG2F|*NnF1A&>R+g!{ zx!(}!UPlEXAoq?#CcIex<+tq>Sz36I6H%cQWJ8(Rx1K%`6ll3^>iI;j(i-T<7wZ7# zkK&t;s$L9J#6}b7P<2Kqiuhk~K?dQS=^_8UWC)Ob0CBFXSe}fd0rJ*~Bp>x{Hkvby ziNXptHR+-AmU8MYoU-?L8ABB5pR(t5m3P?Gy;9$?GLh?(=6Tgm8Kyd}P|Xb2WT39G zc1BM0pQl&+!M=QAa(Rv+upT16dLVlp>0`$X!clX^vW5x#JRmW$rp z3{nNxGl!BbUh~2Mv4y%n_VEWPYZn*-(*Vz3-7l1sm}#VsiOEoO4D5@Xbxi9k_C6*6 zMNBC1qwG_k2Kk{PAr)rX{Qq4QeItvf>yey@7MpaF!G&;()vNgJkbX?8pz(rCYIQbY z-0iQZ%?on%!V0Ew?t&iWn2PutE=_A6G4ENKtKh>qfNO4>_puO}b$nohveL9$Rmk=^ zS0@nxrax$)jCkKZ2?s*a`nrFmQU9PInM=|sEG;a{YoAcbmQOzN551$0TTJLS&NJ|B z>}DxeYGG-j_isRQZO0LIyKRSGb!7W@i8*>83!{$%;p+i#$>kC*>gm3C`x_6p>p~oH zEt<(!8@xJuz4}}-lzsM^B?D{ZTeiuEXd94Mz3@)*+K*QY=oFf9t`5Zj&-}e}HA3D{ z1VYm)L^#wfsSH799-H{Eq)HY}NdzX^1{67JJS@Pf+CrqEO2uIC#LUZC}XtKQTV|1SKzmxVFCVtBed z@v~Nu{rx1_4&Qw6KTfZ&jl@P6e0lc}dJk%8SS>O>7!=2gUcX<3`N#|9|;4q!hnO?#W!AGfusS zm4rv-7Cw$L^ z&Gkt$O_LC_mLEK8igRzUSh6nv1BX9zuknwePl&}%kH6Pyj&6dy>#<%S;MoBE9>emD zO$=c69$aKQ#TU1xMl>@gytl0KDnGMgA>;qibd>>7HC=e=25D&(P#Q$KLt1+2F6r*P zfCAD=OLs~L(hUj%(#--3EZyDl-S@}$cYo}enR{l=d7kIYnRlZ{dwt8bC~SGR7mfO& zyRo!cDkcF)q8FJ@V8|lG2ll<$6Uz?;r~P@?bQLGE`W`BvcGh5M+eEMU@+!jCdi1NOy8>dj#A*%%?qv zkvSaAT?fUR0G(^66HMX%ZQOS&VlD*NM>49Gc$i8|PgEP2&vB!BTv6ZjlOED&?Et@$ zo17Ou%ZjI_%I~=Q&Ey$-?|1|ndf#qkpeYXISb(3nJ1EkSgWti8C;D7I&-AAjDG#M% z&|QIKNgZYNB)2JbFms~ZM%5FB4Z9D=UXNU+mYOM*6(wWh^+ zZUq%y1dfa>7#g-Qd6XNQFIiVvLZB zqP%v3l1GzmMCHPdPHsIvoheOD$y&FjBd(3Z z4i1Rgvt=rFl&yvkmF3DKC)YcvN*vWO@?3GQkmBDZ5){|{`EP3bKF1~-Lv(Pmqs>Ii z4oH2@ZBm{3vj^>d88$E{=T07+?kXo%uujfgzE+gUDCp&mzyPcQ;Cb_HciC7sZBgiL z4{BS}6)CQ5JmB6$8!WBu{84F-rYQV1W3wOm_RdtJd&Rt;PCh)Q<+q0Ye8*;Mu6W@hpb-ye;x>P{m!znQGH z4?4uwXYqMeU0pb;l{KIhpWLJKCX^3^>*4SJK=|j|6OK2u`ngSSfIj9G}jA_AZQdQ*J^IF z_zM8%bD!iTMz$VoqZ^MFSSNp5&kt;{(JofI_|(X>dNzLiAS}!mG=|t9Ag8)}e2%e# zAAs-EML^L{ha4Z`t(h^tYg&;1M(;}TSt))^5}{te#}?w*DC-a){qLz>XhAhdLxsYkD)`+ zUri;Z_(AVI#fbuzTKLo3k9$_q+y(}MVt{e)!NM=t5aAk)5V8T|Aspb;WYhO(%?9mA zH14?vja&J{K3bOq?+r$t(?~*=IH=*Q7BHk(yzM3Mq{X@+N_HQibbG`kZE*VFC|jXQ zP#<2l^+Fn!n==BPcIeU*ltuW0MKDhQdvZR@NEr?tIzI#xuUr zk5LIB%N)|_Fp*Y<$eIeiBCC)sm@gUk5ES~S$t2KpXn6z}l+e$^S;5-fs+l<~E_?|^ zYUuVORnj#Zj!Eusr@cGZ!MKPCSyaotvN5^9G*vFE5cIj_k&|9zyXs!N# zBIzZvQ~(Lb&M%HiyB8PtGklsl4-G*}&7Whf6Su_yydZifE88A7Mz#%kpCI8J98)#4u->|Qxcuh6k`G`xL-4S_Qzx2|;84~F> zk^QZ`ysKt`B)WX6da~h76%KrQ(PVGp$r5eC6PRz2oW{qQa-RNbF%(svBr<^t$Tyxa4DS|?5uZk9e zE*shro^rXm)B?zt4m2TN1{%!d;D2i}3pasg3yYRcZ0ZdU;he~{6sSE`Bvak;at?dqdrgiZSzOj3?2;PU?9K~9c}#4P;diBh#|q!Jgc z+oSM6i-zQry|P~TTdTd5th(M6;FxbC>Q&gZGAiDEgxvggZx!aKcCRpKz>Bt{J~)GpYLMFzB%Hm;2cYcx}% z{jwQyhJLm?x&~!~jgCd0W4s7atAC=I9~$UMfBGScf;+i`_f=YukgiyOv)4_HSvcUb zsc+-YaGwuAd49(t`r>o%s^oWsKjY`GO`=bIBDGs(+`pou@o%KMBrAh0VDAj_`e{OT zQ(|FfvGiQ%qlr^g99OD?*Tgo+e(k|oS;)`EbXQL$5DZUFWEnkavd+Qy$0VThWnG^q z0xW;b!)8LgE)$7bjOza!X&3!HY3FVg_H8rpK+b;C+@=vH!9lK8vEll0AJbzYK}u{C zJYNnDsKLl2yM2MYkVQ+NGI53Vl_)^f#iP1w-q)J(0uucgWWs`a%-O|SyOoubi@RG} z`G}^dXChnAOI9kF?M`DniWh|aDQ9g3DB)KyW zZ|Y9ic=}$nG!qIhEBAmIlN{ZVd(dG?94fStX3;o06>h>Yz4aEa4{6LNc#s@;^6on^ z=rU0|2t7K@cPfbC{fPjJf`UucUtcy#P#lZc@xrAj?r&Ev8QeXZyq-0vS5K3k;Z%^T zsRuu$I(++%d|X|6HN#`6Zxkhy!PzNL81!f2FfDZmi-iZ_YSdb*KoqV+dAC>O2qf}sSIyWs}U4q zare>9gE!jpwN0^(vn37j6>AB17 zvlEo0V@{>)1zCzmQN`vpzBOa7&E=Lzol>vfFnF6@Kw`b$lrW zgBb3TI{DtG9ajd%xw_s{4v@sfvYu5vFB??#x1e9#~KQ zu;WVw!!Mo2UUxrpMU9JR1ySGjMS!6HpYNc&SrJCHuM|b_yj#nSe zxeeu*d9d_8#r0l{g)Pf#OVFCDPganoTJO-U`xnr}^r=PodWTy$qBwe?a0hQ*`$VV9 znyKUukDY!{9KO>2A=I{*?Ph3;-OV>XC#YRb_~KyWCk>Uetn53S@}b;9Scqct-*yDI ze=m2>_#Q4zNZlD<$^om~3+Krr)rNXUeG%1U0-+ZAF}R3a?&QV5mZ@{~`$qq}#@M76 zHFLmngMdK@M+nsc1ga+0P(ASRb8lRTt=(g<%M)LD_gMT76AMbZ4OHDyvHR6xkxAKn z<59;c`y8vbXg6eIRafKioy1W+kq3vITP-03JL>*{-u*E`Q0GF-ddrA|Ls-B|qB5mG z*X1}+a5CVw@Z1l@!hTCY=!c63PY}P<1}1PWDC|t{kkk8#>lK%QTvvmZohdO*h-}^H zqj6jSM=DGD)RB^x*Xg;R=t9;;P!`_;(lxeKOkLEWm<&ZLOap^)s$3lR%A~es^^s>v zz4`L)9|z+K@)i2lpxZs)t|)W?B+Go)@9f{%-sjj-|F3|_pkKpxB`5D zh3>Pv{iCf?D3m|OiiHu^8*E(>{qVs3rk^o0GdHJ(%4{1mK)}&LPb>oC=DQr~0*c(q zbyLr>adyyX{{eerNCvuwRKYmn@qzmxDGT{75G40p{2CVVLiuKp1SBJmIz|OLkVT{` zCHmXj&6?m+SobrGi#g~Z9NgyuT9YK2EKFzEfjy>&KIXbe=<`F_qP62~geV8+1jUoa zfYbz{Kc|`~*7TXYK6||Pk+6pl$8`Ddp$aWbpCe1+SuiZQiNir>2uvZSoIVEvg&Pjf zC3f@=N&xBTm3~w@aCNiDam^q9iU(f#3;+55kl#v&#^= z0_vnrWk=a?+ZU*x(x1%Bx!GW3`v+K$CkGe{2j_=|MQbicr5_xtW46Em!S8%n#{{Lw zE1casdkjp3FvbDD*l~uCVMMwqGI^$&EP_c^Z9KE}9Q|4+3FRax>Wq6a_Td3J9*k*TDNa_+K&$oH;R9ne+_GY0V2d5!4or=- zf~gO*YmyjUKx(hq;U(ij{D(Ht(Hjuq7#JWo&LZMfPv4%w9X*h)g`ADf@jU|J*-49P1yWEHKSNGqjXSOQlg6lnM}WzM&86>Co^th8Z5={wX~c}( ziXzWV#gIRD7H9i{;i2R9MC9V#5mWe)iF0Z|fMK3C>)4U6eJbU#NTij*<>g=#b2+kz zYHeLs$^0Qlk#w^^bSZD+l>aNjMiDPw0X8pCW)4}C^#TIn4Va^g|&z!e(^4~D) z=8JSeGHhdDxaKk_>o~B8@RC=Cc6T}%R8BC&F=NeY(`dg=}C(7noNi*VLoAEl6@paAZ!DnY2TjVrsLnYcn>P!pQVoF-F zO);fkByy=k3a~Niksmr#z3~8Qq-5ihq!(N=pK`gd$80=Pov1crT_K94)BZE*Ph5V_ zD64qZ(MOeG3^p@!r6K`yt#BzBCbGBU1j)3%5sG*|@3TUV1#Pjs#eXDJ@=FA}&Cn)- zu+7CApFj~>kqos0QqW+q&?BHN%~mjHtL(K1T}oSw3k8J`^2F+PHsFTZ#_NLGVwAI+ zqFkmcpZtnQ7uvu!GLlkpHw0!NCixw6b(F2D>Q;e?Ki*|_AF-j^E(kDTl>YWar3bt5 zj)yQWQ3%L{oi?h20s#y6*FK8vJU8ta^LzY9*xRIr= z9<9|FsyaI$)l_S|>C$+J%cJ&yYUt#p8vwnKiE~)MA-L$sG95(T`j4JHZ}GB2^RF)9 zo7wr*y=OoYjdpp(LQRv@3>boBjRYu6%p)^f7sMQaxQx?3GrRuVL;>h^9D=AJx`RQ; zL!pP5)V6UFv&uTgjcgu9;DR!?F!z)`bXWq;oSjfAw90mrV-l( zPcVcTt70lL8yEa%Ts^F}_f-eo*ugF9DkiA0d?klAMxFaLs?IgAMKLxt>Ef52=nF%H zOI4hoUKpeaN9aG4l-ZqwUIA+J!`ArB4wq-Wz%q7vt z>u&fOemv=k!0Y6aQE+f{1=`2rR@9vlgMzB&UA^eS9LMZC(-&IMzc+8^y&G}nr7G`X zjhW){`Y#)GE14inFD>vkxR%cKn@g{b+2{RHMC1e^6_=EiM0BEaJq_4p9U>*lJc=*0 zl5*8dfyRHUtDZ@@UmI&QWU<(kOkrek^nW*?9^IY*%C0hb|2Jp_-$t!;V{0LqBNis| zHa;~{y^I@@xUR8WmuH~LVXCGh$@*PFyJ&>>5qXZO;ZQpys_W^sKj4FN&7YK~U?1ZS zx}5>^>FF2eZjKu30={C6kHV#_42IBCA4Bys=KFwF@^mkFh{!ryrcsooJ0BK3>#GV zO7!*9Xf*1xUi(DMuTs3fTMS3=%u~J@s;E^iT-WyR%_@WPqEh4V;pCfEk~6FHN?51D zl|30JAW$@}>p)`4P7^F%pzYjgMg7Fg0sw$7j2I(Ho%M+B`;Sc%$P@YOD@kjYA1Rmn#0KZ*wp!*@wOdM?BivPP@h{a?@{}8xB2uZP0-qWj9Bx`yKu#wUTRVi6xXXsj4(MGp7pFFR}9--{R z_byd>XPk>Wcx97c8Y$w!xTmzBb3quO zu%GPBB-*QteoMrN`yjyw^ly@{z|~cv=ij;r?K^B82U0QXyt#MQ^`>h<0HT$&dOsS2aA(3;quDt< zVoXwRRyv+g5YV9m59>EciG+{3SdG2Mm%kq5$gQq>hkc8~zR>sshTqM}f}{nJ{25XY zZc4BAm=y`Qn2}gWk4Y{l3@URk+}wQBiZje7={~LU{WqjlgaFxae%!=9DwPJg!5N_73L)=#+;iCu1(~S#d9?Tv=Vr!*{3?5MOfl&fFe4CKzk6K@*H@CzDb?0+W&DA$6Oux7Kw;XG5E0bWXjlUARf`G}<`Wh^zCBLyyi1?O^w9+>Hm7 zLoRjCtAVH|HIW!&o4tXJxUCE^9IV7=T#1 zV-*Y7Ub)=7a)jCW%I{d{%~ZxlwRM=brsqUk5LsK%L--WGJtXYQo>M5!@kS!KsIku3 z%JaGX3*v3F*>t>@eq7lk?TGe+(^-lHp=b>sGa#;&KiacKShv0I#r?a*etGH0qLnl2 zJbJSShoALV%oxUsmnJ_3)Y;jenYtJD0eAW-MUMf4FWkD6URrU!R z5PpocSfYotvh`hmDmOiDZXWGIQxwl2rwjz8kmcakwU;zc-Xw58f%ww$C$c6Y~j zW1eFI2qT;U@r|XsKTgg5z8eXuCmRz-N>O1V&5QTLCyGK4Qt0DFe+&X}FHMFORsd=$ zy}ueFhJP+gj?uDc)P1S;!)lXqMCXZvY%p1po`Wwy2eAxsBvtN)t=>;J%F;Q z9R^tfhxmQK;OvvY#{QyF)B{pFI{{4P>R{`R%m8N$=|>^TF?IdzV2jM21yuB^aP_JN zN%bAV*Rw${(>0UaaSGV=Q#WtcoU#u{Bx{UyVwk`~mHX;MxG|DI zC~*_bV4+z?5lf=o8(LY_CT&~&IaN0GDLM+CpdJ8KEI`4WTN+M}`8T5Y@Mcr}0tUCD zc6MDth~fMZj=^It;Onvd>WGr3)hk!|wQgof6>;Bq0}q5Uyx5~|E!F<5`YsO6;MEX) z{^1eMh13jWnmUh~`M+6NiokiiyzmdYYnN*D5NnsEytKa}FTZpNw9rW;bc@=XoN)vehX z{%LMz^$Ox&di=mi(Vwbjw$KW)P_><=Xj6loN|(hl75@aw-RQ-)&d>{qx6w+sRkS5@ z-pdppPJHxPVkV_2Bq=-nRj<#X#j4eNtIh$NvI7~p)5+12`-43KcleaGzEAdV&%1TE zMgU0pB%#J+sr>$<1tWEEjnNSp%Z9}*gl_KGOb!J>bED^8od&!;4|rnV&wLqo@cg`w z7k_}#8Pn=2A_g&=r7<9T+X!^eH%LT@`QH@|=1^+Wz0B3uihAsTZ?@8j9mhM5G&dP? zn3<629|V;XiC1$nr&_~`1x6I_y#qr5jb-cMPPlYs*HOzUewrcEX0G-l(qtK}uGMa- za_XiYKONV6#C=seQjnAu$s#nUsf;8VKPc+-hoQ6OpP0dvZdh4W~)exx%?Zy}Re zj&kK|8y>2*>rE8S&d$Pd-5eG5O6?X*iE7R=P#039D7t@oiSUWoOMkNEibMfS3t~F| zEP3M_V)U?w=Wum$-4qhi(ed{G2o)ok&gnTve_jOj(BS8AMHHqd$pSI z5Xh>f!`o}OA`rSHnvrERurp5z-U<*Ee_F_0(leF;v|Fm;t(G2}K}@DtbRz^&%Bc!K zzgGmsP~ut;t`fSqTMK4!0gm4+-VHuXtmW?>(&hUJ{!3TTfV^~sPHhJ}WQes(VI1}rQ}=1@sLb_u*DS1tybTO+3-^aGcdf>FjFf;SCCIW zX-CzjVwgX5nmct?hkI#tV>j-PV)#|r`;_RK94gcGI?2B{PuIn!Q9}SCwRV|b?N_&P z0)AZ|m(HFO^<-I;NfnN)wAfF}gANvFU@ zfP((T2o7`Jo?n>^jKBLbqvr`z)TkB-3Q3 zY}x_a-6`9=iDHPz0pvLB$PQGZ$>Hrfm415_)!Ud6*(Rnz%wS6-ruyrr z0fCM$fE%Qk^fqEI5b_!?!)c&N&xjL!_ zIcB{`r@*t^>BFCz?SagMs0sJ4phuj?=HYFm80)Esv;$_#i3-Zeh1f zwQH z^;Y|Y<$Lg7REH#K9|#|5uUU8X@%8?F6sV9VzF0njJpJ=HM*?u;zSZNH*>u%iqF;Y& zEh3r;F(2<%&AV)1+rD`Hjyn6z%}pvg{K-SHd9AMf9o)$-_6Y|*Fgew z`hbVEn2!}Q2VE+REg;={7A+<^yLr7#*4m0jKS=$Ft}q&Mok5KR7W=7K0ZU9FwQz##lM>dT+nbn5I|)yJW-Ar@Pf2RkcOb5cr#(FTa~8D9`iodR7lnQl6HK-hNvITF4i-SHQP+h7y5Z)t3g z^~+Q*Du73#BFD6=aQUHNt0Fce5;vBN4zLmfoNSUxqryQ~-**dLPvR4iftzN6+Ai`O zy3>JvEw{Lv1{`(fU=OhOUs?un4at$(T-6l^@6+h_pkYA1sQ_3sf+uhc`lMCoJMgHf zOwpDDUE{;5ba~MeD3-B3pWBgWt*Al96S=mSNSk7a>@Soy_;8$x!u{ z!;yTsRsmibZDu@B}hqI zp57v^UzHymZcKelied2I)+rhI7#?gbNmeNrOoaN89T>$``&RrTw4;W=?OVfpKw&%%v#mu3;+W$2?&H0GyiOAmROgPV`;| zLIwkh;4gZEnYJFzo`qEa*8c@IEQX7f+@Y4|`BYD)+BBP19EYHJ&9H+-Zx>J@SXT=l#&a zs|e2$Lgw-ZX=Y~=3I9fO$6}kO6(V=0_sww z7Zjg=b^p&K?E$kL>CAw@qvq5gV9fi(4ozQGE#>>OMG;Tzq+-d36IJ_(dk~&yoXR8a z{VhrvQPB~ph_at}aCS^N{qp!Zql%%<=is8+N6M_YQGU3Qi`(Kx_W*unO77&_to@I% zd+4B2ro|d?VHG*+T;+4s(K-XPqUtmIn?c-_QrUlBl;?qs5Ur?9WGYcJG&9tNTA0vo zHEXv3Mp=xn?EP0|P z`sQZH{V5Gr%K0zV(x5vm11;+#HK23LgfuS=C3!V8n_h!Hi=_@!8)n9LVIDoqyZ)W#$!K)f~K$i7b|!ivX(MRkF3|bGsf~l5?QOR%Mbu zrMQDy5j>wR3!%+(DvS`)$$*TX#s)f4M(4po9CIissbTT}onHi9?WMuvQ6S;lZ9(rchEy)>a$L-`x zuwuzxtLUZ1Wsfclvx|%c{=I%voCN=)CvCAplTH9u5l-6s;XokLjq=~ExhSR@WiSZ7 z@0g4R-pyRSTlE$5ii+0c9g7A?(}%@4I|LEuYf%p<(Nbn7?h7R8$~n>QP2RtHbxde$ zT3c^VG+w^`xqC*8G;*Lx6MhJ+>0|OUgZUM=f(M7%*$wu!&J;C)I)1kRd|EnL%xTmj zl(nbr;odff6ZmoXw;b;#ctThtb0H=ry5o)JG@lacNWzcX0F%?ZBjpZ%U&XxbpBDK@ z?(~=pspMiy4ZYSmw8!`J97Pkm#b`;z3=a|32O5x7azsW9f1H2l3_Nqn<`b8!6MWuVyS`}abu!P>Aus#vlAa;DSr zk;f33AnC!Gln{_k-v9UJDCuT5T3XDnCfznI%h>k#=uIZ>Cj2 zfmLx1H}W&ogn%I5*u813c<>}wcP@7fcL$oM4PvWUBq6EfvD2Vy052~fypp@#*-$n2Qsj{jt9(dWaVMu0_*M z8Wr;bagpf%619i6_IYv}8hgb90ne_(%TsL}5^Ve+Z2E11(74vupd4EIbz86RR@S6XHTo2l)7CTg|Ioc*`&)8J$DT$kGHpSSwaYXmI1W>)PKlCi zC*5(cs?PoW9>uidfVO9I0r_5dl8figxZQ$?->>+rtYg1Z8!OCyv55UVNj z6|ktBTuu2?O5P@*&(q8iF=cWMS3ij5&+>iTqfHE?i{iO1g-U>v6iFgJj=3l$*=a#a z@w_89eO8*iQ_+wvChUE4`v;@N3HBa^Oro0HG?E$vI8Pag(n`7k(bS1Njf1>;to{ZpJ~uTWISM@`daV*%kMTd2=zwA|vRpH)Yrict>hI zv+>1z1%Jl(ZZN-be0zf;X%-n4i~!5uI-XX++*{n*U#_;k-fy;MkcSe9ZmF8X>bvPr z8${6;2uJH%I0YO6b6zp+cF#6Q|$hadV#iD8LnN~3MIO4o{h{y5rW=tO372>IQUvTLD zRM-O5Lb_>Fexd1vYFXKYa*R5S`o?~KnI5{$W8b=>W$r7MAKh;)CiKMus&AJ)V)d!j z@$!s{#nFQcG!p)?HMQKS1D?vth)Nxibo?kCQQZj${z)~uygDc%Evv-o;KT}uK==<4 zqcNpA1c)mWKti_A-0hK3H5(+&P?B=ER4l`(3vhI%pI@5j)%ic9cRutScIEzGW^d*iSZR! z5MR!rJhW+7ADo&WZN%|r+hY@U=ww%|rhE2;G9TtYs{82GIcX^7hMBT6VJqTj^m1w!+;CL-Vv&Qi9@?W1+ z-78FnY-{&`U)1a~UJW=+hX-&W5UsZZZ{e|rC6{!U&n_4rUm~vWJ`Mbn&aB6kk3pA^ z%a2+A(X+_6`>x?{TtaFWO6?W;H4-VK-gKY36K9v=Dg=VsA=6yDAQa57KojrWAzCu; zL}}E8Ys(`N7uP_>@p^cJ&8-jejEo`*-`q<`8tTDIiP9}5V~S?LmRm)pb2S5goqGsL+q~E@0 z4GPU7!b8-kL?&KXmZ=Yv_fH2|-WjmDZ`JTmzo~^vKdsq(Uaq7Zg0g; zlq;YXev9$j{i$?QK82B&av1V;E0DH@H=!F{Vht*w)w!_z)25N8e0q57^%&)S+1l;J zv}1aG`i9c}6KChu0ic-SfKSv8C^hu7>#eQ`UEKpQ7e))q@zL+EjKmybiCQ7WidiC$As?kI;WHRS-RUKLCIG3eM;2GJoN79xsfE=51ldnvtI-M zk?X1Ec1=A);c|x@z6y6<+N7QPd-WSB8%gdjFZ$oYzZS~?Jb|ATJz!w^oizX7qss~A z1f;unsm{s)22?AZ+|-?lBQ2U<3sybH2%Ke0qPjYxjrp@1bB3e;7ZbDvh3ahmpmN#M z{({ggWBJ3Wl%P9RKH?ue6d>MrWg(OW$;Nk~iB_C0R==|0RodV8v#I=I5#6PF{J@Z$ z>9`C$k2UwI)+(Eo!;Kh%VJ_OGevyif&Q>WKl|Oy}-y@^C9vz}B3>JT(E zhzOjwszVcbud&GgEy;W4+kmg7_TO2FSC4mJdfyo=f7B$r`X>71o!X9S>q+HS?-(q! z23fCfWst2Urk(#?{rYcU)i=0(03G(+QYCj55U{wy7)erlaXVQ=F2{}&iO(wx(<+|4 zF)6TOrsmI^Y`#`dB#J$HgNy#M{|&KmJMH+9Y8pC{vBIRCAhZHRBva2Au*&jb0jA>) zx|x|AZ^%nY0{j|>U3^YNSyI_wKPFAqZEP{Wvw}Fi3cvI0Gx76zjOH)edU9m>>v{DJ z2$A6bD&NF4IxeU7WxN_v{T1_38YVpY^{9*XsPmC|?S-KXshgfOP$fm+n;rMptLiEQ zkjna^W|CP`D9 zP*10_l8u_M0Z(+?mXN`&S@~6y6uAlM{3p-1eyLVC6p8yUcVL<`^cT)A@s$Y_luMec zXxG>rPDcAU-#4ViX||2tG12qB_KlCRHW2r>bT74FuyDh0ZHWq=8ME`7Yw*tl4t=TZ z7aSvI_x$g1LMTBvj z@S-Ju{ugtyqhi&sE$X&*D;t0HVKqHTrYd^S!Mv?(P(ymSlEO)9>qu)npD;Q?MU1 zh<|1GgG-TZs)Sq2hOjf_x5u)b@2#LRGn@h; z0+3W0dU%B6@0C$pukZY~M5)6(&GONPscV+s1Kz9nzdm=@3;&{d!-6;&lC_^})wXhz zq=5wQ%`+(cHjP9x90CWp0o2O0Ypam*8lw-@)*O6R@jhWyN%*pU=JMRlO=xv`?``|z z=N+CdPvUg;41FyjVh4jfUL|(6sYrACp^a-FSM)}8@A;+5ceF3ym6isX`?ojaJrY6q5grMjo^yFOHi?`7}OEPr?pd!PPAQt@vD!-3X!il zqJO#=Mvmztd{|AgtMBm<=_K)_ws#oHH>~|$l{>v}1X4yjJe$CN+q-U0nd35W8DW)q zNupQ!n2^!Bnjc^LRmmEWSs7_K9*l)9I>+bwO>%qP3CpHvcjaX+A7VNSqxRJ~;7|WR z33OtH#KNrO%l8vN#tUovYL#B4Yt*t+mCRfsI?Zfc-f@`Rk~lo-oAo(PR35kQ43^8H zN8X$VivjxH2r#50&4SbPPk@j#Q*BCr zEroZJP3oD!EP;D-5Ytabe|0>wIAY^^9rVwJrzq20U<~k~uA8n}@s)9LterfH_)zk= zn0(y>Ngtjtgu4@Zw7zV}`WNVMaN zB&+3BeZX0&v|as;e%B69-qK(v$}<_PrRC3xRzbw~ETqv~=f02TKY1DI)1@o*&AAnF z9!)IUr76X3*L~$VFGeZgi!z&NBxRJaV>1$S=&9ZP>O(rR483IbcTR3vaT&3KAD~TR z@vd3~ln`!{>av!K)t5j}4$Z)i>RGalx`T zW-KU`S!quZ4}^b!E@r?$%)vC_A!K1U9gU|+V#`LYKYT&+3^liY^Uu)gVg%}+pUMF5 zpFm^Y2gxrQCx+DRUa+;Dx@9SzXUoOV+Igqh=dm1*qA6$%G~)+V9Sn~J@EXDdjp0E| zz0bIR`X#xAd})`VauZK`Uma^lP4p~26D4#T1je|&?JwD(?>NzQe{k_UTT1=2Gfx7I zaUA8uc@~zgP5;E|mSCfz+7GSJaSsM4@&4D+RmU~;fA0Y*5=uxr>6Vlf5TqMnlz@OV z(jiFhD%}mEK~fkYEv=GDN{#Lm>4uH{?&tgZ?T`I=-)FmbXXkm&dCn8Q`1aJ~W`()A z(S-f}xaKW#@=4sQ-e%Iq>+L7-ARaj}p^ht!ZX1l_2UH%_vF~Ox0aCSNgrAp?Ovz8< z{NJ2m|Cat8o9{muS+$s^kxR_* zQ@(@9C|rg&`bktLmgKnNt~JW=Tcnh$Z`GvF#c=tip(6CW!ears zdg>Gf(*pqg_9%a|Kha8PPqk0l^C}MY)?DQv`N#C z?()J#zB&UvXI-a%faU_J3@5a4r50G6-(55y=n!$5y^f2F8 zFQPa>hp7y!Oks6^bq2rN)s2rzLJL7MbPg_y_EmvY%aea-MzZpDpM;G%QFOUW>}t8^ z44C>CTaxuikL2+yi~0f8QLz0`k0}r|5!?J82Q;E5n)4YFCoHFqv+_pbO%JXY&I;uO zg^3$E;ipRqtRLf_(F2cvjSb3Y`ch_RYt>Y!TjRWmudGBWw4F`NK}`wNk^9wtNGLxq@&?r zH3BBhzp?L)KCZm<+*R`2^TMHjv43*?WnhX*IBPhymfoW1ND3b{1U!L6XzR_od^DKb z{8dN4_RE8A#C72dsFdZl>++&>hmP$5n;h5S>a)j)2$ndLC_> zwOa_$#E459Y0-?@gY)S6v_SnHWX(-4Eynw^-z64 z&;+q{>hAC(ijFi6tg@UnwEBPyBrk)f^){VftQ`i9AuZL(N7_0XmJHU`BFKkk&SN(uV zORFQv0Z|wuZcHLXzoY;?mKoWLF&O!C6cQZx?xfXT_7#W&=H{Cxm$z5^JSzH$Ezt-tmh)>`=+jTB&IPMQG3fyDt6q{YWVpwz=F5(jA>#-sP}p zoqkJmIl>-#mK;iiO%O%o6St%Gi+)iAJW-D{)*nAI^W;LMxKFO0=vJ-*VMn4lx^bg>$iZJ>uxM z1SYAf5h}nny1?Hxxf+9gVlCYhfqu@8uqipe2tf|b(j>JzGLE$Qh=3#hQM<;}biyBH zWmbmwsDf8i`B*9y$9C@q%*lXjthzZqG;VuMhF&mg6+O&Hna8cnFP@7}SN|tbkBePX z33exCRY+7~83|d7O8)2pKiRj#o|}lO3@jN@0SYxEb<_hU#V&8E6T2VkymvpXrkMB} z#Q+!&PbpA6lY}tANDkSO;DfNXQ7<)o= z6wiJig=9|aedB%v)@0K>LhL1TAJqZCFFi1Di=E@bvP`W>TCyzA7+vf+D;#cdOm)#- zla`iB`?o%FXizKXa>T#~Z_R?uT-B;Ohd*p~o#NvRg|!H1Zr=#*8D!Y0lMfPfu~K)r z)~@LPEzDCc2)DlehiUH-p}ZP04Iy#AWI9Z`TPJ^v-zLx*zA&UO3*8rcjWi9%J(=)pRaE5Uth|03Rpi_be_l0W`1iza3(~Sv=LR`Pdrqc{ib2A_O`15{j${ zPW4Xs_XE?MqtlV0!EDyPKkihbZg5Xl4%$4AvBua0E%jNG7wWa($Vt=?3R1tFghKVo z^pV8jJ1{KU2y+~s8N)_ri!+~#2es-7ka%>N@u+5p`xBoBi5a5_%K&irM6!QNY}`vb zLSDdHWM_l$P_pRdzP;ksSI##@p(k5Up;)%0YyR?W9V)X9x(xXk_gbDw>n!^YXcgJf>ob zAX1FaJGHML<2TIF`Uzg1?rdn_={Y`}8~?3welrC5-JK$D!C7cKc{UyOSQK-c?jk#@ zv$Y8syaV4qx_z-BEF~`EJ+6m~RB^aew*F);iZd2xAR!ZO4j8$tzfiwgvckY_g^X2{ zSdd4H@*ONBo8C%21>+C4NqWoJ+&}_@=6h*gBT=Eh41ZV`X#b0P^UZbZZ-5wAJ+dC>f`UdaY!h@DOt+=Uc$}JI6izd+kF$%H zMy9xAy~IE$*WZ$d%M8;Cyq+gt6}NaWwx<7sK~2J@p}vA2@EK)^XG>MyBSK3f1j`3^ zi#+-@2=>X4$VT(KqOM_=^YVnGD8UU9SLwA<>&{-h_2+)VrJmdp3ufPus6bE~D(}{^ zkPdhwhhuje?&cbGY?B12z55FZ$RK)43MyS&!KC`0JSm0VzrkS*UpKe&Te;Hiv60HY z9aRqyx}9xKHS{?3d%{_Tj|+>=fyD1`9q}{kKLfj)A1Aj{R&nYjI1ZJc8!D~CvA_Ln zm1~dDJ?TpA3Y7+0Y@~NacetxW6b;;_>w?RhgvK~!I;@dBF(k6JD&`ROB52d8Tt>-#Zzj zyo8*?HJ{xwE}@uaVu8DtcV_Mh^-4jtJQ=A54fP5z*55tS* z-v_zx3dEz)FRlOfCumO*h$MPqX73NX6AnEN9Pdrt@0hj@x+UDgeZl=FNrxwx;W2hH zzNq5*Icx+?WQFu9Pm+IDkTS9gqP%O&^Liru5*idRBZu zwJN}G@}Tw$Yvd*h-<0QRK1{VU`>yQI{OZfq#fL+ie&RT4T>JAb&**9=u1<`*eC~g6 zp|rb|E3-a1L(IK4h`eRXX6w@trpq+n&!h5Q!aAp|LIw%1JJ|gxWONC59Qqt0vi)Uq z<1bcmP@e#KW8l)3#ZOFR7C=y~-mw`voFK(#9I)ThWWUc!_cWD7t@u>kn8xAy#pUXW zsc~gN6_4w*gMUgJ$c7$Yta2oWs1*;Md*2p^BK5=nyX}!}>Wa6GmG(`P7Yx~g(5k+u zCgC6LhAMZ^s=aHEmi>#q@dVcL%M2=A+b$3qiFg$OAFvP|A}OWw=KlrpY?Tp{d30&? z7mE}97~3|iQ7R~d8T)LY4tshxNF1lVYBPGodwPc3TL$ez{<&iEMIy%R=U&#(n|KVaQX=7Hg;#PD8ApCZ-KgE<%93tH z6%giZE$qr*mAx1)_lyN#x!LlgcCWpau1=oSrh9SskI{#gDRuGaK)f!LzTmuT>=Brz+%xIiwt4#&9xsx{mq z<)16#TjxEnb}~{l$zRza)6YA%=n)K0y2N4C@Y3tE2ybkVn08N2|%^{vNO2iySqvRp-X0C&Mimxu%=I zh+;_yW2Gg|*h56aB;H~ulcE~_uX}t^v>kw8zSZTRp9hdj8xr z=62hMT#ydH2SXc;>?i4~DS>%?@+nIis7t}_Wtp7bylG*BaZS%O?z|6|3J`uh*AMjm zhC)d3Zl5PT=s%v!wjp=X9jt^f%n*uOH8c>{*`L!}UZONhd=>{cpT8+iI3enGAM$+C z-y#52yo7)MA)9(x$tm){SUujq0k(RWFGs4Nu?Xm5ayja$8d{XvHAwBD%AX^}Uzolj zi9hH&z0o}<`91v`1WK|He}DSY(&S=st>UC1>b$0R!VX(r1PIB++PD6Fo7+VrYo)1B6P5F;0?3Sw5YfPyF(sg3^ zr%}g1mgtXsKlkJ=V^0?bVeBW6fVWj%pB1WV?rr(ryL(%NH19e{z$FP zzT)c}JMp-J_F^A&eb+83>rAg|9_OQ&{}s-R-;GEu=TdRH@o8P%{h|ZWzBwr?un-Hm(%rh&T^(-UJG8`M2affP&!sAK zkj626WI7KW@pyT2@Bh{5>Jr}O-Ez<4SzvWJe|I-cdT75nKJgaun z`wL1vqo7xON~1T^p`kl=SD!~+C|3dDB4Wa-^B;51Mo4J^{>Z0>?YUU zCYPyZ_i6SRIZ%LL^-~}Vp@)1v-!YSKP&u~SlkuR_Mz$4j7J|n5UVeF%a1=20>5VnS z_B27*OYR(V$OoG+=&t<8WjUDKWG3{da2YM)>C(GZP3C%jsJvAzNPgtHkMir#OKiVE zYV6$5?VS6(K!Cfp@G3vg5v6Mdl$kX-2Q42X!={#BJu2w8#2TmWJt2{aAP5SWz=!Um zb{?>w8VCboetS|7$bENJ1zAw{fg({!ipa^K%jXZI2Z1cdhs^o5Mdr9S*O-Cm>%l{* zXm69FRsFoaSNB5gci*r!dq7@he{?1Nl+6=AGWeDr);9HWC`+!l$=p@)ju06WXKpYE z#frjK53CKHrCv6cz|&Exw41-J={%=0#vCMt9|N^)32Z^H$kR218#lgo8d}*kDL{KN zmR#vWEWlkop+CNtqRdU>N8Zvr%L#-2Lv3FK>luBt?b_I1phA&kvDPSeB3`KDB^~pp zvcP@adVk@XFh?s?H9~CXmC7fvexVnam@EJF{Z-=7pK{%PX0}otAw{=Xxg+S9raV_q zEYQUrj<0zy*okt(b)v`L!aW1e=Z@?-!cnZ6@6O9zt-Bgb&L>cK{n96>Q-MVfDZ#1EtDksKJKb0? zdHN0hy7UdVAiep*VXy|TlkiHud{6(DRm<}n|+|Pe@e0V49)CT(*jR-Vr z&s{gJai3hD#et}P&b1I82OjiTOvU*rob&R?!`+}gE3&b{?f1qbEyXjP#K8~64B*L`6{y)b4sqO$8wH8LaT26fJx8DQqACbgUCHM3bwH3He z^J;Zo?ICa<)$j!cw(7`DOeme^*duv+*Vcdcq#jrrjXFHHmjhc3V>_9V?C-!6Ahq#+ zk1kya-D<;POTrYe;52hr8S##NlN5+iEKK+?@Y)2k;|!r?al(PPNUIF1(Sw_qKEdR7 zDM;c^TSh7BqCjj|pFyie^S>lkDhoyyU+PJWcJ*A!K&GKGo>?2zIlvri!xe%D8JiNr zrLVdMH|Ue(Cpb+CS+^8h1lI6?y|awR;k-XbZ3SLe$Tm7FmRYa(f>qf|HsUaxuFvrY z>L#Y7>>(?b&?MTbr(qp>wOXY{@%RX%EzP zmdxCK{IP!!IkkPKeu~u?{`XD_n^u@J*VWGJZ*if!)8bX=<~QCt zYKg1>VNSowhQLI~ibqIXN>W6p-dMJmQd@wCt(0IGmYbp%2SQr{Qg_vKT=??2_7LD@ zN0u$V$BCP1bo&C~&5c)mBkcq7pOg`|AFVl{TSMwbb-qm3O+T0%8vh}i9!}&p;1-Vx zvPQCNt=lDi6_&^HsmZplXdjbn4TpiJhyr)vo(0+uArU2h5OmAmM}joNH3|PFZOB^FOS z;xPRa+Of)GO!=$sgvTjC-g9f$7Qt#|-PX8kHG*dEI1#+u`k^qvzCISSC$X^s2S5;K zHh6a}y+~A>GL?USRWt5CEXV$gF%xae15?FvzEYhTdmJzOqhv}SYLvd7qi9v~D1+8> zY5MV9{E~9u2gMi;0gHS+WYQ5U-vOBvRjw1zu)#p+uXxG&vf&p6hvL4m?VgKCu8 zoPtL^lDPmu8p2c^uk_yklj;dSkoZ#qQrCkbMhjLD63v`o-%WB@azeqsdY4piKufza zC4wdTmo+8_2c-`-BC3$GiqJd_@fTSFbQ$OwZq5okh$T7}@9k?grn~Tu#LfA7weOmw zs`d=ZQeLc1GZWiny-mcN4t#H<+^7xR`eehQfl1J^`~8*_EJ~G1fgXTj_J8KjUIlu! zWd;i1c1s=|?#Kc&DCi%;bl+e+3PIJU<5LxC2z%`<2imW->iPxdt#C3Eqa?d@z%A|n znTI^@apx(g%ragmp5)Z2_GOI>?PZQ+A{5bK&BPmcPYhKCpIQ)LI*~Ef>IE@$$MoW~ z=h6g>SLeBc`?vqQz}+9U6sb{xe0{sxe3IaLl8vNb7-0@)eVQS~&Qkey1N^2KyVIEp zd!5$SY4gdMi^t^F#3;Z1Uh&4rRv29BA#E&fNeA)MV@!9^DbfGibUbi_hVITL1zqr{ z**qTcT7348DlL@8zjzp{Wu{sX$xJ))SW$4rl}+Z+s>*uon!=-d1n{@Sn3lKy^9TX0 wen=fBIsRvj5^Qmm#(~5CKf9Fw-k?-y0D=0AH!ZwO0|8&EidqU)a&LqF4?ULthX4Qo delta 74984 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 BbBq80 diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index 067611459a..ce814e20d1 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -258,6 +258,8 @@ music: musicplayer.png play: 56,0,25,25 next: 84,0,25,25 prev: 112,0,25,25 + fastforward: 140,0,25,25 + slowmo: 168,0,25,25 scrollbar: buttons.png down_arrow: 16,112,16,16 diff --git a/mods/d2k/chrome/ingame-player.yaml b/mods/d2k/chrome/ingame-player.yaml new file mode 100644 index 0000000000..1de56a6f78 --- /dev/null +++ b/mods/d2k/chrome/ingame-player.yaml @@ -0,0 +1,104 @@ +Container@PLAYER_WIDGETS: + Children: + LogicTicker@SIDEBAR_TICKER: + Button@INGAME_DIPLOMACY_BUTTON: + X:162 + Y:0 + Width:160 + Height:25 + Text:Diplomacy (F1) + Font:Bold + Key: f1 + Button@CHEATS_BUTTON: + X:324 + Y:0 + Width:160 + Height:25 + Text:Cheats (F2) + Visible:false + Font:Bold + Key: f2 + Button@OBJECTIVES_BUTTON: + X:486 + Y:0 + Width:160 + Height:25 + Text:Objectives (F3) + Visible:false + Font:Bold + Key: f3 + SlidingContainer@INGAME_RADAR_BIN: + X:WINDOW_RIGHT-215 + Y:0 + OpenOffset:0,29 + ClosedOffset:0,-166 + AnimationLength:15 + Children: + Image@RADAR_BIN_BG: + ImageName:radar + Radar@RADAR_MINIMAP: + WorldInteractionController:INTERACTION_CONTROLLER + X:9 + Width:192 + Height:192 + ResourceBar@POWERBAR: + X:42 + Y:205 + Width:138 + Height:5 + TooltipContainer:TOOLTIP_CONTAINER + IndicatorImage:power-indicator + Orientation:Horizontal + Style:Bevelled + MoneyBin@INGAME_MONEY_BIN: + X:WINDOW_RIGHT - WIDTH + Y:0 + Width:320 + Height: 32 + Children: + OrderButton@SELL: + Logic:OrderButtonsChromeLogic + X:3 + Y:0 + Width:30 + Height:30 + Image:sell + Description:Sell + LongDesc:Sell buildings, reclaiming a \nproportion of their build cost + OrderButton@POWER_DOWN: + Logic:OrderButtonsChromeLogic + X:39 + Y:0 + Width:30 + Height:30 + Image:power + Description:Powerdown + LongDesc:Disable unneeded structures so their \npower can be used elsewhere + OrderButton@REPAIR: + Logic:OrderButtonsChromeLogic + X:75 + Y:0 + Width:30 + Height:30 + Image:repair + Description:Repair + LongDesc:Repair damaged buildings + SupportPowerBin@INGAME_POWERS_BIN: + X:0 + Y:25 + IconWidth: 60 + IconHeight: 48 + ReadyText: READY + HoldText: ON HOLD + BuildPalette@INGAME_BUILD_PALETTE: + X:WINDOW_RIGHT - 250 + Y:280 + Width:238 + Height:500 + ReadyText:@ready@ + HoldText:@on-hold@ + RequiresText:@requires@ + IconWidth: 60 + IconHeight: 48 + Columns: 3 + Rows: 4 \ No newline at end of file diff --git a/mods/d2k/chrome/ingame.yaml b/mods/d2k/chrome/ingame.yaml index 191fa3280c..a64e31daea 100644 --- a/mods/d2k/chrome/ingame.yaml +++ b/mods/d2k/chrome/ingame.yaml @@ -77,138 +77,3 @@ Container@INGAME_ROOT: Width:200 Height:200 TooltipContainer@TOOLTIP_CONTAINER: - -Container@PLAYER_WIDGETS: - Children: - LogicTicker@SIDEBAR_TICKER: - Button@INGAME_DIPLOMACY_BUTTON: - X:162 - Y:0 - Width:160 - Height:25 - Text:Diplomacy (F1) - Font:Bold - Key: f1 - Button@CHEATS_BUTTON: - X:324 - Y:0 - Width:160 - Height:25 - Text:Cheats (F2) - Visible:false - Font:Bold - Key: f2 - Button@OBJECTIVES_BUTTON: - X:486 - Y:0 - Width:160 - Height:25 - Text:Objectives (F3) - Visible:false - Font:Bold - Key: f3 - SlidingContainer@INGAME_RADAR_BIN: - X:WINDOW_RIGHT-215 - Y:0 - OpenOffset:0,29 - ClosedOffset:0,-166 - AnimationLength:15 - Children: - Image@RADAR_BIN_BG: - ImageName:radar - Radar@RADAR_MINIMAP: - WorldInteractionController:INTERACTION_CONTROLLER - X:9 - Width:192 - Height:192 - ResourceBar@POWERBAR: - X:42 - Y:205 - Width:138 - Height:5 - TooltipContainer:TOOLTIP_CONTAINER - IndicatorImage:power-indicator - Orientation:Horizontal - Style:Bevelled - MoneyBin@INGAME_MONEY_BIN: - X:WINDOW_RIGHT - WIDTH - Y:0 - Width:320 - Height: 32 - Children: - OrderButton@SELL: - Logic:OrderButtonsChromeLogic - X:3 - Y:0 - Width:30 - Height:30 - Image:sell - Description:Sell - LongDesc:Sell buildings, reclaiming a \nproportion of their build cost - OrderButton@POWER_DOWN: - Logic:OrderButtonsChromeLogic - X:39 - Y:0 - Width:30 - Height:30 - Image:power - Description:Powerdown - LongDesc:Disable unneeded structures so their \npower can be used elsewhere - OrderButton@REPAIR: - Logic:OrderButtonsChromeLogic - X:75 - Y:0 - Width:30 - Height:30 - Image:repair - Description:Repair - LongDesc:Repair damaged buildings - SupportPowerBin@INGAME_POWERS_BIN: - X:0 - Y:25 - IconWidth: 60 - IconHeight: 48 - ReadyText: READY - HoldText: ON HOLD - BuildPalette@INGAME_BUILD_PALETTE: - X:WINDOW_RIGHT - 250 - Y:280 - Width:238 - Height:500 - ReadyText:@ready@ - HoldText:@on-hold@ - RequiresText:@requires@ - IconWidth: 60 - IconHeight: 48 - Columns: 3 - Rows: 4 - -Container@OBSERVER_WIDGETS: - Children: - Button@INGAME_STATS_BUTTON: - X:162 - Y:0 - Width:160 - Height:25 - Text:Statistics (F1) - Font:Bold - Key:f1 - Background@RADAR_BG: - X:WINDOW_RIGHT-255 - Y:5 - Width:250 - Height:250 - Children: - Radar@INGAME_RADAR: - X:10 - Y:10 - Width:PARENT_RIGHT-19 - Height:PARENT_BOTTOM-19 - WorldInteractionController:INTERACTION_CONTROLLER - DropDownButton@SHROUD_SELECTOR: - Logic:ObserverShroudSelectorLogic - X:WINDOW_RIGHT-250 - Y:260 - Width:240 - Height:25 - Font:Bold diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index 0f03ded15d..39a4603872 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -62,7 +62,9 @@ ChromeLayout: mods/ra/chrome/ingame-diplomacy.yaml mods/ra/chrome/ingame-fmvplayer.yaml mods/ra/chrome/ingame-menu.yaml + mods/ra/chrome/ingame-observer.yaml mods/ra/chrome/ingame-observerstats.yaml + mods/d2k/chrome/ingame-player.yaml mods/d2k/chrome/mainmenu.yaml mods/ra/chrome/settings.yaml mods/ra/chrome/credits.yaml diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index de1938643b..fed9f093d4 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -120,7 +120,7 @@ tabs-normal: tabs.png soviet-Helicopter: 54,160,27,41 soviet-Ship: 134,200,27,41 -# Used for the menu +# Used for the menu dialog: dialog.png background: 0,0,480,480 border-r: 489,0,9,192 @@ -208,6 +208,8 @@ music: musicplayer.png play: 56,0,25,25 next: 84,0,25,25 prev: 112,0,25,25 + fastforward: 140,0,25,25 + slowmo: 168,0,25,25 scrollbar: buttons.png down_arrow: 16,112,16,16 diff --git a/mods/ra/chrome/ingame-observer.yaml b/mods/ra/chrome/ingame-observer.yaml new file mode 100644 index 0000000000..8d6cd4fc45 --- /dev/null +++ b/mods/ra/chrome/ingame-observer.yaml @@ -0,0 +1,99 @@ +Container@OBSERVER_WIDGETS: + Children: + Button@INGAME_STATS_BUTTON: + X:162 + Y:0 + Width:160 + Height:25 + Text:Statistics (F1) + Font:Bold + Key:f1 + Background@RADAR_BG: + X:WINDOW_RIGHT-255 + Y:5 + Width:250 + Height:250 + Children: + Radar@INGAME_RADAR: + X:10 + Y:10 + Width:PARENT_RIGHT-19 + Height:PARENT_BOTTOM-19 + WorldInteractionController:INTERACTION_CONTROLLER + Background@OBSERVER_CONTROL_BG: + X:WINDOW_RIGHT-255 + Y:260 + Width:250 + Height:55 + Children: + DropDownButton@SHROUD_SELECTOR: + Logic:ObserverShroudSelectorLogic + X:15 + Y:15 + Width:220 + Height:25 + Font:Bold + Container@REPLAY_PLAYER: + Logic:ReplayControlBarLogic + X:PARENT_RIGHT/2 - 80 + Y:35 + Width:160 + Height:35 + Visible:false + Children: + Button@BUTTON_PAUSE: + X:15 + Y:15 + Width:25 + Height:25 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_PAUSE: + X:0 + Y:0 + Width:25 + Height:25 + ImageCollection:music + ImageName:pause + Button@BUTTON_SLOW: + X:50 + Y:15 + Width:25 + Height:25 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_SLOW: + X:4 + Y:0 + Width:25 + Height:25 + ImageCollection:music + ImageName:slowmo + Button@BUTTON_NORMALSPEED: + X:85 + Y:15 + Width:25 + Height:25 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_PLAY: + X:0 + Y:0 + Width:25 + Height:25 + ImageCollection:music + ImageName:play + Button@BUTTON_FASTFORWARD: + X:120 + Y:15 + Width:25 + Height:25 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_FASTFORWARD: + X:4 + Y:0 + Width:25 + Height:25 + ImageCollection:music + ImageName:fastforward diff --git a/mods/ra/chrome/ingame-player.yaml b/mods/ra/chrome/ingame-player.yaml new file mode 100644 index 0000000000..e8619b72c3 --- /dev/null +++ b/mods/ra/chrome/ingame-player.yaml @@ -0,0 +1,99 @@ +Container@PLAYER_WIDGETS: + Children: + LogicTicker@SIDEBAR_TICKER: + Button@INGAME_DIPLOMACY_BUTTON: + X:162 + Y:0 + Width:160 + Height:25 + Text:Diplomacy (F1) + Font:Bold + Key: f1 + Button@CHEATS_BUTTON: + X:324 + Y:0 + Width:160 + Height:25 + Text:Cheats (F2) + Visible:false + Font:Bold + Key: f2 + Button@OBJECTIVES_BUTTON: + X:486 + Y:0 + Width:160 + Height:25 + Text:Objectives (F3) + Visible:false + Font:Bold + Key: f3 + SlidingContainer@INGAME_RADAR_BIN: + X:WINDOW_RIGHT-215 + Y:0 + OpenOffset:0,29 + ClosedOffset:0,-166 + AnimationLength:15 + Children: + Image@RADAR_BIN_BG: + ImageName:radar + Radar@RADAR_MINIMAP: + WorldInteractionController:INTERACTION_CONTROLLER + X:9 + Width:192 + Height:192 + ResourceBar@POWERBAR: + X:42 + Y:205 + Width:138 + Height:5 + TooltipContainer:TOOLTIP_CONTAINER + IndicatorImage:power-indicator + Orientation:Horizontal + Style:Bevelled + MoneyBin@INGAME_MONEY_BIN: + X:WINDOW_RIGHT - WIDTH + Y:0 + Width:320 + Height: 32 + Children: + OrderButton@SELL: + Logic:OrderButtonsChromeLogic + X:3 + Y:0 + Width:30 + Height:30 + Image:sell + Description:Sell + LongDesc:Sell buildings, reclaiming a \nproportion of their build cost + OrderButton@POWER_DOWN: + Logic:OrderButtonsChromeLogic + X:39 + Y:0 + Width:30 + Height:30 + Image:power + Description:Powerdown + LongDesc:Disable unneeded structures so their \npower can be used elsewhere + OrderButton@REPAIR: + Logic:OrderButtonsChromeLogic + X:75 + Y:0 + Width:30 + Height:30 + Image:repair + Description:Repair + LongDesc:Repair damaged buildings + SupportPowerBin@INGAME_POWERS_BIN: + X:0 + Y:25 + ReadyText: @ready@ + HoldText: @on-hold@ + BuildPalette@INGAME_BUILD_PALETTE: + X:WINDOW_RIGHT - 250 + Y:280 + Width:250 + Height:500 + ReadyText: @ready@ + HoldText: @on-hold@ + RequiresText: @requires@ + diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml index c16e160d3e..5e7a769610 100644 --- a/mods/ra/chrome/ingame.yaml +++ b/mods/ra/chrome/ingame.yaml @@ -77,132 +77,3 @@ Container@INGAME_ROOT: Width:200 Height:200 TooltipContainer@TOOLTIP_CONTAINER: - -Container@PLAYER_WIDGETS: - Children: - LogicTicker@SIDEBAR_TICKER: - Button@INGAME_DIPLOMACY_BUTTON: - X:162 - Y:0 - Width:160 - Height:25 - Text:Diplomacy (F1) - Font:Bold - Key: f1 - Button@CHEATS_BUTTON: - X:324 - Y:0 - Width:160 - Height:25 - Text:Cheats (F2) - Visible:false - Font:Bold - Key: f2 - Button@OBJECTIVES_BUTTON: - X:486 - Y:0 - Width:160 - Height:25 - Text:Objectives (F3) - Visible:false - Font:Bold - Key: f3 - SlidingContainer@INGAME_RADAR_BIN: - X:WINDOW_RIGHT-215 - Y:0 - OpenOffset:0,29 - ClosedOffset:0,-166 - AnimationLength:15 - Children: - Image@RADAR_BIN_BG: - ImageName:radar - Radar@RADAR_MINIMAP: - WorldInteractionController:INTERACTION_CONTROLLER - X:9 - Width:192 - Height:192 - ResourceBar@POWERBAR: - X:42 - Y:205 - Width:138 - Height:5 - TooltipContainer:TOOLTIP_CONTAINER - IndicatorImage:power-indicator - Orientation:Horizontal - Style:Bevelled - MoneyBin@INGAME_MONEY_BIN: - X:WINDOW_RIGHT - WIDTH - Y:0 - Width:320 - Height: 32 - Children: - OrderButton@SELL: - Logic:OrderButtonsChromeLogic - X:3 - Y:0 - Width:30 - Height:30 - Image:sell - Description:Sell - LongDesc:Sell buildings, reclaiming a \nproportion of their build cost - OrderButton@POWER_DOWN: - Logic:OrderButtonsChromeLogic - X:39 - Y:0 - Width:30 - Height:30 - Image:power - Description:Powerdown - LongDesc:Disable unneeded structures so their \npower can be used elsewhere - OrderButton@REPAIR: - Logic:OrderButtonsChromeLogic - X:75 - Y:0 - Width:30 - Height:30 - Image:repair - Description:Repair - LongDesc:Repair damaged buildings - SupportPowerBin@INGAME_POWERS_BIN: - X:0 - Y:25 - ReadyText: @ready@ - HoldText: @on-hold@ - BuildPalette@INGAME_BUILD_PALETTE: - X:WINDOW_RIGHT - 250 - Y:280 - Width:250 - Height:500 - ReadyText: @ready@ - HoldText: @on-hold@ - RequiresText: @requires@ - -Container@OBSERVER_WIDGETS: - Children: - Button@INGAME_STATS_BUTTON: - X:162 - Y:0 - Width:160 - Height:25 - Text:Statistics (F1) - Font:Bold - Key:f1 - Background@RADAR_BG: - X:WINDOW_RIGHT-255 - Y:5 - Width:250 - Height:250 - Children: - Radar@INGAME_RADAR: - X:10 - Y:10 - Width:PARENT_RIGHT-19 - Height:PARENT_BOTTOM-19 - WorldInteractionController:INTERACTION_CONTROLLER - DropDownButton@SHROUD_SELECTOR: - Logic:ObserverShroudSelectorLogic - X:WINDOW_RIGHT-250 - Y:260 - Width:240 - Height:25 - Font:Bold diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index 2ece64366a..fad79b75dd 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -76,7 +76,9 @@ ChromeLayout: mods/ra/chrome/ingame-fmvplayer.yaml mods/ra/chrome/ingame-menu.yaml mods/ra/chrome/ingame-objectives.yaml + mods/ra/chrome/ingame-observer.yaml mods/ra/chrome/ingame-observerstats.yaml + mods/ra/chrome/ingame-player.yaml mods/ra/chrome/mainmenu.yaml mods/ra/chrome/settings.yaml mods/ra/chrome/credits.yaml diff --git a/mods/ra/uibits/musicplayer.png b/mods/ra/uibits/musicplayer.png index 79d5c60dadc6594f1c93a76ee891812c2950e62f..f34ea2850a47b62e7a6bd4a4f1a8d8fc56ab4b02 100644 GIT binary patch delta 521 zcmV+k0`~pm7or4^B!2;OQb$4qH^)s=00009a7bBm000XT000XT0n*)m`~Uy}$4Nv% zRCr$P+S`(XFbsfU5BUD?%c$%IjCR?T$5|8A6NNf4S+(cKOJ000000001dp=qVI z4S(g%QLpo7aSW|77$@&(D0S%N*}<{@Rq9isIW1z6hMQeWgT0R(yts-DH;naeYF%s7to^|@Rw^Y-<6?RL$!iU}a1 z$AIclJX^^jB-ZJ4nv4E$Sca{B(~vYw1Z|iA5_$|M&*Jfnz2==OjG@IJ>9gLxi|&9K z6F`CY0P-jvkAIjY-Z^i}{bYNv8o1Z}`Fu|H$ASr<0(X+vOWpa`rseCvJRuCj(CrtV zPgQqT;U+ggTL-U4%o4AhI`QfXKwiUeTI}**P#+G;_WmXw73yvN2k_3k29j6N2-!ci zYRR>=@cta~8Xm8{)zGqiJRW1aqkt7ahUZ%wmA8b6Uhq(Oj_{xi%|S`CH>W zlLP2tx+(RukjwK)$Iu$1=eY&|00000000000000000000*s348^yMkdPW?In0000< LMNUMnLIPldMtJuR delta 3037 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 diff --git a/mods/ts/chrome.yaml b/mods/ts/chrome.yaml index 48b3f4257c..163bbe615e 100644 --- a/mods/ts/chrome.yaml +++ b/mods/ts/chrome.yaml @@ -202,6 +202,8 @@ music: musicplayer.png play: 56,0,25,25 next: 84,0,25,25 prev: 112,0,25,25 + fastforward: 140,0,25,25 + slowmo: 168,0,25,25 scrollbar: buttons.png down_arrow: 16,112,16,16 diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index 07c4d5f72f..d5947892af 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -101,7 +101,9 @@ ChromeLayout: mods/ra/chrome/ingame-fmvplayer.yaml mods/ra/chrome/ingame-menu.yaml mods/ra/chrome/ingame-objectives.yaml + mods/ra/chrome/ingame-observer.yaml mods/ra/chrome/ingame-observerstats.yaml + mods/ra/chrome/ingame-player.yaml mods/ra/chrome/mainmenu.yaml mods/ra/chrome/settings.yaml mods/ra/chrome/credits.yaml From 212cf93ca40f8a1077b6b56e56da2d9a7afe1066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Mon, 17 Feb 2014 10:41:04 +0100 Subject: [PATCH 3/9] separate World and Ui LastTickTime --- OpenRA.Game/Game.cs | 25 +++++++++++++++---------- OpenRA.Game/Widgets/Widget.cs | 2 ++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 64f4db447e..c3381a9f66 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -163,17 +163,24 @@ namespace OpenRA static void TickInner(OrderManager orderManager) { - var t = Environment.TickCount; - var dt = t - orderManager.LastTickTime; + var tick = Environment.TickCount; + + var uiTickDelta = tick - Ui.LastTickTime; + if (uiTickDelta >= Timestep) + { + Ui.LastTickTime += Timestep; + Ui.Tick(); + cursorFrame += 0.5f; + } + var world = orderManager.world; - var timestep = world == null ? Timestep : world.Timestep; - if (timestep == 0) - return; - if (dt >= timestep) + var worldTimestep = world == null ? Timestep : world.Timestep; + var worldTickDelta = tick - orderManager.LastTickTime; + if (worldTimestep != 0 && worldTickDelta >= worldTimestep) using (new PerfSample("tick_time")) { - orderManager.LastTickTime += timestep; - Ui.Tick(); + orderManager.LastTickTime += worldTimestep; + if (orderManager.GameStarted) ++Viewport.TicksSinceLastMove; @@ -208,8 +215,6 @@ namespace OpenRA orderManager.LastTickTime = Environment.TickCount; Sync.CheckSyncUnchanged(world, () => world.TickRender(worldRenderer)); - - cursorFrame += 0.5f; } } } diff --git a/OpenRA.Game/Widgets/Widget.cs b/OpenRA.Game/Widgets/Widget.cs index b66990fb39..ab365f8af8 100644 --- a/OpenRA.Game/Widgets/Widget.cs +++ b/OpenRA.Game/Widgets/Widget.cs @@ -21,6 +21,8 @@ namespace OpenRA.Widgets { public static Widget Root = new ContainerWidget(); + public static int LastTickTime = Environment.TickCount; + static Stack WindowList = new Stack(); public static Widget MouseFocusWidget; From 3b78d6f3434dbe3929f268589c7a71a8920292b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Mon, 17 Feb 2014 11:07:09 +0100 Subject: [PATCH 4/9] use relative tick time intervals --- OpenRA.Game/Game.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index c3381a9f66..f630635dfe 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -179,7 +179,7 @@ namespace OpenRA if (worldTimestep != 0 && worldTickDelta >= worldTimestep) using (new PerfSample("tick_time")) { - orderManager.LastTickTime += worldTimestep; + orderManager.LastTickTime += (worldTickDelta / worldTimestep) * worldTimestep; if (orderManager.GameStarted) ++Viewport.TicksSinceLastMove; From 0d6517ec25f228a49df7e6106070d67e7dcd431f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Mon, 17 Feb 2014 11:23:14 +0100 Subject: [PATCH 5/9] keep the catch up for small delays and truncate larger ones --- OpenRA.Game/Game.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index f630635dfe..f73ab66f84 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -74,6 +74,8 @@ namespace OpenRA public static int NetFrameNumber { get { return orderManager.NetFrameNumber; } } public static int LocalTick { get { return orderManager.LocalFrameNumber; } } public const int NetTickScale = 3; // 120 ms net tick for 40 ms local tick + public const int MinTick = 1; + public const int MaxTick = 10; public const int Timestep = 40; public static event Action ConnectionStateChanged = _ => { }; @@ -175,11 +177,13 @@ namespace OpenRA var world = orderManager.world; var worldTimestep = world == null ? Timestep : world.Timestep; - var worldTickDelta = tick - orderManager.LastTickTime; + var worldTickDelta = (tick - orderManager.LastTickTime); if (worldTimestep != 0 && worldTickDelta >= worldTimestep) using (new PerfSample("tick_time")) { - orderManager.LastTickTime += (worldTickDelta / worldTimestep) * worldTimestep; + var relativeTickDelta = (worldTickDelta / worldTimestep) * worldTimestep; + var tickIntervall = relativeTickDelta > MinTick && relativeTickDelta < MaxTick ? MinTick : relativeTickDelta; + orderManager.LastTickTime += tickIntervall; if (orderManager.GameStarted) ++Viewport.TicksSinceLastMove; From c21b27cddba8d77f12e5de3b183b7e4e734e0d03 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 13 Mar 2014 09:40:41 +1300 Subject: [PATCH 6/9] Add some more robustness against UI-introduced desyncs. --- OpenRA.Game/Game.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index f73ab66f84..c5de620cbc 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -167,15 +167,15 @@ namespace OpenRA { var tick = Environment.TickCount; + var world = orderManager.world; var uiTickDelta = tick - Ui.LastTickTime; if (uiTickDelta >= Timestep) { Ui.LastTickTime += Timestep; - Ui.Tick(); + Sync.CheckSyncUnchanged(world, Ui.Tick); cursorFrame += 0.5f; } - var world = orderManager.world; var worldTimestep = world == null ? Timestep : world.Timestep; var worldTickDelta = (tick - orderManager.LastTickTime); if (worldTimestep != 0 && worldTickDelta >= worldTimestep) From 45ad52f737f1409ff466550e9fe41e1b82fe03e5 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 13 Mar 2014 10:08:44 +1300 Subject: [PATCH 7/9] Adjust C&C replay UI. --- .../Widgets/Logic/ReplayControlBarLogic.cs | 4 +- mods/cnc/chrome/ingame.yaml | 145 +++++++++--------- 2 files changed, 71 insertions(+), 78 deletions(-) diff --git a/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs index 179ecc6995..a2530d9302 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/ReplayControlBarLogic.cs @@ -22,9 +22,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic { if (world.IsReplay) { - var container = widget.Get("REPLAY_PLAYER"); + var container = widget.Get("REPLAY_PLAYER"); - var background = widget.Parent.GetOrNull("OBSERVER_CONTROL_BG"); + var background = widget.Parent.GetOrNull("OBSERVER_CONTROL_BG"); if (background != null) background.Bounds.Height += container.Bounds.Height; diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml index f8f7e73c6e..c2d9ef3671 100644 --- a/mods/cnc/chrome/ingame.yaml +++ b/mods/cnc/chrome/ingame.yaml @@ -86,85 +86,78 @@ Container@OBSERVER_WIDGETS: Y:1 Width:PARENT_RIGHT-2 Height:PARENT_BOTTOM-2 - Background@OBSERVER_CONTROL_BG: + Background@REPLAY_PLAYER: + Logic:ReplayControlBarLogic + X:WINDOW_RIGHT-173 + Y:195 + Width:168 + Height:46 + Background:panel-black + Visible:false + Children: + Button@BUTTON_PAUSE: + X:14 + Y:10 + Width:26 + Height:26 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_PAUSE: + X:5 + Y:5 + Width:16 + Height:16 + ImageCollection:music + ImageName:pause + Button@BUTTON_SLOW: + X:14 + 38 + Y:10 + Width:26 + Height:26 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_SLOW: + X:5 + Y:5 + Width:16 + Height:16 + ImageCollection:music + ImageName:slowmo + Button@BUTTON_NORMALSPEED: + X:14 + 38*2 + Y:10 + Width:26 + Height:26 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_PLAY: + X:5 + Y:5 + Width:16 + Height:16 + ImageCollection:music + ImageName:play + Button@BUTTON_FASTFORWARD: + X:14 + 38*3 + Y:10 + Width:26 + Height:26 + IgnoreChildMouseOver:true + Children: + Image@IMAGE_FASTFORWARD: + X:5 + Y:5 + Width:16 + Height:16 + ImageCollection:music + ImageName:fastforward + DropDownButton@SHROUD_SELECTOR: + Logic:ObserverShroudSelectorLogic X:WINDOW_RIGHT-173 Y:172 Width:168 - Height:35 - Background:panel-black - Children: - DropDownButton@SHROUD_SELECTOR: - Logic:ObserverShroudSelectorLogic - X:5 - Y:5 - Width:158 - Height:25 - Font:Bold - Visible:true - Container@REPLAY_PLAYER: - Logic:ReplayControlBarLogic - X:PARENT_RIGHT/2 - 70 - Y:30 - Width:160 - Height:35 - Visible:false - Children: - Button@BUTTON_PAUSE: - X:5 - Y:5 - Width:26 - Height:26 - IgnoreChildMouseOver:true - Children: - Image@IMAGE_PAUSE: - X:5 - Y:5 - Width:16 - Height:16 - ImageCollection:music - ImageName:pause - Button@BUTTON_SLOW: - X:40 - Y:5 - Width:26 - Height:26 - IgnoreChildMouseOver:true - Children: - Image@IMAGE_SLOW: - X:5 - Y:5 - Width:16 - Height:16 - ImageCollection:music - ImageName:slowmo - Button@BUTTON_NORMALSPEED: - X:75 - Y:5 - Width:26 - Height:26 - IgnoreChildMouseOver:true - Children: - Image@IMAGE_PLAY: - X:5 - Y:5 - Width:16 - Height:16 - ImageCollection:music - ImageName:play - Button@BUTTON_FASTFORWARD: - X:110 - Y:5 - Width:26 - Height:26 - IgnoreChildMouseOver:true - Children: - Image@IMAGE_FASTFORWARD: - X:5 - Y:5 - Width:16 - Height:16 - ImageCollection:music - ImageName:fastforward + Height:25 + Font:Bold Container@PLAYER_WIDGETS: Children: From d5edbc2bc7be56a64c1f1720ee0d23d6da224442 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 13 Mar 2014 10:13:33 +1300 Subject: [PATCH 8/9] Tick the game timer status independently of the game rate. --- OpenRA.Mods.RA/Widgets/Logic/GameTimerLogic.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.RA/Widgets/Logic/GameTimerLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/GameTimerLogic.cs index a2e6a87b1f..ecc68f18fd 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/GameTimerLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/GameTimerLogic.cs @@ -26,9 +26,10 @@ namespace OpenRA.Mods.RA.Widgets.Logic var status = widget.GetOrNull("GAME_TIMER_STATUS"); if (status != null) { + var startTick = Ui.LastTickTime; // Blink the status line status.IsVisible = () => (world.Paused || world.Timestep != Game.Timestep) - && orderManager.LocalFrameNumber / 25 % 2 == 0; + && (Ui.LastTickTime - startTick) / 1000 % 2 == 0; status.GetText = () => { From 7e9793fa90aa1db11c13acbac83a9e456a52f54b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 13 Mar 2014 10:57:29 +1300 Subject: [PATCH 9/9] Fix the timestep jank threshold. --- OpenRA.Game/Game.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index c5de620cbc..1f1499411f 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -74,9 +74,8 @@ namespace OpenRA public static int NetFrameNumber { get { return orderManager.NetFrameNumber; } } public static int LocalTick { get { return orderManager.LocalFrameNumber; } } public const int NetTickScale = 3; // 120 ms net tick for 40 ms local tick - public const int MinTick = 1; - public const int MaxTick = 10; public const int Timestep = 40; + public const int TimestepJankThreshold = 250; // Don't catch up for delays larger than 250ms public static event Action ConnectionStateChanged = _ => { }; static ConnectionState lastConnectionState = ConnectionState.PreConnecting; @@ -181,9 +180,13 @@ namespace OpenRA if (worldTimestep != 0 && worldTickDelta >= worldTimestep) using (new PerfSample("tick_time")) { - var relativeTickDelta = (worldTickDelta / worldTimestep) * worldTimestep; - var tickIntervall = relativeTickDelta > MinTick && relativeTickDelta < MaxTick ? MinTick : relativeTickDelta; - orderManager.LastTickTime += tickIntervall; + // Tick the world to advance the world time to match real time: + // If dt < TickJankThreshold then we should try and catch up by repeatedly ticking + // If dt >= TickJankThreshold then we should accept the jank and progress at the normal rate + // dt is rounded down to an integer tick count in order to preserve fractional tick components. + + var integralTickTimestep = (worldTickDelta / worldTimestep) * worldTimestep; + orderManager.LastTickTime += integralTickTimestep >= TimestepJankThreshold ? integralTickTimestep : worldTimestep; if (orderManager.GameStarted) ++Viewport.TicksSinceLastMove;