From a60a7b4405f245d9837b8e9caf45e0969a36281c Mon Sep 17 00:00:00 2001 From: wxl0430 <141288415+wxl0430@users.noreply.github.com> Date: Thu, 10 Apr 2025 20:30:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=B7=84?= =?UTF-8?q?=E5=8D=9A=E7=AB=99=E7=AB=99=E5=8F=B0=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Converters/LocationToStringConverter.cs | 41 ++++++-- .../Stations/Zibo/PlatformScreenViewModel.cs | 64 ++++++++++++ .../Stations/Zibo/PlatformScreenView.xaml | 97 ++++++++++++++++++ .../Stations/Zibo/PlatformScreenView.xaml.cs | 38 +++++++ CRSim/App.xaml.cs | 2 + .../StyleImages/Zibo/PlatformScreen.png | Bin 0 -> 5757 bytes CRSim/CRSim.csproj | 1 + CRSim/Models/StylesInfoData.json | 37 ++++--- 8 files changed, 258 insertions(+), 22 deletions(-) create mode 100644 CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs create mode 100644 CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml create mode 100644 CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml.cs create mode 100644 CRSim/Assets/StyleImages/Zibo/PlatformScreen.png diff --git a/CRSim.ScreenSimulator/Converters/LocationToStringConverter.cs b/CRSim.ScreenSimulator/Converters/LocationToStringConverter.cs index f1e6b75..e174223 100644 --- a/CRSim.ScreenSimulator/Converters/LocationToStringConverter.cs +++ b/CRSim.ScreenSimulator/Converters/LocationToStringConverter.cs @@ -5,23 +5,44 @@ namespace CRSim.ScreenSimulator.Converters { public class LocationToStringConverter : IMultiValueConverter { + public string DisplayMode { get; set; } = "normal"; object IMultiValueConverter.Convert(object[] values, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) { - if (values[0] is int Length&& values[1] is int Location) + if (values[0] is int Length && values[1] is int Location) { - if (Location > Length) + if (DisplayMode == "less") { - return $"当前无车,1-{Length}车向后。"; + if (Location > Length) + { + return $"当前无车厢,1~{Length}车厢向前。"; + } + if (Location == Length) + { + return $"当前{Length}车厢,1车厢向前。"; + } + if (Location == 1) + { + return $"当前1车厢,{Length}车厢向后。"; + } + return $"1车厢向前,{Length}车厢向后。"; } - if (Location == Length) + if (DisplayMode == "normal") { - return $"当前{Length}车,1-{Length-1}车向后。"; + if (Location > Length) + { + return $"当前无车,1-{Length}车向后。"; + } + if (Location == Length) + { + return $"当前{Length}车,1-{Length-1}车向后。"; + } + if (Location == 1) + { + return $"当前1车,2-{Length}车向前。"; + } + return $"当前{Location}车,1-{Location - 1}车向前,{Location + 1}-{Length}车向后。"; } - if (Location == 1) - { - return $"当前1车,2-{Length}车向前。"; - } - return $"当前{Location}车,1-{Location - 1}车向前,{Location + 1}-{Length}车向后。"; + return string.Empty; } return string.Empty; } diff --git a/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs new file mode 100644 index 0000000..e58f7d4 --- /dev/null +++ b/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs @@ -0,0 +1,64 @@ +using CRSim.Core.Services; +using CRSim.ScreenSimulator.Models; +using System.Collections.ObjectModel; +using System.Windows; +namespace CRSim.ScreenSimulator.ViewModels.Zibo +{ + public class PlatformScreenViewModel : ScreenViewModel + { + private ITimeService _timeService; + public ObservableCollection Screen { get; set; } = []; + public PlatformScreenViewModel(ITimeService timeService, ISettingsService settingsService) + : base(timeService, settingsService) + { + + // Text = $"请站在白色安全线以内排队候车"; //为什么 无效 + _timeService = timeService; + timeService.RefreshSecondsElapsed += RefreshDisplay; + Initialize(); + } + private async void Initialize() + { + await WaitForDataLoadAsync(); + Text = ThisPlatform; + RefreshDisplay(null,null); + } + private void RefreshDisplay(object? sender, EventArgs e) + { + Application.Current.Dispatcher.Invoke(() => + { + Screen.Add(TrainInfo.Count > 0 ? TrainInfo[0] : new()); + if (Screen.Count == 1) return; + Screen.RemoveAt(0); + }); + } + public override void RefreshData(object? sender, EventArgs e) + { + if (CurrentPageIndex == 0) + { + List itemsToRemove = []; + foreach (TrainInfo trainInfo in TrainInfo) + { + if (trainInfo.DepartureTime == null) + { + if (trainInfo.ArrivalTime.Value.Add(_settings.StopDisplayFromArrivalDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + else + { + if (trainInfo.DepartureTime.Value < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + } + foreach (var item in itemsToRemove) + { + TrainInfo.Remove(item); + } + } + } + } +} diff --git a/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml new file mode 100644 index 0000000..0f017bc --- /dev/null +++ b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml.cs b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml.cs new file mode 100644 index 0000000..82619b7 --- /dev/null +++ b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml.cs @@ -0,0 +1,38 @@ +using CRSim.ScreenSimulator.ViewModels.Zibo; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; + +namespace CRSim.ScreenSimulator.Views.Zibo +{ + /// + /// SecondaryScreen.xaml 的交互逻辑 + /// + public partial class PlatformScreenView : Window + { + public PlatformScreenViewModel ViewModel { get; } + public PlatformScreenView(PlatformScreenViewModel viewModel) + { + + InitializeComponent(); + RenderOptions.SetEdgeMode(this, EdgeMode.Aliased); + ViewModel = viewModel; + DataContext = viewModel; + } + private void Window_MouseDown(object sender, MouseButtonEventArgs e) + { + if (e.ChangedButton == MouseButton.Left) + { + DragMove(); + } + } + + private void Window_KeyDown(object sender, KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + Close(); + } + } + } +} diff --git a/CRSim/App.xaml.cs b/CRSim/App.xaml.cs index 73ba7f0..6c37647 100644 --- a/CRSim/App.xaml.cs +++ b/CRSim/App.xaml.cs @@ -61,6 +61,8 @@ services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/CRSim/Assets/StyleImages/Zibo/PlatformScreen.png b/CRSim/Assets/StyleImages/Zibo/PlatformScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..0601a72c29f8d0a83af77849a11d5e90de99f2b9 GIT binary patch literal 5757 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 + diff --git a/CRSim/Models/StylesInfoData.json b/CRSim/Models/StylesInfoData.json index 66a3738..84fc035 100644 --- a/CRSim/Models/StylesInfoData.json +++ b/CRSim/Models/StylesInfoData.json @@ -144,6 +144,31 @@ "Station" ] }, + { + "UniqueId": "Zibo TicketCheckScreen", + "Title": "淄博站检票口看板", + "Station": "Zibo", + "StyleName": "TicketCheckScreenView", + "ImagePath": "Assets/StyleImages/Zibo/TicketCheckScreen.png", + "Parameters": [ + "Station", + "TicketCheck", + "Text" + ] + }, + { + "UniqueId": "Zibo PlatformScreen", + "Title": "淄博站站台看板", + "Station": "Zibo", + "StyleName": "PlatformScreenView", + "ImagePath": "Assets/StyleImages/Zibo/PlatformScreen.png", + "Parameters": [ + "Station", + "Platform", + "Location", + "Text" + ] + }, { "UniqueId": "Jinanxi SmallScreen", "Title": "济南西站小屏看板", @@ -175,17 +200,5 @@ "Station", "Text" ] - }, - { - "UniqueId": "Zibo TicketCheckScreen", - "Title": "淄博站检票口看板", - "Station": "Zibo", - "StyleName": "TicketCheckScreenView", - "ImagePath": "Assets/StyleImages/Zibo/TicketCheckScreen.png", - "Parameters": [ - "Station", - "TicketCheck", - "Text" - ] } ] \ No newline at end of file From 2a3648778c818f8e9ac0b6e31186d543433c9630 Mon Sep 17 00:00:00 2001 From: denglihong2007 <2639367181@qq.com> Date: Fri, 11 Apr 2025 00:20:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=B7=84?= =?UTF-8?q?=E5=8D=9A=E7=AB=99=E7=AB=99=E5=8F=B0=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Stations/Zibo/PlatformScreenViewModel.cs | 4 +- .../Stations/Zibo/PlatformScreenView.xaml | 41 ++++++++++-------- .../StyleImages/Zibo/PlatformScreen.png | Bin 5757 -> 12726 bytes 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs index e58f7d4..4369b11 100644 --- a/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs +++ b/CRSim.ScreenSimulator/ViewModels/Windows/Stations/Zibo/PlatformScreenViewModel.cs @@ -11,16 +11,14 @@ namespace CRSim.ScreenSimulator.ViewModels.Zibo public PlatformScreenViewModel(ITimeService timeService, ISettingsService settingsService) : base(timeService, settingsService) { - - // Text = $"请站在白色安全线以内排队候车"; //为什么 无效 _timeService = timeService; timeService.RefreshSecondsElapsed += RefreshDisplay; + Text = $"请站在白色安全线以内排队候车"; Initialize(); } private async void Initialize() { await WaitForDataLoadAsync(); - Text = ThisPlatform; RefreshDisplay(null,null); } private void RefreshDisplay(object? sender, EventArgs e) diff --git a/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml index 0f017bc..47d41e1 100644 --- a/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml +++ b/CRSim.ScreenSimulator/Views/Windows/Stations/Zibo/PlatformScreenView.xaml @@ -28,7 +28,7 @@ - + @@ -36,38 +36,41 @@ - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + @@ -75,7 +78,7 @@ - + diff --git a/CRSim/Assets/StyleImages/Zibo/PlatformScreen.png b/CRSim/Assets/StyleImages/Zibo/PlatformScreen.png index 0601a72c29f8d0a83af77849a11d5e90de99f2b9..de53c913ab088ffd4cf0cb0d45582843e2091c89 100644 GIT binary patch literal 12726 zcmd73RZv{t6D>S~6NVtcAwbYya2wn`IKdqTcXt><;o-xzURs6LhGtgt zcZU@{aA%HFuWF}iE(3!~53rhHwhOCUH8%XMk7A!==m>j0g$xwX;u0ftuudyT38--=x^{xZT_FR>gIe9_0!cV=Ys zOTB9V!@|p7nEm0LV<@xQVC_1L#=rXOC*Ns#!f`21I|G5fJW(P+BF}(y=x{}c)`#`F z@144~z(@c7^0u{7K}u{#EV4-yuSa&{)6CniWh3e1?MP%U41aUZf`pDNVkHB%j70Q+ zTnj}UGP+Oq6e7g)0in15>Vf^Nn2>?q9B=TlHR)N$i}O3Db8}IwK3V|Vnc4b)=5B|G zj;T^uZnYKF#D(#{qiI$EDioXk%gR|3A%N6w{c5ywP!(+`A2RM>dux?DcDk^o^Mv~M zYEE=d{XdF#X53;Q#BG!Qe3$6IBcIz-wPW2K zeAW)^lqU7&qQ^>M219Ic1Hlh}GC8J4_=+FTIyxy@d^-qSm`-BA>F+nM{#>vbAKAm# z0#WIdK?MHkLPKj>Kp8UhnV_iI%$)JLC^`j4=MyGuCJSwHhGOkl% zR<}!)oh%V_SEK+(2zb`8f9BBl$!-M_tk7RWUbQg_|tGS09c4Sc!8`}Lp% zAatB(P<}6PqhP#^rf#_^ZX7&f(%sWF3+|T5e5ussdS_7O_~NAW-S^$wJ&t(jD$4a( z8G6&Q{|&(N8rdS?ja{?Oo%?j)UXZ3Ep~O;yv=8c%(32u*Q{oS!RPK0pOxq7OOh{L4 zo;$(>D-Ek#A}>gSULsD<-#VoOIs4Kxe1Nf7BPcX!U3FR-Y?OmQ$L8M5cpouyj`yQL zp0(~r+hd~j?dy%$&*zcBIBmKma2Ch7($mCte z^x%JM>8@&SE0(eP^=biYQCVomjS1FUEoX2=9(K}c+Kkw zIs*!snHN+J=gkGcf)S5-$@^e+*ARW{+iuGB+^9p-$~YkjA%co?tT~@hPZG1qrxj;H zry=XKo=4Bz8^ume<+R|ynkX-3GW8n+MmTihXGFck2N+?8@BC_E>f|)%^~|SWpbyU2k#b|X_zaykgB#nR$$1O z>Xqxkjv}i)9;4Tf+(PJ2RNTrka9->I{TmJepC=B7`dx#1I9)GGOKB^`qonTroZn6q zq-{JeZza%yPL|S)mMAb0>}7TJcQ+9`(zJLID&N5I;P2_S7EvfP zn^DA_CB!WK=+@NgWV)UPoT`VoBF|`-XL=M~0g>E?VB?#pUNt3_*@P-9C5I!b1bR?^ zLo|xwcboklvBrE91}u>!hrRHcyRcFn{fVh}d?Mw-D$P`=gioty>$vy#a?pkwaEwrw zN^}QwsF*!HX6ikZTa5Wg8S>P-*NJS<3YG|l9%ye?tTf7XLgepr`LFwJl#L3JdS2u< z8k;P-xj*6~Or16cyMiv8D_Yx&ns8B>Bbtd+Z=uYqR$HLJ4^G;(JL9pKOGvZyEyC7y zRzv4_WuK>}Ib?qu>=#_w#mMC=lSoy@?guv;v{B5ILzf3QpKlKqF;l>{mW|(dZmSem zQo=f~$u4gmqwl$}op9pn{JSYK%5OrWX<1H+Bi#AcN|{lliLs-Nx~-n24K9@7feFC{ z;y`OU>iY3fUYij7dDaU{p(1^#3bh|g5-`gEpIVeKz&*-BK2e^Hm za+_vN?@slMEAK_60PzGf*-$|1SmWt`(;ch%!A3xqmH_}_mDhaJu3sKs2VGn@?duj+ z0CD4Go}Kux_~m}~lP76e9;=5ics`Fn^ivj#n7;DdcfmkERM)&kltLG}3!@;`4gk*r z{`x^5ZUHJiP_x4QNm9f5lTqY$Dd*w222E(xC&ERfzSc9H&O7qT29~pAow+FHJZiuJ z)Ivn`&?m`ehRSluhE%!oFP`rgg6{DM!g?!`&Hzn8Qm1;^A5CRKO3XtxS)8YILk-!x zG4&c6M&ZA5{K|hef#UN-%6D9hi0P{P*w<-)qzNO|$gz&AEI0b8$<$(#lKp@33APp~ zgLlWS1F~+ZCfa0ZU1Sf@ugMeJ!(yqMwZ((oFrNHp{(R+GdjM*_oO(V{&oLiQ&j#l0 z#+{v+Q1D%lTGQO?=<2H(VJ|=cnbXV2(jZeRG>_GVmh^MZ0vet100J53KSUy09VOCTmln~ zW~%u02EQ)->6jfJxG&It^rld<*t1&gCDfp2h2T&=PkD25qt+Vi)e@Cfirm&2KvUZ9 zM!)>X#_9I>t$oqN{&T>9h51L;IG51EeUk^9_T2{+ku3&XPkjj)q6V(R2!Edx=-Wf^ zzXN*3(r+Y@QE4p6%EDkK9T1bA>GNSf)xp>5;R?VHGzym_h-}8E2y=CUrExRyjG4j7 z5G*V@r?iw&foz;G`T~G_@Z>e_REF415o@Q8i~#YrYhK@qpPF*y&w7TRUB!H+i}%}! z#GT1$4+XYb>BuLvrTkAup$AutGuqv= zRmJYI%!}46jFL6(HId_}1G9tgBndaRd;iG0vM+pvuAyWu4%S2+CM;YlJ~;_?jv5m- zuL<3Tc|zr?Hj`3Dmuf>%K=v^gew_BF8Tc@{!*RWB9qcRryyuqJ`b{jYQmI6!e0$S( zRw4J_0fk~MiD`>mb|7S8OSgxZfqDup^%7hkCv%+eeeDA z9gbuMpW7!E6bj~Qmky`Oi@?plrb{Xq&yO}^Ajd{5CZQmtcU4=l8re0_GjdWW4`i8) z*S+t3AfVzT&VDsHnK4g=g|ITv1?bXl7BfKi&V7b=CkNY?f6$c`?0aIqoMlC`@xAkU zFs?_xZu2t1F^e*Wc%~w(&ZIM1fR3U#R?uQL*6lm}p8~m%Pj~MOmEAjrwoon$nyX7+ zd@de%v-!*VeP#G(r&E7BBetF|Mb@+8r1Rv=n4GPu4+;S}1*%1VR(S)~rUt*NZLo@f z+k8O5hSxTesLAcW?D7|dRAMBowE9&kS&(aGM;yI)5ov$3_V+%*(YJz@d{P{vrL#O& zIj1r_Dr>MzG=xn>^~GC!VnEIeolpe+p3LLb^E9@XiM>K5#4exWFWyLvrTHgs2*O#j z>yI&^O394DD_STeHy4vHih=J0R|pEL zK$i)seJ%ad2xtuiVnB>4oj?v`>Sj7JMZF}RR^3kJX)Kl>4IE}qx z1L2&mdv50sgP;@6l4Z+rl9OXSYZ!()+1l>~C0kdPXZ{f-x)VWC{}UPC&h3nQ*O{dtOvQm~q8jo`O&9lt};7D?b#xlgF|iYMZ+ zBU2Fg^)NOlO@cfi4)d4i5!VtxMPsYV{tIx$dV>zj9!jooS-$qHLKM`3*9y* zHt~s(pQgnN+eEaSK5PiOi-@Oe;yQ9TPR}xel1dG78nmBkJs`6g9C>x z7MC$F=9a}Iu^{XspM|#L=Q)G^$cS<6vNvDLA^~X+i4SMWIp}W@9u|A-@6+FyZYLrm z)AaW+jE^j_J64Ezzn)UbP<^`a*2-1;7S~#|T?n7|hG{*GP%$Q4ogeUTFX<&<;_U}W z4V#NkF#lkE5E#bcljLIGHd{X+Kbb&nrADr{?`-ucLA`Jt4kPlhKwu4x;&=vaI+2hf zt`5Nh=8`JXVGh19ZZrd#+4FBfitsf9asgcHr_dW-5R0 z<%peOJZS<7Y1T7BItz~zic}f^)&Cp%K0dZ_9ZnPK=h{e5za&wxA>-1kUS&=p+aZn< zL@@Hp6nwFX374A=8s&i+RYm9PSq7_pJd7j&j^YtT&s*S%s^yUL45@GPQCNt}FHI!+ zkv6h&ArG9ObeNRw)e4nqL&#hJ6C0AoIemqN{wFxnT}x+3v+Mq73c|ST`t2eVlz6;X zl4lVG#&FnAD6!wX@fJv}0msegfWEq-Mu~^P+SFq4D$A37R?EdnF0z?!o!Z_(i@n6ja!cbFkgKNIoD%^&mX4e=*{|X z_xfSBB&oHXuYcvUPiV0DgDzI&$8ow*0D9&G&*PDPh0qt>%=5Ua5$Pmec!8NDV|d|* zRc<*oOam`b?$LeNx6_Yu4>fz>j!KTuv;0_CV9Cnf<6^<3tCk2Q3+0dKBS)mu_L?t% zg?qI1^P&Vqf!_)*!33|V`Le145vrS@aI*(KWqu}co^SCj$sb|_ULmZMP~pwPq}%#T zLevKBkTd)y*4`&4b%Hq#gs!~J z=@}BTn2{}|rp({f{}UK^iN3zR+ZiI?ks*L;wL(p5^>P>6)Ka*CI9S$k0m6!=gB-L# zP<<^iGBq&A;7$wA8`WdmddIu++};hx4sHz2$o3bSl)QZ^_!}P+YO>ji_w_(>%2F0V zM(OOSL9gw04sMAH-n!vHZo_g5bNdYwbM2y>z z!2KS`w+M#RCTy|Wc&)?AzJUsAOZjZbplvl{z%kw>US##qiO>+=01fWk5-i?V(#BP0 zxx814$45SR(4kvn;Xr-Vj~RpoR9m2o5 zLRN2R7%&6#jmlS8{0$F=es?Uv3uKflS3AEmkMy#kGhpU67%tx+^z49syrcVcn8Ltj zqti^J2&`_uE2=mq&2kWb)|;p&%B7q?jw6>yTfvvSa}->=6Xh{*I+oL8y}dTMM0{<65Pnzc-DI+dOWR3#q{^1aK znFq8TH;@^o{>~{WO-lsnI&L?#_Rago-g;mkIIfC+_+EAEeTWda=#7=t#lYqnDkKB&pxGqP)}1YB^qxPIefMVh`gH%eN-=vwsCAFE zvK37~Kn~ei_M`+4d7v84Jg>j&*749ys1lexJiXL!SP>`;A#;zq(Ta$5Ln{2k?XUro zf6Kh|?)dQN%}qV#)i*v@_`k7;rN~mPIQ;deEx96+(2G9bzN56vBnqX)`cC&k#e6xl z7c@7w9)SmavjkqJKs@|XabDQOj{n5xlFByW8GZLCA{4@k zY4!MR2n^PAYGeF&c(TC4F5Z^{;IT&Tb!M<0kNMOw+4Yl%Cd}lm3nQW7o6E+&uXe^n z9rQ2A%f4DH%t5qIq+YmpPEt(8?*~}76P_txQy#kB{={aTz zmdRyKIz<}=4sYupyI7pMndELfoV{{Lwe~sS3lb4hG%(sI0LN?R2k(c{R{r1eN^rj& z_XP60hqIt$R3PrZ8OQ(PS%bR*(aNBPvDtrZ9YN7IoLxop9yNW>{%k)l4byI+xOE?! zuP(UV1l|a`!#*Zxb4GJ`2BoAtC)|k+2mfgQ*xI`g{G+!Bh7gLqKNCsijJ6!8O*6Bn&1D3~f zc~d+A$hbg#Qq6aocyFVF#!~0!SZ;&?wGL*G%W)C#{i;pgC@tfg^h`WTdc~V+wYazR zb*M`FfJ|2w6|?ALDz^RD-wiYjC*5zveW465H^lG3BgVbm2`3kk!*kx(wCf0o(Y1fT zf>pA+TC-TE^$vx%<;B6YgLya%{`cNZlzp*arKmU_R=M|TTA@vrxmDLE3O4nAm=dtl zUuJYo3Rrk0Cw)gj^c0b69DK*c*a|EJ6!K4J46J|l-Lu#z<~zdC#e19B?5vibVXb5a z6Tspd>LV;4;>P2=+kYmCF;IHZi>;Cx_+p)6=*ahe(a+?mA67s#3G)cFsLtNcZjXTm zXtDy^)PZxPv8Jo-X{jamOEmCf7hx5sD@Gu17oJh$ulG^Vg+v{OpVuubIS71PV)sn* z4e|92)E;zUSBhT;g@sBJ-{b8DNAl1u!|#*%KBsPb%qqO3;s$_LK;N2sJ2zm}{L+cDXcd9>vBd&!vx(_m+@UiM{oI-j()6K|*E z^qq)b?Mw}i3R~2dvRI}ut@At5XpmZ{O~Yq><4{Mw?ST}mQwz3{Wj$y%=MP2TjOtOm z|794WxQNTRMmQtRq5!G&Iw{XjU#>z8p`@Vfg+U|OA4%iezPO$t<(IlHX*b#GxUIL7 z1U1Ka97?1C?uAOgn9%~Bn!q{wx&p-s_f-6lrV|~asp@g&$ zAq}0zGYU)+Y#eGgs-dKML4ZWmhj%GbkqNq)$sYGB_S6HmLMtdV{Wp&v>DJvt&7xP} zp{oR8AEXYv^tG{c zY`f}kVt;*q4ZwltPmzCLCKZG2kOD}B!#twuKCvem*J5L~P4YEtID!e?&<&AG#<_D@ zc<;%T*UXoYu5wcVLhb!1AVq9I{mLwjDJ_G}acjN_ynyR!m(92)>hxpU^gN{3vd_YN zvV`H1>C%gVS>6V-q{kmYNNFFh$^@HA5Abi5nvo_S?UQ=MgD}cFld*->X$HeHLi9fo z;${s!>SR6Xna?g(tiZW#EOJ7`HtpxZl=<){nlsy~k0i0n!ZQz-+U}XMy#@kHfB?m}%M2oVP+2 zP;n9nM<3>i+ES;)sKbuD@oEL(4CYMwfLe82IU>ph6fr)##5C+B??dPHd)t~|U)1tI z{I*?IB{W$VNe9RvnMS>sCU7qk!iI4>Lfl!|0b}(}9MCPQ08T9w^#_@HWYO>!7#%G- z6-4vl6@iyvY9;;L7x*AV)K`O8bZrhfBVN=9_tIwu5mM=nWcTksVl$*tazD}+YLzxw z)VCL4(V3tS(j~@yWTxZVagW2VKcA@qBoGZY7AKsihs==$e3J{)HrgHTG2W3+pgL}? z30isphQ8l0kEBj9S>YH{>zVmc`(au6Mohzc%*Yx<^j2Wxo)}pcxI@|#1z|)rBkM6H zq8zp(#=`|&tT=Z%q?M^~=-{|h1aNs8Nb(3NtLwhCX4))aYMvRmQLq8x>aXGKVhm(B zf+76#VMO|}Bp=5Fv2NG>IX`9%<#GTArA)64Ni9uj)|Ah@Q{B6t; z9SsE*Dk76`{f*}iKg@f`Pn_Mga#d!0BLfHuKvO)hc~84ukgVcxF8cu%EK*+V@JsFR z6%BN9*3_QuyO&>I$*S19+WNeJupJ#ewZPk0K3S{zPioICxVQJV3Hfnm+uW~2lefJ` z7rd7P-hZ$ev>=n@Tzwy(f7%*3_(SYfq%=JGlAbNrN8I7fq3Z`ON=pKG-M`z{;7BD6i-uNX#Wc`OO+?a$$(^q?3ky0ut)AY8wpsy%^!E*}B>8h9X)}Pki&)2M-GT5>R~4 zTW7Ygm7|1JY=n8LN8sZ{ zjf~`~r7E^bRe6J;Li-&GZ=N~NB&NyCq>xoJ?H{Tw!_T&6$pkxDL;nE)II#bD0k&Xd zx<3ZydfBu@FI4;=*9;*t7U`xTTrTv@lSzDqkLay`GjV#QFc42pH&31DC($3!x?Gh5 zjXS{&co`qlt@QhlKKB1hUb?yJ=%d7K+cu&f&CK58o(sMh50*5cBJgm$pqTzNoWJLyk(${?RXLbBQ5xWQDDKsfFNG=ojkVw>EJS6y z^&0>UfDfNAi8|JR>jqtSMmd>CDqEhH5BG&W4<7cP9N=#3p>H%oRKIng(e}<+mDrY% z*u7hn*n`<5u)n!gFF~9|;b1+%yHEYFDMcvMqn%?R@XTvgM&Qn2hAJ=cMsEw10%eiH z_P45w^=af7 z&Y?*oa6C(X0rZCEh7YJj*#8+Yh@9sjqZ*ST#*=TH zNN-bLK=$P^rcdN9r1|1Qthv!(xi*k%r9bdD38F(4qr^nCOst31zA}sBiFNZTnz>pj z?ai`_fYTUp_Jh?be7mGG=x^ZX!#nYwae;2fdoehTSMwEsg!^JS5!OAWq$Ya!oUq^I z3=NbzL^$^+;v<@cq03L$X_iile?O#L2tWn@*!7|7ELCsclh^YN(cK*#a^T#EB+pj4@+0xV&8!|3jy^)PPoZ%-9E&%v_Q02D;=9EYUh#lm~w%A638>{!~nPfL`QkZ`|xM;Q<|? zfnxPIcvMZ=mqVJm>b`?W$ny5*g0+DS(O8EKBj@~8kxnOI(=z?s_W(u$h5AnJU2+!k zx`bqXz+G%9Jd%aoCqrhv zFQstMU5#~bDf6=jUFUrY%JKm5%ufj5-^GU#J~Kl&)-I2cGd+Cj+tV=FT!AzX?>Q%< z;^NcDrndT0Q6Wgk{rwVYq6xuSKk>^;pvy4$Z^slS_LKQ+-TSnp`qX&gwg;Gq|5jb> zlW5L0#yOy-_u*AN`})0FX=`8t+B$c*o!Pp*U19?kUtLudL2nK%SRy+k=~*Sd(BKwg z&f}$d_mm)z-eBi(?&~7yw8$!Ud{�F4R#gsTq>L@2hvmK8=%2-|ivvsXK|c;ad(U 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 g>HmLk&Hq)$ literal 5757 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