From 776cc7da49d927aaa2f581e4786fba405a9961f3 Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Mon, 11 Apr 2022 15:12:34 +0800 Subject: [PATCH] location adjustment --- Billing.Shared/Store/StoreHelper.cs | 6 +- Billing.Shared/Views/AddBillPage.xaml | 4 +- Billing.Shared/Views/AddBillPage.xaml.cs | 1 + Billing.Shared/Views/ViewLocationPage.cs | 95 +++++++++++++++++- .../Billing.Android/Billing.Android.csproj | 6 +- .../Properties/AndroidManifest.xml | 2 +- .../Resources/drawable-mdpi/location.png | Bin 0 -> 797 bytes .../Resources/drawable-mdpi/pin.png | Bin 0 -> 443 bytes .../Resources/drawable-mdpi/sync.png | Bin 0 -> 799 bytes .../Resources/drawable-xhdpi/location.png | Bin 0 -> 1703 bytes .../Resources/drawable-xhdpi/pin.png | Bin 0 -> 874 bytes .../Resources/drawable-xhdpi/sync.png | Bin 0 -> 1496 bytes .../Resources/drawable-xxhdpi/location.png | Bin 0 -> 2884 bytes .../Resources/drawable-xxhdpi/pin.png | Bin 0 -> 1559 bytes .../Resources/drawable-xxhdpi/sync.png | Bin 0 -> 2732 bytes .../Resources/drawable/location.png | Bin 0 -> 1496 bytes .../Resources/drawable/pin.png | Bin 0 -> 662 bytes .../Resources/drawable/sync.png | Bin 0 -> 1417 bytes Billing/Billing.iOS/Billing.iOS.csproj | 15 ++- Billing/Billing.iOS/Info.plist | 4 +- Billing/Billing.iOS/Resources/location.png | Bin 0 -> 797 bytes Billing/Billing.iOS/Resources/location@2x.png | Bin 0 -> 1703 bytes Billing/Billing.iOS/Resources/location@3x.png | Bin 0 -> 2884 bytes Billing/Billing.iOS/Resources/pin.png | Bin 0 -> 443 bytes Billing/Billing.iOS/Resources/pin@2x.png | Bin 0 -> 874 bytes Billing/Billing.iOS/Resources/pin@3x.png | Bin 0 -> 1559 bytes Billing/Billing.iOS/Resources/sync.png | Bin 0 -> 799 bytes Billing/Billing.iOS/Resources/sync@2x.png | Bin 0 -> 1496 bytes Billing/Billing.iOS/Resources/sync@3x.png | Bin 0 -> 2732 bytes 29 files changed, 119 insertions(+), 14 deletions(-) create mode 100644 Billing/Billing.Android/Resources/drawable-mdpi/location.png create mode 100644 Billing/Billing.Android/Resources/drawable-mdpi/pin.png create mode 100644 Billing/Billing.Android/Resources/drawable-mdpi/sync.png create mode 100644 Billing/Billing.Android/Resources/drawable-xhdpi/location.png create mode 100644 Billing/Billing.Android/Resources/drawable-xhdpi/pin.png create mode 100644 Billing/Billing.Android/Resources/drawable-xhdpi/sync.png create mode 100644 Billing/Billing.Android/Resources/drawable-xxhdpi/location.png create mode 100644 Billing/Billing.Android/Resources/drawable-xxhdpi/pin.png create mode 100644 Billing/Billing.Android/Resources/drawable-xxhdpi/sync.png create mode 100644 Billing/Billing.Android/Resources/drawable/location.png create mode 100644 Billing/Billing.Android/Resources/drawable/pin.png create mode 100644 Billing/Billing.Android/Resources/drawable/sync.png create mode 100644 Billing/Billing.iOS/Resources/location.png create mode 100644 Billing/Billing.iOS/Resources/location@2x.png create mode 100644 Billing/Billing.iOS/Resources/location@3x.png create mode 100644 Billing/Billing.iOS/Resources/pin.png create mode 100644 Billing/Billing.iOS/Resources/pin@2x.png create mode 100644 Billing/Billing.iOS/Resources/pin@3x.png create mode 100644 Billing/Billing.iOS/Resources/sync.png create mode 100644 Billing/Billing.iOS/Resources/sync@2x.png create mode 100644 Billing/Billing.iOS/Resources/sync@3x.png diff --git a/Billing.Shared/Store/StoreHelper.cs b/Billing.Shared/Store/StoreHelper.cs index 265b89c..11584cc 100644 --- a/Billing.Shared/Store/StoreHelper.cs +++ b/Billing.Shared/Store/StoreHelper.cs @@ -206,7 +206,11 @@ namespace Billing.Store } writer.Flush(); - await database.ExecuteAsync("DELETE FROM [Logs]; DELETE FROM [sqlite_sequence] WHERE [name] = 'Logs'"); + await database.RunInTransactionAsync(conn => + { + conn.Execute("DELETE FROM [Logs]"); + conn.Execute("DELETE FROM [sqlite_sequence] WHERE [name] = 'Logs'"); + }); return file; } catch diff --git a/Billing.Shared/Views/AddBillPage.xaml b/Billing.Shared/Views/AddBillPage.xaml index 6958b35..2ebdf1d 100644 --- a/Billing.Shared/Views/AddBillPage.xaml +++ b/Billing.Shared/Views/AddBillPage.xaml @@ -10,6 +10,7 @@ BindingContext="{x:Reference billPage}"> + @@ -49,9 +50,6 @@ - diff --git a/Billing.Shared/Views/AddBillPage.xaml.cs b/Billing.Shared/Views/AddBillPage.xaml.cs index 2fcdaf7..c7d6984 100644 --- a/Billing.Shared/Views/AddBillPage.xaml.cs +++ b/Billing.Shared/Views/AddBillPage.xaml.cs @@ -316,6 +316,7 @@ namespace Billing.Views Longitude = location.Longitude, Latitude = location.Latitude }); + page.Synced += (sender, loc) => location = loc; await Navigation.PushAsync(page); } } diff --git a/Billing.Shared/Views/ViewLocationPage.cs b/Billing.Shared/Views/ViewLocationPage.cs index 2fb6c55..6a876f0 100644 --- a/Billing.Shared/Views/ViewLocationPage.cs +++ b/Billing.Shared/Views/ViewLocationPage.cs @@ -1,17 +1,37 @@ -using Billing.Models; +using System; +using System.Threading; +using System.Threading.Tasks; +using Billing.Models; using Billing.UI; +using Xamarin.Essentials; +using Xamarin.Forms; using Xamarin.Forms.Maps; using Xamarin.Forms.PlatformConfiguration.iOSSpecific; +using Map = Xamarin.Forms.Maps.Map; namespace Billing.Views { public class ViewLocationPage : BillingPage { + public event EventHandler Synced; + + private readonly Bill bill; + + private CancellationTokenSource tokenSource; + public ViewLocationPage(Bill bill) { On().SetUseSafeArea(false); + this.bill = bill; Title = bill.Name; + ToolbarItems.Add(new ToolbarItem + { + IconImageSource = "location.png", + Order = ToolbarItemOrder.Primary, + Command = new Command(OnSynced) + }); + if (bill.Latitude != null && bill.Longitude != null) { var (longitude, latitude) = (bill.Longitude.Value, bill.Latitude.Value).Wgs84ToGcj02(); @@ -32,5 +52,78 @@ namespace Billing.Views }; } } + + protected override void OnDisappearing() + { + if (tokenSource != null && !tokenSource.IsCancellationRequested) + { + tokenSource.Cancel(); + } + base.OnDisappearing(); + } + + private async void OnSynced() + { + if (Tap.IsBusy) + { + return; + } + using (Tap.Start()) + { + if (tokenSource != null) + { + return; + } + var location = await GetCurrentLocation(); + if (location != null) + { + Synced?.Invoke(this, location); + + MainThread.BeginInvokeOnMainThread(() => + { + var (longitude, latitude) = (location.Longitude, location.Latitude).Wgs84ToGcj02(); + var position = new Position(latitude, longitude); + var mapSpan = new MapSpan(position, 0.01, 0.01); + Content = new Map(mapSpan) + { + Pins = + { + new Pin + { + Label = bill.Name, + Type = PinType.Generic, + Position = position, + Address = bill.Store + } + } + }; + }); + } + } + } + + private async Task GetCurrentLocation() + { + try + { + var request = new GeolocationRequest(GeolocationAccuracy.Best, TimeSpan.FromSeconds(10)); + tokenSource = new CancellationTokenSource(); + var status = await Helper.CheckAndRequestPermissionAsync(); + if (status != PermissionStatus.Granted) + { + return null; + } + return await Geolocation.GetLocationAsync(request, tokenSource.Token); + } + catch (FeatureNotSupportedException) { } + catch (FeatureNotEnabledException) { } + catch (PermissionException) { } + catch (Exception ex) + { + Helper.Error("location.get", ex); + } + tokenSource = null; + return null; + } } } \ No newline at end of file diff --git a/Billing/Billing.Android/Billing.Android.csproj b/Billing/Billing.Android/Billing.Android.csproj index c36f648..04ae76e 100644 --- a/Billing/Billing.Android/Billing.Android.csproj +++ b/Billing/Billing.Android/Billing.Android.csproj @@ -72,9 +72,9 @@ - - - + + + diff --git a/Billing/Billing.Android/Properties/AndroidManifest.xml b/Billing/Billing.Android/Properties/AndroidManifest.xml index 9de3091..68500d3 100644 --- a/Billing/Billing.Android/Properties/AndroidManifest.xml +++ b/Billing/Billing.Android/Properties/AndroidManifest.xml @@ -1,5 +1,5 @@  - + diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/location.png b/Billing/Billing.Android/Resources/drawable-mdpi/location.png new file mode 100644 index 0000000000000000000000000000000000000000..11812b1f3fd7fd4f0319ace1dd6db9ab69381534 GIT binary patch literal 797 zcmV+&1LFLNP)Qs-N zBz^J_FDZ}NJhHXr*oUEHVb=Zx0GD^i9CHf5%|vM04%`U82eiNdd;~gNuCdSOmC(rnz(B9$D7{( zpfbSi<;lMVr5DbDsD^;B*ChU|s<|)QqrNd!jDNPKx%CP4dApc4{2ud=1y4bM7<8@t z?Cr{M4oymFU8`Tj3=<&?Knw5z+PqLM`>Rf!CNW!A$i*EbxB&t~Fs`9&J>R2sI9(Mhv>F9dkc6(LZxE-|@G} zn7_6qtQglIc$p?iyRiD0DS(q@1p+`xU318SYXJakmQZ}8e<@ph&L3N8WkX>L0=VHx b<%<6g`tBVjng%S300000NkvXXu0mjfLaS#R`&PhQ63QldML+fCmt3;3>g$@o*84`?QLn+O3?{V;XN)pp{?O87O{yygn=L%_E zD?GVp7A=cVH0-({O*7VK)nRpS$aInVu`&%|(0x zE|~Ei@oy~XEmbLJ+Kl}G4&Kdi&S$- z7|X}|KX$5zSw4UPE-w@dk>Zlj^X9_m*qeq{}^zk9!$octMOp8d*wO8H}MkNrgIO#pm z8(`NCfFtMUXU+7jBpsx~CT6#S-1j0FrfI>ei2ion$?P)^Fg*Es52nR^n8Du`vJWhY z%eA$o2Tv9aO7t5V&>z`UEW?6O}akkyLQ!X4>z$J0OmmJs%@uqEgXj8_`U<~vf{jki zbteg@kmV)WzadSWQ;6GUTiB@k((gy9Yc%|rb1nxEu*3(y+4}JJj8L_2xA7IX7n4q~ z;_10@=QV9+&GE_jtzIc_w*?w@{LikglP69r6xy{p@Zwu92D+^YVNq7aU+A+zT#Vb!0Pw zqM1oj-g_H^+}OVM|2`wIENnT#&FatP_5Ho5P&}1{oQpT&q3aKSytcLb{BWhP+trOz zpOYLdPfU`TNG#Z|^}(%gc7FK!pF`&zJlEjq3%#lH13pSi#8D3^VA)QZ`I-;uX1!A0 dW`D+>h{r}LDVamG7E}NL002ovPDHLkV1jvygn$45 literal 0 HcmV?d00001 diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/location.png b/Billing/Billing.Android/Resources/drawable-xhdpi/location.png new file mode 100644 index 0000000000000000000000000000000000000000..5a484bed4803585fa29ec5b1f5f5370d33081198 GIT binary patch literal 1703 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/sync.png b/Billing/Billing.Android/Resources/drawable-xhdpi/sync.png new file mode 100644 index 0000000000000000000000000000000000000000..eccd2396e84d23dfb4655aa1a81c0b282eb8ae9b GIT binary patch literal 1496 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 literal 0 HcmV?d00001 diff --git a/Billing/Billing.Android/Resources/drawable/sync.png b/Billing/Billing.Android/Resources/drawable/sync.png new file mode 100644 index 0000000000000000000000000000000000000000..30250510bc2cedaf0f4b2794836955bc581421ec GIT binary patch literal 1417 zcmV;41$O$0P)4<{0q{}Pp*5LkZCI>#*?MwodNYe$t=k&q9%gn z&{EgjBk*{e#1lY+Qwmo>%?K>dbC8g*hQ#V+n(Z)r*%Jqt~KmY(Vh%JJ%*`Qb` z+)wck$tRZ?aS$$u7$!C1z5mM?lP4%Ip8~l}Vn2a?5L*GxqH?Rx0Tw?5!y;}J8s=Irvd=1 zR-=reeGNcc-N$JOpAz~o_tO^_aHB0&kiN@llMme*G&wB*7-X|nj!y%)r*6F_@g(U! z&Yd}Wz7;6;91N!udXU6BARk7f!mJ1PjwLN&57hUmpbMfqn(Hk5-V}IU*5UG2@Aa0* z#{k5e>6)f*W3$f^3h*`n}x74F@p^ZK#ve_VgE!{2eNMmIxHScRdacbo7T+7sXA@&>$ z(xvGY!yG2dethUy@iuM$4`e>G*=&HTcdvXA3}qZJ=x>{_=U|w@MChUlZ5S5-j1L_v zv!~~k#9VT=k1@5~YOnKfKGMWY`^8Hb8j5ZM%kCZfcayx2WE=n_@2WG=k)V()^oB9+ zU1=r=44@b{byhbN3cz%$)b%@`YV%p*(QNk3)_Enlr6%?G8n*iL|e}CJ3tyOC0j%Pa!V|T#VRSUK#3DrM=LEW;^=M^bO zcfD}l>e{8rv&W0L`L<%ZFWau5W0PUn zBWeS+cu|m)ubICCGy4w?A9qc`06;0u0C!lAlt=qrYy0-+VeM?dY6Splip4|YI-HoY zP#1_*_2C5o@7!2W4u^B2#}|H;!BPmk2WA9Ttic9dHz0{1I|y``5E~6ufx>yujjR*n zBtwCK7K1@j-nlW=%$eLM^7WAlYQ}pD0}|fJO|lk!Z%iQPf<6Yili*V4z)(WCm=83Z zeg#Fo=Kn62E5mc6tMb6o*G1qXo_7hq#Y&}k)% + + + + + + + + + @@ -179,9 +188,9 @@ - - - + + + diff --git a/Billing/Billing.iOS/Info.plist b/Billing/Billing.iOS/Info.plist index 89eeacc..fa778bd 100644 --- a/Billing/Billing.iOS/Info.plist +++ b/Billing/Billing.iOS/Info.plist @@ -80,9 +80,9 @@ CFBundleVersion - 20 + 21 CFBundleShortVersionString - 1.2.328 + 1.2.411 LSApplicationQueriesSchemes mailto diff --git a/Billing/Billing.iOS/Resources/location.png b/Billing/Billing.iOS/Resources/location.png new file mode 100644 index 0000000000000000000000000000000000000000..11812b1f3fd7fd4f0319ace1dd6db9ab69381534 GIT binary patch literal 797 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/Billing/Billing.iOS/Resources/pin@3x.png b/Billing/Billing.iOS/Resources/pin@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b87358343e96689463ce6c509dda47de50df45b6 GIT binary patch literal 1559 zcmV+y2I%>TP)@tzFEkGf zZs4UL6h%k~i9zBCkaY}`LCXyrVOf>^%bOJE>lM!WDoPGM(9FTFN4JG@xI(xok~ z^k8{y+=X8c;0KcGlyhEw2?B|oh$jOSCaNCpndv_|32lo&?r`4Xw(q~NH}2ebgpNt7 zSWEDwFxraL7(hvJ<<0J?fiI3N1X&27n#R(dDEt=a1&NYn{H6`-7hDGo8^izBqH5sEO#iisB@iW#G?xb<$DDLrVp~p6#t5>rV5bfDs(EWQvok^t*e#LB1Co%m z7i=Q_z`o98-#?N7AwXSSb9^`+J%;gBL|M-8X6FokYtos4@tJOV-bl?Gs}6o)i^HA( zwk`)TrwZrXu~_6UbNKL|X=}@d00S0PgvN2CT{#wI&Fq!H>}NMFhwX4G;_%_Hyy$Ze zhK`+}N|`-lqBQT>y`7OgLEw(nj1`{mgTavI=78?(lgNE4R|d@ZwG^GWaq0DI(4y*w zbOWQ|QJggjZAVsOXopz#8Oq_AXN`hSKuc@5Yp^($4933#6y=!uS6TFvzP<5oE@IXD zFCQfczX8+VPPIjq2R{G2 z94`X3!6IR!kC z!ycL0Tcy*Jy#P@d`=-PP*DLr!IR%e9%o=jou1nU_)AL5Es{TvWn4V?sIIp|R_B(Ry z(2PDqLjb1CM6q+$2QGJJLpUJ)-$iIitgecx927_B6s27$%NK(C^e*F&QT`AsmGA?d#m^=)+ z;DEo}PYBGPaT(k>gTDI`-|U7D)$YosCWr8L`hGx2_PeT?VA%EaG-V=hzXFEuF~eZw zIoZ{9D&wHVXGnK=vsdmVftj7m$T|UY0Ap7k9h28D!7kh*f_I#Ba`aN;IQ+NJZL_Ju z>fxe9VjQ`TYh|_KT6NuwANEboyvePXvI`)9(cWxg>+W8ch$Uq_idgba`QK$j7TF1( z4SzG;{rb%O=%VIl=2lOtsJ#9Pflo_ngmt{G&H4>aU{fy*bhb_{G%acGrU$#yQ+-A6 z6xM9(pS!wCS$j2Q1|IC6hJA0~Quy*ze{1T_Ny|E~I{4WGGWT6!pGGQUHE&ZRW#X2Z z{YgIcqyCQ5op+nMf*rQF>V}S|2=ryJCW#VEMa*_v;hYZxGC&HL_Qsfl_N@FbhAzJP zCOJCsRYKg>j=JY+qeS>g%+&+CK-(qaU@0?(5bt`gE1uN3;mf~&e>J{01#9~F(c&uW zDvPIUA2V*AhuPoTap-thS@uxT^x*T^J3oTt)2ff&jzdR^(%D#(^OkghvXacq7&GnvcgJ(IDS?a_uq3|0*$owuvrSoD9VH@x$9 zwZHtmB^_2it-jFh?e+26h9pLbn{5#Rh@^i<@t`x={)bhSc58zGk~h231r;AkOF@l9 z+9_m*qeq{}^zk9!$octMOp8d*wO8H}MkNrgIO#pm z8(`NCfFtMUXU+7jBpsx~CT6#S-1j0FrfI>ei2ion$?P)^Fg*Es52nR^n8Du`vJWhY z%eA$o2Tv9aO7t5V&>z`UEW?6O}akkyLQ!X4>z$J0OmmJs%@uqEgXj8_`U<~vf{jki zbteg@kmV)WzadSWQ;6GUTiB@k((gy9Yc%|rb1nxEu*3(y+4}JJj8L_2xA7IX7n4q~ z;_10@=QV9+&GE_jtzIc_w*?w@{LikglP69r6xy{p@Zwu92D+^YVNq7aU+A+zT#Vb!0Pw zqM1oj-g_H^+}OVM|2`wIENnT#&FatP_5Ho5P&}1{oQpT&q3aKSytcLb{BWhP+trOz zpOYLdPfU`TNG#Z|^}(%gc7FK!pF`&zJlEjq3%#lH13pSi#8D3^VA)QZ`I-;uX1!A0 dW`D+>h{r}LDVamG7E}NL002ovPDHLkV1jvygn$45 literal 0 HcmV?d00001 diff --git a/Billing/Billing.iOS/Resources/sync@2x.png b/Billing/Billing.iOS/Resources/sync@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..eccd2396e84d23dfb4655aa1a81c0b282eb8ae9b GIT binary patch literal 1496 zcmV;}1tj?(9)ScC{wXwDFW#`qKRpwYLo_uw#{sK z$jX%~qZ{MKmBuX_cZP&i7ma`;lr(9vCMq%EQ3{k-jY%o=F>PsQ=yYc8J?C>#TH11_ z%nMiile@U*JKuMI=iKjn=blT*KxMT@@)SMt2>~y(+(3X65@2P;Ns5rxG|da<_|)w{ zINfJZI!>jH9krzOSAb|Czzu>6fP8!bfC6BF5oaI@;yxzp+sVs;!RH28ShKIlZMY5- za2TN7sXhn*!1$YqJ7cU*%nqEMwd+z+-?2@QZqlSK1}_JOlK}L~P4(Q&(49oIIW4fK zbx&!1FnG1@FW_sv)L7o=Z(`Q{0P+EZ*y4tD0XIZ;6UMJWBpwAg`$5zALeRkkeHIAf@WkM$Y`}E_$Vzy% zQxgL}_h$mPxvrx@6M9mG10K(y1inmQ55}NB%>)hrEWzI(4LAT0o;O+xh|p|jWZ>6C zn|ewQNyCQ$lURj?VYx~OWSg`?b4IWBiPYx|zMFzWl)%TvW5xwz5~U+$JpBa;@%6Ie)?L?9Ru)7 zPmQ(PL9~+zGEtzFVx{IxgL<-2BWH6Rm4d}?rPQi+ArUX$e)+yAZitmRB<)HT4gg5X zLWia|Glg3W2HS%ev9_klLkq$I!@-<-u~$l@^U1YJRaLDn!SW^B_)HJb-*2U}3qgQQ zQ|XJD;Q6jn9c;wTj%!~O1;c>%amv`G}_?9mti+Y)O>&7RQ(O?WAXr7|N2WXXIt+H~DJG8N=*`cw8}1>pvO+ z(}P$H(_t(62*c+VM_$$H^m*L*u^7An`R19n7|br)1+f&Dc_io@xqvk%#)N>xQ0o?N zBDY|w22h>j0&-kAKwbN?*^I5oA6ma;vcjBe*7zNxm&~;``y3>m*OolXTHjkYau&qQ zBd%E)7#;0eu(OM3EWUbp#Pb}F^#zBz#)Hm#y;}2a23c7L1DhtRn?c7&Um`dFkhz7g zGC7Uy1d;-5O2g`&7(Ba}sAFR~GI?u+yswNoNmhXD&n_uT^L#|Bp3t?xO^l7H^|}%O z6m5O4(Abz;Vo@ac@KW!bZO@&4r^gZ9W{`6mm`l?FBbu}rcV|p-cV#JgCSa;6sQAF+ z@Z{D@A|Hbd!6YC^FfXoCB4TLPT0jwNOEEn#Rb(J^qbI4qVHpE1YtJ5|C|r`~G%c4! yhC`bRl7wWEPHnJdnmM`AnVkC(^!KNo!~X$)a#0c;Op)*a0000ny)JBR(q*kO3Gri+5t>HD z)^#05ng(o){VGE03j{AwgvJa00yGdXgg~HZY*RN1Xo4V+I$nfsZS$j9TBU26G)WUD zwVn9--g6#aG+EOui5>r7Nc8i@lJ7aseI7sOJm=i+xh7PVUPhvyF%#kVQjh^4-#o|c zw`H}3H5C-gnwGJKT?V01L4U#ky{1|oQKjw06VC*^*=()nbL+LnerE0gqYHw&3A96i zCJ^kK&BY;LP6SgRTq4l0Xq*wFhis~y=k(WwU(hSNR1n(M>w*Z{B*tI>wIQM?vB#Ov*%e_ZJ6bwX_mwxuoK!9M zxd)ZvV?_8SKs(9^q7){K$j?RS&Dr<)EO7fUk8~#6R6w2vm^CV38^FA{+(6vVa=KojteG3KY@T7Q`x>dOE?%l>0KEWdmM%*O%jS=T8Q z&U0JQ0k`xV+rgT?MuZm#*b96z!LGqT@PUYV1%ls*v58gg88E#BP<*2fc0;J9sDRrJ z9*rCDaRQzuqE=LXIV%+r$P^4-10hXBPhov#*HD*UvI{yM?M~hW_D;|ApxK}~y(o43r*~M_j;d&O|Qv`W>+rbLv4WVB|PFifvK`_TkXSC}qPg`?&3=DVx zfJ8#II}x8~uU6+JGX1}d+<|+^-n)~*XFZfp?>PCr~wi`k%dmD9yk)!+V?yWz5}4OQg#^t+CMWGP)rXJC|0nC z$Xj_!{i&L|Q{%y-jZo?-A{<9CJ{5`A9;MYeTys;cD1=;xkzb_tqN+pLhINpbl9g6Z zR);h>juR%(1BE&W@QxTgSP5-uD-85b0@^BSRK)STC^67WY*ZI$>!KhK4}z03Id`F= zj%{PzOj(iNw)_X$ul>lcUDEEFj0RJ$M zA7LP-E%YZ0A38e(U=F}$vg$GfCrP_SDTd{e8t7YW?@IpOv)lo&)eJE#%pcoukTC)P z8(mw4wYZwiwVAv%4D{YqEhC-DI?Kkr+DKrdPNYO@<6gPm5ty#_{Jp~+?r?`Y{6F)* zBB+-^FGo5DYl)qpn82-g);u{Y5BeHkTEM`7yYf7oRH1uvO(Dy!m4Gh!N60yO@ms!J zXeqZiHg?J>IfiWz>lv^;hr3Dn_Ce`e3eKASnGwk~IXn7Oz!eJsg%9Lo%)Ub!IwGcY z5!|x;T3{AZwmpQ-I(V>N&x^PF-xeRq5uGzP($pNr9Txz>{2ek8hb=!>uD&G zQ^ubHa8u%uil6h+k{DmMvNqS#%Q@E<7Di!3gv@kgWmZ@GjF${D8ggkCn6I?$+vxb0 zj|BUOXu}7dwRj$`3=Kg8l@6FBE0zofgI2W*7DWQSUCdHY0x|{}5B_VbuSS%7Y_Wk4 zOK|0Uy^|XmJ5${ysWE=E0haU-$XBQ>8}D+fvz%Q$7O6;vg~)+t&drE5T=n(0=LMft z$Dd=e>I*w2IqjP9u{A19*%@YtYg~D6CXyN~`^2yyNfmZx6UstNr0_0LM2`nTl)@U7 zrtE-S(88Rk;i?DQ^MWtz%qDym#|th)06>y8Y%Wd?ytTCU>#~QmMQCne{ZP~1WCNbw<(Z&{M_TgfKH3H*k8JWxK>+7#6#N!;y)f_6vAyyP3zq>2ga&K-a(w)KVPz6pU zdKn!x{z!D+T`EWqDy3SA36_Wi#$2s&X)rx{GQIwKMXI!j5J5GF51(%~-iNq9c_Cos zQj-I=v;IxFf+P}FEFJRaoHNa^?0pcl6UZl0SS%$XF@i-VJ#uyAaL42D(BH3dtB4R12^AlYTQ{s}zduwL@aCPcXVh-R z93$CSMcoX6Sz=>`r~Q)?*hEgQXuuyqWGlj63P{}3cEZl;IzlnCRQ`fWBarCZV*^G)!7u0L)UM_WwEdMy=G2KO_}V>2Mdjj9jTl}%NC;n zApeGzs|86mZ{)n|(%_BrZ(PIF)V7vA1@wzAdiSDbNT2{QGOxuOu4`(#_~Ac)o7<>U zdTw;dslRL9_Q?zk3juW?s!qjUL4+I##tgYE?q{(>xxMIDBi_n+0gE2b8MqSo!emoGO)a1a)vI=LV<{+Wtu)jV~ z7qpOXQ%ZIdR4a(=674MmddBl`#e@G^tCPvDJmQsoHeH3HlT@9ZP_uwvbG}I_tHp>8 zLsW<$wZvkJfdY|`h!&6|;4Da|nK-4jcU>8ODgxw(x}Yn49$oD!yJEk0<#X`nXL99g m-)gh2mCW_7X0U2+8T<#IZ;E^E6&%d~0000