From 0f8e66506eaed6353bd46fea74720a14a31bc488 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 8 Apr 2025 01:03:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E8=BF=87=E6=9C=9F=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 4 +- libappbase/build.properties | 4 +- positions/.DS_Store | Bin 6148 -> 0 bytes positions/README.md | 41 - positions/app_update_description.txt | 0 positions/build.gradle | 114 --- positions/build.properties | 8 - positions/proguard-rules.pro | 41 - positions/src/beta/AndroidManifest.xml | 13 - positions/src/beta/res/values/strings.xml | 6 - positions/src/main/AndroidManifest.xml | 746 ------------------ .../java/cc/winboll/studio/positions/App.java | 38 - .../studio/positions/MainActivity.java | 374 --------- .../studio/positions/MainSimpleActivity.java | 471 ----------- .../positions/activities/AbsActivity.java | 46 -- .../positions/activities/GridMapActivity.java | 36 - .../activities/JointPositioningActivity.java | 129 --- .../activities/SettingsActivity.java | 116 --- .../activities/TestMapViewActivity.java | 76 -- .../positions/adapters/MyPagerAdapter2.java | 43 - .../adapters/PostionModelAdapter.java | 250 ------ .../positions/fragments/LogFragment.java | 60 -- .../fragments/PositionsFragment.java | 508 ------------ .../positions/fragments/TXMSFragment.java | 515 ------------ .../positions/fragments/TasksFragment.java | 78 -- .../handlers/MainServiceHandler.java | 38 - .../listeners/OnGPSRTLocationListener.java | 17 - .../listeners/OnTXRTLocationListener.java | 16 - .../positions/models/MainServiceBean.java | 68 -- .../positions/models/PostionFixModel.java | 108 --- .../studio/positions/models/PostionModel.java | 202 ----- .../studio/positions/models/RulsBean.java | 15 - .../studio/positions/models/TaskModel.java | 173 ---- .../positions/receivers/MainReceiver.java | 50 -- .../positions/services/AssistantService.java | 137 ---- .../studio/positions/services/GPSService.java | 108 --- .../positions/services/MainService.java | 237 ------ .../winboll/studio/positions/tasks/Rules.java | 34 - .../positions/threads/MainServiceThread.java | 73 -- .../positions/utils/LocationFileStorage.java | 48 -- .../positions/utils/LocationFusion.java | 40 - .../studio/positions/utils/PostionUtils.java | 58 -- .../studio/positions/utils/TimeUtils.java | 26 - .../studio/positions/views/GridMapView.java | 246 ------ .../positions/views/LeftScrollView.java | 219 ----- .../drawable-v24/ic_launcher_foreground.xml | 34 - .../res/drawable/ic_launcher_background.xml | 170 ---- .../res/drawable/ic_location_searching.xml | 11 - .../src/main/res/drawable/ic_my_location.xml | 11 - .../src/main/res/drawable/location_icon.png | Bin 15399 -> 0 bytes positions/src/main/res/drawable/marker.png | Bin 6056 -> 0 bytes .../res/drawable/navi_marker_location.png | Bin 4822 -> 0 bytes positions/src/main/res/drawable/radius.xml | 16 - .../res/drawable/recycler_view_border.xml | 8 - positions/src/main/res/drawable/road.jpeg | Bin 220082 -> 0 bytes positions/src/main/res/drawable/taxi.png | Bin 4150 -> 0 bytes .../src/main/res/layout/activity_gridmap.xml | 69 -- .../src/main/res/layout/activity_main.xml | 27 - .../src/main/res/layout/activity_main2.xml | 17 - .../main/res/layout/activity_main_simple.xml | 57 -- .../src/main/res/layout/activity_settings.xml | 46 -- .../main/res/layout/activity_testmapview.xml | 14 - .../src/main/res/layout/fragment_log.xml | 14 - .../main/res/layout/fragment_positions.xml | 87 -- .../src/main/res/layout/fragment_tasks.xml | 50 -- .../src/main/res/layout/fragment_txms.xml | 17 - .../src/main/res/layout/view_left_scroll.xml | 56 -- .../src/main/res/layout/view_position.xml | 68 -- .../main/res/layout/view_position_simple.xml | 17 - .../layout/view_position_simple_content.xml | 25 - positions/src/main/res/menu/download.xml | 9 - positions/src/main/res/menu/infowindow.xml | 66 -- .../src/main/res/menu/marker_animation.xml | 38 - .../src/main/res/menu/marker_cluster.xml | 30 - .../main/res/menu/marker_groundoverlay.xml | 16 - positions/src/main/res/menu/markercol.xml | 16 - .../src/main/res/menu/menu_polyline_items.xml | 24 - positions/src/main/res/menu/polyline.xml | 43 - .../src/main/res/menu/scatterplotmap.xml | 25 - positions/src/main/res/menu/simple_marker.xml | 24 - positions/src/main/res/menu/toolbar_main.xml | 16 - .../src/main/res/menu/toolbar_positions.xml | 15 - positions/src/main/res/menu/toolbar_tasks.xml | 10 - positions/src/main/res/menu/vectorheatmap.xml | 16 - .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3056 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5024 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2096 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2858 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4569 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7098 -> 0 bytes .../src/main/res/mipmap-xhdpi/petal_blue.png | Bin 10586 -> 0 bytes .../src/main/res/mipmap-xhdpi/petal_green.png | Bin 10449 -> 0 bytes .../main/res/mipmap-xhdpi/petal_orange.png | Bin 9736 -> 0 bytes .../main/res/mipmap-xhdpi/petal_purple.png | Bin 10368 -> 0 bytes .../src/main/res/mipmap-xhdpi/petal_red.png | Bin 7911 -> 0 bytes .../main/res/mipmap-xhdpi/petal_yellow.png | Bin 10349 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6464 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10676 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9250 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15523 -> 0 bytes positions/src/main/res/values/colors.xml | 14 - positions/src/main/res/values/demos.xml | 234 ------ positions/src/main/res/values/dimens.xml | 4 - positions/src/main/res/values/strings.xml | 43 - positions/src/main/res/values/styles.xml | 16 - positions/src/stage/AndroidManifest.xml | 12 - positions/src/stage/res/values/strings.xml | 6 - settings.gradle-demo | 4 - 110 files changed, 4 insertions(+), 7131 deletions(-) delete mode 100644 positions/.DS_Store delete mode 100644 positions/README.md delete mode 100644 positions/app_update_description.txt delete mode 100644 positions/build.gradle delete mode 100644 positions/build.properties delete mode 100644 positions/proguard-rules.pro delete mode 100644 positions/src/beta/AndroidManifest.xml delete mode 100644 positions/src/beta/res/values/strings.xml delete mode 100644 positions/src/main/AndroidManifest.xml delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/App.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/MainActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/activities/AbsActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/adapters/MyPagerAdapter2.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/adapters/PostionModelAdapter.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/handlers/MainServiceHandler.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/listeners/OnGPSRTLocationListener.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/listeners/OnTXRTLocationListener.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/models/MainServiceBean.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/models/PostionFixModel.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/models/PostionModel.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/models/RulsBean.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/models/TaskModel.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/receivers/MainReceiver.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/services/GPSService.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/services/MainService.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/tasks/Rules.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/utils/LocationFusion.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/utils/PostionUtils.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/utils/TimeUtils.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/views/GridMapView.java delete mode 100644 positions/src/main/java/cc/winboll/studio/positions/views/LeftScrollView.java delete mode 100644 positions/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 positions/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 positions/src/main/res/drawable/ic_location_searching.xml delete mode 100644 positions/src/main/res/drawable/ic_my_location.xml delete mode 100644 positions/src/main/res/drawable/location_icon.png delete mode 100644 positions/src/main/res/drawable/marker.png delete mode 100644 positions/src/main/res/drawable/navi_marker_location.png delete mode 100644 positions/src/main/res/drawable/radius.xml delete mode 100644 positions/src/main/res/drawable/recycler_view_border.xml delete mode 100644 positions/src/main/res/drawable/road.jpeg delete mode 100644 positions/src/main/res/drawable/taxi.png delete mode 100644 positions/src/main/res/layout/activity_gridmap.xml delete mode 100644 positions/src/main/res/layout/activity_main.xml delete mode 100644 positions/src/main/res/layout/activity_main2.xml delete mode 100644 positions/src/main/res/layout/activity_main_simple.xml delete mode 100644 positions/src/main/res/layout/activity_settings.xml delete mode 100644 positions/src/main/res/layout/activity_testmapview.xml delete mode 100644 positions/src/main/res/layout/fragment_log.xml delete mode 100644 positions/src/main/res/layout/fragment_positions.xml delete mode 100644 positions/src/main/res/layout/fragment_tasks.xml delete mode 100644 positions/src/main/res/layout/fragment_txms.xml delete mode 100644 positions/src/main/res/layout/view_left_scroll.xml delete mode 100644 positions/src/main/res/layout/view_position.xml delete mode 100644 positions/src/main/res/layout/view_position_simple.xml delete mode 100644 positions/src/main/res/layout/view_position_simple_content.xml delete mode 100644 positions/src/main/res/menu/download.xml delete mode 100644 positions/src/main/res/menu/infowindow.xml delete mode 100644 positions/src/main/res/menu/marker_animation.xml delete mode 100644 positions/src/main/res/menu/marker_cluster.xml delete mode 100644 positions/src/main/res/menu/marker_groundoverlay.xml delete mode 100644 positions/src/main/res/menu/markercol.xml delete mode 100644 positions/src/main/res/menu/menu_polyline_items.xml delete mode 100644 positions/src/main/res/menu/polyline.xml delete mode 100644 positions/src/main/res/menu/scatterplotmap.xml delete mode 100644 positions/src/main/res/menu/simple_marker.xml delete mode 100644 positions/src/main/res/menu/toolbar_main.xml delete mode 100644 positions/src/main/res/menu/toolbar_positions.xml delete mode 100644 positions/src/main/res/menu/toolbar_tasks.xml delete mode 100644 positions/src/main/res/menu/vectorheatmap.xml delete mode 100644 positions/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 positions/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 positions/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 positions/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 positions/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 positions/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_blue.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_green.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_orange.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_purple.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_red.png delete mode 100644 positions/src/main/res/mipmap-xhdpi/petal_yellow.png delete mode 100644 positions/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 positions/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 positions/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 positions/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 positions/src/main/res/values/colors.xml delete mode 100644 positions/src/main/res/values/demos.xml delete mode 100644 positions/src/main/res/values/dimens.xml delete mode 100644 positions/src/main/res/values/strings.xml delete mode 100644 positions/src/main/res/values/styles.xml delete mode 100644 positions/src/stage/AndroidManifest.xml delete mode 100644 positions/src/stage/res/values/strings.xml diff --git a/appbase/build.properties b/appbase/build.properties index 8a2d4b2..da04eed 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat Mar 29 11:28:02 HKT 2025 +#Mon Apr 07 17:00:16 GMT 2025 stageCount=3 libraryProject=libappbase baseVersion=15.2 publishVersion=15.2.2 -buildCount=0 +buildCount=1 baseBetaVersion=15.2.3 diff --git a/libappbase/build.properties b/libappbase/build.properties index e5371fa..da04eed 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat Mar 29 11:27:54 HKT 2025 +#Mon Apr 07 17:00:16 GMT 2025 stageCount=3 libraryProject=libappbase baseVersion=15.2 publishVersion=15.2.2 -buildCount=0 +buildCount=1 baseBetaVersion=15.2.3 diff --git a/positions/.DS_Store b/positions/.DS_Store deleted file mode 100644 index 9a874b5768f336915163bb88cd434575b859f936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{ - - - - - - - - - diff --git a/positions/src/beta/res/values/strings.xml b/positions/src/beta/res/values/strings.xml deleted file mode 100644 index 7ef2ccf..0000000 --- a/positions/src/beta/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - Positions+ - - diff --git a/positions/src/main/AndroidManifest.xml b/positions/src/main/AndroidManifest.xml deleted file mode 100644 index 2c9bb18..0000000 --- a/positions/src/main/AndroidManifest.xml +++ /dev/null @@ -1,746 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/positions/src/main/java/cc/winboll/studio/positions/App.java b/positions/src/main/java/cc/winboll/studio/positions/App.java deleted file mode 100644 index 70bd3a2..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/App.java +++ /dev/null @@ -1,38 +0,0 @@ -package cc.winboll.studio.positions; - -/** - * @Author ZhanGSKen@QQ.COM - * @Date 2024/12/08 15:10:51 - * @Describe 全局应用类 - */ -import cc.winboll.studio.libappbase.GlobalApplication; -import cc.winboll.studio.libappbase.LogUtils; -import java.io.File; -import cc.winboll.studio.libappbase.winboll.WinBollActivityManager; - -public class App extends GlobalApplication { - - public static final String TAG = "App"; - public static String szDataFolder = ""; - - @Override - public void onCreate() { - // 必须在调用基类前设置应用调试标志, - // 这样可以预先设置日志与数据的存储根目录。 - super.onCreate(); - // 设置 WinBoll 应用 UI 类型 - getWinBollActivityManager().setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Aplication); - - LogUtils.d(TAG, "onCreate"); - if (BuildConfig.DEBUG) { - szDataFolder = getExternalFilesDir(TAG).toString(); - } else { - szDataFolder = getFilesDir().toString() + File.separator + TAG; - } - File fDataFolder = new File(szDataFolder); - if (!fDataFolder.exists()) { - fDataFolder.mkdirs(); - } - LogUtils.d(TAG, String.format("Data path is : %s", szDataFolder)); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java deleted file mode 100644 index ffa7144..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java +++ /dev/null @@ -1,374 +0,0 @@ -package cc.winboll.studio.positions; - -import android.app.Activity; -import android.app.ActivityManager; -import android.content.Context; -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.telecom.TelecomManager; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.Toast; -import android.widget.Toolbar; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.fragment.app.FragmentTransaction; -import androidx.viewpager.widget.ViewPager; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.libappbase.LogView; -import cc.winboll.studio.libappbase.utils.ToastUtils; -import cc.winboll.studio.libappbase.winboll.IWinBollActivity; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.activities.AbsActivity; -import cc.winboll.studio.positions.activities.JointPositioningActivity; -import cc.winboll.studio.positions.activities.SettingsActivity; -import cc.winboll.studio.positions.fragments.LogFragment; -import cc.winboll.studio.positions.fragments.PositionsFragment; -import cc.winboll.studio.positions.fragments.TXMSFragment; -import cc.winboll.studio.positions.fragments.TasksFragment; -import cc.winboll.studio.positions.models.MainServiceBean; -import com.google.android.material.tabs.TabLayout; -import java.util.ArrayList; -import java.util.List; -import cc.winboll.studio.positions.listeners.OnTXRTLocationListener; -import android.location.Location; - -final public class MainActivity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { - - public static final String TAG = "MainActivity"; - - public static final int REQUEST_HOME_ACTIVITY = 0; - public static final int REQUEST_ABOUT_ACTIVITY = 1; - - public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS"; - - static MainActivity _MainActivity; - - // 创建Fragment列表和标题列表 - List fragmentList = new ArrayList<>(); - List tabTitleList = new ArrayList<>(); - - TXMSFragment mTXMSFragment; - PositionsFragment mPositionsFragment; - TasksFragment mTasksFragment; - LogFragment mLogFragment; - LogView mLogView; - Toolbar mToolbar; - CheckBox cbMainService; - MainServiceBean mMainServiceBean; - private TabLayout tabLayout; - private ViewPager viewPager; - private List views; //用来存放放进ViewPager里面的布局 - //实例化存储imageView(导航原点)的集合 - ImageView[] imageViews; - //MyPagerAdapter adapter;//适配器 - MyPagerAdapter pagerAdapter; - LinearLayout linearLayout;//下标所在在LinearLayout布局里 - int currentPoint = 0;//当前被选中中页面的下标 - - private static final int DIALER_REQUEST_CODE = 1; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - _MainActivity = this; - - // 初始化工具栏 -// mToolbar = findViewById(R.id.toolbar); -// setActionBar(mToolbar); -//// if (isEnableDisplayHomeAsUp()) { -//// // 显示后退按钮 -//// getSupportActionBar().setDisplayHomeAsUpEnabled(true); -//// } -// getActionBar().setTitle(""); - - // 初始化地图视图 - // 创建Fragment实例 - mTXMSFragment = new TXMSFragment(); - // 获取FragmentTransaction - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - // 将Fragment添加到FrameLayout容器中 - transaction.add(R.id.frameLayout, mTXMSFragment); - transaction.commit(); - - tabLayout = findViewById(R.id.tabLayout); - viewPager = findViewById(R.id.viewPager); - - mPositionsFragment = new PositionsFragment(); - fragmentList.add(mPositionsFragment); - tabTitleList.add("位置"); - - mTasksFragment = new TasksFragment(); - fragmentList.add(mTasksFragment); - tabTitleList.add("任务"); - - - mLogFragment = new LogFragment(); - fragmentList.add(mLogFragment); - tabTitleList.add("日志"); - - - - // 设置ViewPager的适配器 - MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(adapter); - - // 关联TabLayout和ViewPager - tabLayout.setupWithViewPager(viewPager); - - mTXMSFragment.setOnTXRTLocationListener(new OnTXRTLocationListener(){ - @Override - public void onTXRTLocation(Location location) { - mPositionsFragment.showLocationTX(location); - } - }); - } - - public void startTXRTLocation(){ - mTXMSFragment.startRTLocation(); - } - - // ViewPager的适配器 - public class MyPagerAdapter extends FragmentStatePagerAdapter { - private static final int PAGE_COUNT = 3; - - public MyPagerAdapter(FragmentManager fm) { - super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); - } - - @Override - public Fragment getItem(int position) { - // 根据position返回不同的Fragment - return fragmentList.get(position); - } - - @Override - public int getCount() { - // 返回页面总数 - return PAGE_COUNT; - } - - @Override - public CharSequence getPageTitle(int position) { - return tabTitleList.get(position); - } - } - - //初始化view,即显示的图片 -// void initViewPager() { -// pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); -// mViewPager.setAdapter(pagerAdapter); -// //adapter = new MyPagerAdapter(views); -// //viewPager = findViewById(R.id.activitymainViewPager1); -// //viewPager.setAdapter(adapter); -// //linearLayout = findViewById(R.id.activitymainLinearLayout1); -// //initPoint();//初始化页面下方的点 -// mViewPager.setOnPageChangeListener(this); -// } - - //初始化所要显示的布局 -// void initLayoutData() { -// LayoutInflater inflater = LayoutInflater.from(getActivity()); -// View view1 = inflater.inflate(R.layout.fragment_gms, mViewPager, false); -// View view2 = inflater.inflate(R.layout.fragment_contacts, mViewPager, false); -// View view3 = inflater.inflate(R.layout.fragment_log, mViewPager, false); -// -// views = new ArrayList<>(); -// views.add(view1); -// views.add(view2); -// views.add(view3); -// } - -// void initPoint() { -// imageViews = new ImageView[5];//实例化5个图片 -// for (int i = 0; i < linearLayout.getChildCount(); i++) { -// imageViews[i] = (ImageView) linearLayout.getChildAt(i); -// imageViews[i].setImageResource(R.drawable.ic_launcher); -// imageViews[i].setOnClickListener(this);//点击导航点,即可跳转 -// imageViews[i].setTag(i);//重复利用实例化的对象 -// } -// currentPoint = 0;//默认第一个坐标 -// imageViews[currentPoint].setImageResource(R.drawable.ic_launcher); -// } - - //OnPageChangeListener接口要实现的三个方法 - /* onPageScrollStateChanged(int state) - 此方法是在状态改变的时候调用,其中state这个参数有三种状态: - SCROLL_STATE_DRAGGING(1)表示用户手指“按在屏幕上并且开始拖动”的状态 - (手指按下但是还没有拖动的时候还不是这个状态,只有按下并且手指开始拖动后log才打出。) - SCROLL_STATE_IDLE(0)滑动动画做完的状态。 - SCROLL_STATE_SETTLING(2)在“手指离开屏幕”的状态。*/ - @Override - public void onPageScrollStateChanged(int state) { - - } - /* onPageScrolled(int position, float positionOffset, int positionOffsetPixels) - 当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到调用。其中三个参数的含义分别为: - - position :当前页面,即你点击滑动的页面(从A滑B,则是A页面的position。 - positionOffset:当前页面偏移的百分比 - positionOffsetPixels:当前页面偏移的像素位置*/ - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - /* onPageSelected(int position) - 此方法是页面滑动完后得到调用,position是你当前选中的页面的Position(位置编号) - (从A滑动到B,就是B的position)*/ - public void onPageSelected(int position) { - -// ImageView preView = imageViews[currentPoint]; -// preView.setImageResource(R.drawable.ic_launcher); -// ImageView currView = imageViews[position]; -// currView.setImageResource(R.drawable.ic_launcher); -// currentPoint = position; - } - - //小圆点点击事件 - @Override - public void onClick(View v) { - // TODO Auto-generated method stub - //通过getTag(),可以判断是哪个控件 -// int i = (Integer) v.getTag(); -// viewPager.setCurrentItem(i);//直接跳转到某一个页面的情况 - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - //setSubTitle(""); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - LogUtils.d(TAG, "onDestroy() SOS"); - } - - @Override - public String getTag() { - return TAG; - } - - @Override - public Activity getActivity() { - return this; - } - - @Override - public void onBackPressed() { - //exit(); - } - -// void exit() { -// YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){ -// -// @Override -// public void onYes() { -// WinBollActivityManager.getInstance(getApplicationContext()).finishAll(); -// } -// -// @Override -// public void onNo() { -// } -// }; -// YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener); -// } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.toolbar_main, menu); - return super.onCreateOptionsMenu(menu); - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.item_settings) { - Intent intent = new Intent(this, SettingsActivity.class); - startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_joint_positioning) { - Intent intent = new Intent(this, JointPositioningActivity.class); - startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_demomain) { -// Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class); -// startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_positionnow) { - mTXMSFragment.sendRealTimePositioningMessage(); - } else if (item.getItemId() == R.id.item_addnewposition) { - ToastUtils.show("item_addnewpositon"); - } -// } else -// if (item.getItemId() == R.id.item_exit) { -// exit(); -// return true; -// } - return super.onOptionsItemSelected(item); - } - - - @Override - protected void onResume() { - super.onResume(); - } - - /** - * Android M 及以上检查是否是系统默认电话应用 - */ - public boolean isDefaultPhoneCallApp() { - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - TelecomManager manger = (TelecomManager) getSystemService(TELECOM_SERVICE); - if (manger != null && manger.getDefaultDialerPackage() != null) { - return manger.getDefaultDialerPackage().equals(getPackageName()); - } - } - return false; - } - - public boolean isServiceRunning(Class serviceClass) { - ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); - if (manager == null) return false; - - for (ActivityManager.RunningServiceInfo service : manager.getRunningServices( - Integer.MAX_VALUE)) { - if (serviceClass.getName().equals(service.service.getClassName())) { - return true; - } - } - - return false; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { -// switch (resultCode) { -// case REQUEST_HOME_ACTIVITY : { -// LogUtils.d(TAG, "REQUEST_HOME_ACTIVITY"); -// break; -// } -// case REQUEST_ABOUT_ACTIVITY : { -// LogUtils.d(TAG, "REQUEST_ABOUT_ACTIVITY"); -// break; -// } -// default : { -// super.onActivityResult(requestCode, resultCode, data); -// } -// } - if (requestCode == DIALER_REQUEST_CODE) { - if (resultCode == Activity.RESULT_OK) { - Toast.makeText(MainActivity.this, getString(R.string.app_name) + " 已成为默认电话应用", - Toast.LENGTH_SHORT).show(); - } - } - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java b/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java deleted file mode 100644 index 9f51055..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java +++ /dev/null @@ -1,471 +0,0 @@ -package cc.winboll.studio.positions; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/24 11:05:49 - */ -import android.Manifest; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; -import android.location.Location; -import android.os.Bundle; -import android.os.Looper; -import android.os.SystemClock; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.TextView; -import android.widget.Toast; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; -import cc.winboll.studio.libappbase.LogView; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.activities.SettingsActivity; -import cc.winboll.studio.positions.activities.TestMapViewActivity; -import cc.winboll.studio.positions.models.PostionModel; -import cc.winboll.studio.positions.utils.LocationFileStorage; -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.google.android.material.snackbar.Snackbar; -import com.tencent.map.geolocation.TencentLocation; -import com.tencent.map.geolocation.TencentLocationListener; -import com.tencent.map.geolocation.TencentLocationManager; -import com.tencent.map.geolocation.TencentLocationRequest; -import com.tencent.tencentmap.mapsdk.maps.CameraUpdate; -import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory; -import com.tencent.tencentmap.mapsdk.maps.LocationSource; -import com.tencent.tencentmap.mapsdk.maps.TencentMap; -import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer; -import com.tencent.tencentmap.mapsdk.maps.TextureMapView; -import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; -import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; -import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition; -import com.tencent.tencentmap.mapsdk.maps.model.LatLng; -import com.tencent.tencentmap.mapsdk.maps.model.Marker; -import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions; -import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle; -import java.util.ArrayList; -import java.util.List; -//import pub.devrel.easypermissions.EasyPermissions; - -public class MainSimpleActivity extends AppCompatActivity implements /*EasyPermissions.PermissionCallbacks,*/LocationSource, TencentLocationListener { - - public static final String TAG ="MainSimpleActivity"; - - private static final int PERMISSION_REQUEST_CODE = 1; - - Toolbar mToolbar; - private TextureMapView mapView; - protected TencentMap tencentMap; - TextView mtvInfo; - private LocationSource.OnLocationChangedListener locationChangedListener; - - private TencentLocationManager locationManager; - private TencentLocationRequest locationRequest; - private MyLocationStyle locationStyle; - ArrayList locationJsonList; - LogView mLogView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main_simple); - - locationJsonList = new ArrayList(); - - // 初始化工具栏 - mToolbar = findViewById(R.id.activitymainToolbar1); - setSupportActionBar(mToolbar); - getSupportActionBar().setSubtitle(TAG); - - mLogView = findViewById(R.id.logview); - mLogView.start(); - - TencentMapInitializer.setAgreePrivacy(true); - //TencentMapInitializer.setAgreePrivacy(this, true); - //TencentMapInitializer.start(this); - TencentLocationManager.setUserAgreePrivacy(true); - - - mapView = findViewById(R.id.mapview); - mapView.setOpaque(false); - //创建tencentMap地图对象,可以完成对地图的几乎所有操作 - tencentMap = mapView.getMap(); - - FloatingActionButton fab = findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Snackbar.make(view, "点击了悬浮按钮", Snackbar.LENGTH_LONG).show(); - } - }); - - mtvInfo = findViewById(R.id.tv_info); - - checkLocationPermission(); - - //设置显示定位的图标 - TencentLocationManager.setUserAgreePrivacy(true); - //建立定位 - //initLocation(); - //对地图操作类进行操作 -// CameraUpdate cameraSigma = -// CameraUpdateFactory.newCameraPosition(new CameraPosition( -// new LatLng(22.984066, 116.307548), -// 15f, -// 0f, -// 0f)); -// //移动地图 -// tencentMap.moveCamera(cameraSigma); - -// // 设置地图点击监听 -// tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener(){ -// -// @Override -// public void onMapClick(com.tencent.tencentmap.mapsdk.maps.model.LatLng latLng) { -// //创建Marker对象之前,设置属性 -// //LatLng position = new LatLng(40.011313,116.391907); -// BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker); -// Location location = createLocationFromLatLng(latLng); -// addLocationJson(location); -// Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng)); -// -// //创建Marker对象之后,修改属性 -//// Animation animation = new AlphaAnimation(0.7f, 0f); -//// animation.setDuration(2000); -//// mCustomMarker.setAnimation(animation); -//// mCustomMarker.startAnimation(); -// } -// }); - - - } - - void loadLocations() { - // 存储位置数据 -// Location location = new Location("gps"); -// location.setLatitude(22.984066); -// location.setLongitude(116.307548); -// location.setTime(System.currentTimeMillis()); -// -// // 方式1:保存到文件 -// List locations = new ArrayList<>(); -// locations.add(location); -// LocationFileStorage.saveToFile(this, locations); - - // 读取数据 - locationJsonList = LocationFileStorage.loadFromFile(this); - -// for (PostionModel lj : locationJsonList) { -// tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation()))); -// //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); -// } - } - - void addLocationJson(Location location) { - // 存储位置数据 -// Location location = new Location("gps"); -// location.setLatitude(22.984066); -// location.setLongitude(116.307548); -// location.setTime(System.currentTimeMillis()); - - // 方式1:保存到文件 - //List locations = new ArrayList<>(); - locationJsonList.add(new PostionModel(location)); - LocationFileStorage.saveToFile(this, locationJsonList); - - // 读取数据 -// List loaded = LocationFileStorage.loadFromFile(this); -// for (Location loc : loaded) { -// tencentMap.addMarker(new MarkerOptions(toTencentLatLng(loc))); -// //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); -// } - } - - - -// 创建Location对象方法 - private Location createLocationFromLatLng(LatLng latLng) { - Location location = new Location("tencent_map_manual"); - - // 设置基础坐标 - location.setLatitude(latLng.getLatitude()); - location.setLongitude(latLng.getLongitude()); - - // 设置必要元数据 - location.setTime(System.currentTimeMillis()); - location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); - location.setAccuracy(5.0f); // 手动点击精度设为5米 - - return location; - } - - - public LatLng toTencentLatLng(Location location) { - return new LatLng( - location.getLatitude(), - location.getLongitude() - ); - } - - - // 添加标记方法 -// private void addMarker(LatLng latLng) { -// tencentMap.clearAllOverlays(); -// MarkerOptions options = new MarkerOptions(latLng) -// .icon(BitmapDescriptorFactory.defaultMarker()) -// .title("点击保存"); -// tencentMap.addMarker(options); -// } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); -// LatLng center = new LatLng(39.904556, 116.427242); -// tencentMap.moveCamera( -// CameraUpdateFactory.newLatLngZoom(center, 13f) // 注意 13 → 13f -// ); - loadLocations(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.toolbar_main, menu); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.item_settings) { - Intent intent = new Intent(this, SettingsActivity.class); - startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_demomain) { -// Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class); -// startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_testmapview) { - Intent intent = new Intent(this, TestMapViewActivity.class); - startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } -// } else -// if (item.getItemId() == R.id.item_exit) { -// exit(); -// return true; -// } - return super.onOptionsItemSelected(item); - } - - /** - * mapview的生命周期管理 - */ - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - protected void onRestart() { - super.onRestart(); - mapView.onRestart(); - } - - - - /** - * 设置定位图标样式 - */ - private void setLocMarkerStyle() { - locationStyle = new MyLocationStyle(); - //创建图标 - BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(R.drawable.marker)); - locationStyle.icon(bitmapDescriptor); - //设置定位圆形区域的边框宽度 - locationStyle.strokeWidth(3); - //设置圆区域的颜色 - locationStyle.fillColor(R.color.style); - - tencentMap.setMyLocationStyle(locationStyle); - } - - - - private Bitmap getBitMap(int resourceId) { - Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId); - int width = bitmap.getWidth(); - int height = bitmap.getHeight(); - int newWidth = 55; - int newHeight = 55; - float widthScale = ((float)newWidth) / width; - float heightScale = ((float)newHeight) / height; - Matrix matrix = new Matrix(); - matrix.postScale(widthScale, heightScale); - bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); - return bitmap; - } - - - - /** - * 定位的一些初始化设置 - */ - private void initLocation() { - //用于访问腾讯定位服务的类, 周期性向客户端提供位置更新 - locationManager = TencentLocationManager.getInstance(this); - //设置坐标系 - locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02); - //创建定位请求 - locationRequest = TencentLocationRequest.create(); - //设置定位周期(位置监听器回调周期)为3s - locationRequest.setInterval(3000); - - //地图上设置定位数据源 - tencentMap.setLocationSource(this); - //设置当前位置可见 - tencentMap.setMyLocationEnabled(true); - //设置定位图标样式 - setLocMarkerStyle(); -// locationStyle = locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE); - tencentMap.setMyLocationStyle(locationStyle); - } - /** - * 实现位置监听 - * @param tencentLocation - * @param i - * @param s - */ - @Override - public void onLocationChanged(TencentLocation tencentLocation, int i, String s) { - - if (i == TencentLocation.ERROR_OK && locationChangedListener != null) { - final Location location = new Location(tencentLocation.getProvider()); - //设置经纬度以及精度 - location.setLatitude(tencentLocation.getLatitude()); - location.setLongitude(tencentLocation.getLongitude()); - location.setAccuracy(tencentLocation.getAccuracy()); - locationChangedListener.onLocationChanged(location); - - //显示回调的实时位置信息 - runOnUiThread(new Runnable() { - @Override - public void run() { -// Rules.getEffectInfo(location); -// double distance = DistanceUtils.getDistance( -// locationA.getLatitude(), -// locationA.getLongitude(), -// locationB.getLatitude(), -// locationB.getLongitude() -// ); - mtvInfo.setText(String.format("\n%f %f", location.getLatitude(), location.getLongitude())); - //打印tencentLocation的json字符串 -// Toast.makeText(getApplicationContext(), new Gson().toJson(location), Toast.LENGTH_LONG).show(); - } - }); - } - } - - @Override - public void onStatusUpdate(String s, int i, String s1) { - //GPS, WiFi, Radio 等状态发生变化 - Log.v("State changed", s + "===" + s1); - } - - - @Override - public void activate(OnLocationChangedListener onLocationChangedListener) { - locationChangedListener = onLocationChangedListener; - - int err = locationManager.requestLocationUpdates(locationRequest, this, Looper.myLooper()); - switch (err) { - case 1: - Toast.makeText(this, "设备缺少使用腾讯定位服务需要的基本条件", Toast.LENGTH_SHORT).show(); - break; - case 2: - Toast.makeText(this, "manifest 中配置的 key 不正确", Toast.LENGTH_SHORT).show(); - break; - case 3: - Toast.makeText(this, "自动加载libtencentloc.so失败", Toast.LENGTH_SHORT).show(); - break; - - default: - break; - } - } - - @Override - public void deactivate() { - locationManager.removeUpdates(this); - locationManager = null; - locationRequest = null; - locationChangedListener = null; - } - -// @Override -// public void onPermissionsGranted(int requestCode, @NonNull List perms) { -// Log.e("location quest: ", "success"); -// } -// -// @Override -// public void onPermissionsDenied(int requestCode, @NonNull List perms) { -// Log.e("location quest: ", "failed"); -// } - - private void checkLocationPermission() { - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED - || ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, - PERMISSION_REQUEST_CODE); - } else { - // 权限已授予,可进行定位操作 - //startLocationUpdates(); - } - } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == PERMISSION_REQUEST_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - //startLocationUpdates(); - } else { - // 用户拒绝了权限请求 - Toast.makeText(this, "请授予定位权限", Toast.LENGTH_SHORT).show(); - } - } - } - - - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/AbsActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/AbsActivity.java deleted file mode 100644 index fb34259..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/AbsActivity.java +++ /dev/null @@ -1,46 +0,0 @@ -package cc.winboll.studio.positions.activities; - -import android.content.pm.PackageManager; -import android.os.Build; -import android.os.Bundle; -import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.positions.R; - -import java.util.ArrayList; -import java.util.List; - -public abstract class AbsActivity extends AppCompatActivity { - - private static final int PERMISSIONS_REQUEST_CODE = 0x99FF; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - requestPermission(); - } - } - - @RequiresApi(api = Build.VERSION_CODES.M) - private void requestPermission() { - String[] permissions = onRequestPermissions(); - if (permissions != null) { - List deniedPermissions = new ArrayList<>(); - for (String permission : permissions) { - if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { - deniedPermissions.add(permission); - } - } - - if (deniedPermissions.size() > 0) { - requestPermissions(deniedPermissions.toArray(new String[0]), PERMISSIONS_REQUEST_CODE); - } - } - } - - protected String[] onRequestPermissions() { - return null; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java deleted file mode 100644 index fba81c1..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java +++ /dev/null @@ -1,36 +0,0 @@ -package cc.winboll.studio.positions.activities; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/22 02:01:44 - */ -import android.graphics.Color; -import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.views.GridMapView; - -public class GridMapActivity extends AppCompatActivity { - - GridMapView gridMap; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_gridmap); - - // 初始化视图 - GridMapView mapView = (GridMapView) findViewById(R.id.map_view); - - // 设置网格参数 - mapView.setGridParameters(10000f, 10000f, 10f); - - // 初始化显示区域(中心点400,300,显示范围2000x200) - mapView.initViewport(5000f, 5000f, 1000f, 1000f); - - // 绘制图形 - mapView.drawPoint(5000f, 5000f, Color.RED, 8f); - mapView.drawCircle(5000f, 5000f, 50f, Color.BLUE, 8f); - mapView.drawLine(4975f, 4975f, 5025f, 5025f, Color.GREEN, 2f); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java deleted file mode 100644 index 23c3c29..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java +++ /dev/null @@ -1,129 +0,0 @@ -package cc.winboll.studio.positions.activities; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/03/10 19:56:49 - * @Describe Main2Activity - */ -import android.Manifest; -import android.annotation.SuppressLint; -import android.content.pm.PackageManager; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Bundle; -import android.widget.TextView; -import android.widget.Toast; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.app.ActivityCompat; -import cc.winboll.studio.positions.R; - -public class JointPositioningActivity extends AppCompatActivity { - - public static final String TAG = "JointPositioningActivity"; - - - private LocationManager locationManager; - private TextView locationTextView; - - @SuppressLint("MissingPermission") - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main2); - - locationTextView = findViewById(R.id.location_text_view); - locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); - - // 检查权限 - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && - ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, - 1); - return; - } - - // 请求GPS定位 - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener); - - // 请求基站(网络)定位 - locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener); - } - - private LocationListener gpsLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理GPS定位结果 - updateLocation(location); - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; - - private LocationListener networkLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理基站(网络)定位结果 - updateLocation(location); - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; - - private void updateLocation(Location location) { - if (location != null) { - double latitude = location.getLatitude(); - double longitude = location.getLongitude(); - - // 简单的融合示例:这里只是显示最后获取到的位置,实际应用中需要更复杂的融合算法 - locationTextView.setText("Latitude: " + latitude + ", Longitude: " + longitude); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == 1) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - // 权限已授予,可以继续获取位置信息 - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && - ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - return; - } - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener); - locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener); - } else { - Toast.makeText(this, "权限被拒绝,无法获取位置信息", Toast.LENGTH_SHORT).show(); - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (locationManager != null) { - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && - ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - return; - } - locationManager.removeUpdates(gpsLocationListener); - locationManager.removeUpdates(networkLocationListener); - } - } -} - diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java deleted file mode 100644 index e23a5bc..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java +++ /dev/null @@ -1,116 +0,0 @@ -package cc.winboll.studio.positions.activities; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/21 05:37:42 - */ -import android.app.Activity; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.provider.Settings; -import android.view.View; -import android.view.WindowManager; -import android.widget.Toast; -import android.widget.Toolbar; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.libappbase.utils.ToastUtils; -import cc.winboll.studio.libappbase.winboll.IWinBollActivity; -import cc.winboll.studio.positions.R; -import java.lang.reflect.Field; - -public class SettingsActivity extends AppCompatActivity implements IWinBollActivity { - - public static final String TAG = "SettingsActivity"; - - Toolbar mToolbar; - - @Override - public String getTag() { - return TAG; - } - - @Override - public Activity getActivity() { - return null; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_settings); - - // 初始化工具栏 - mToolbar = findViewById(R.id.activitymainToolbar1); - setActionBar(mToolbar); - // 显示后退按钮 - getActionBar().setDisplayHomeAsUpEnabled(true); - getActionBar().setSubtitle(getTag()); - - } - - public void onDefaultPhone(View view) { - Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS); - startActivity(intent); - } - public void onCanDrawOverlays(View view) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M - && !Settings.canDrawOverlays(this)) { - // 请求 悬浮框 权限 - askForDrawOverlay(); - } else { - ToastUtils.show("悬浮窗已开启"); - } - } - - private void askForDrawOverlay() { - AlertDialog alertDialog = new AlertDialog.Builder(this) - .setTitle("允许显示悬浮框") - .setMessage("为了使电话监听服务正常工作,请允许这项权限") - .setPositiveButton("去设置", new DialogInterface.OnClickListener(){ - @Override - public void onClick(DialogInterface dialog, int which) { - openDrawOverlaySettings(); - dialog.dismiss(); - } - }) - .setNegativeButton("稍后再说", new DialogInterface.OnClickListener(){ - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }) - .create(); - - //noinspection ConstantConditions - alertDialog.getWindow().setFlags( - WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, - WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); - alertDialog.show(); - } - - /** - * 跳转悬浮窗管理设置界面 - */ - private void openDrawOverlaySettings() { - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // Android M 以上引导用户去系统设置中打开允许悬浮窗 - // 使用反射是为了用尽可能少的代码保证在大部分机型上都可用 - try { - Context context = this; - Class clazz = Settings.class; - Field field = clazz.getDeclaredField("ACTION_MANAGE_OVERLAY_PERMISSION"); - Intent intent = new Intent(field.get(null).toString()); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setData(Uri.parse("package:" + context.getPackageName())); - context.startActivity(intent); - } catch (Exception e) { - Toast.makeText(this, "请在悬浮窗管理中打开权限", Toast.LENGTH_LONG).show(); - } - } - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java deleted file mode 100644 index cd9cfe6..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java +++ /dev/null @@ -1,76 +0,0 @@ -package cc.winboll.studio.positions.activities; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/24 12:14:04 - */ -import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.positions.R; -import com.tencent.tencentmap.mapsdk.maps.TencentMap; -import com.tencent.tencentmap.mapsdk.maps.TextureMapView; - -public class TestMapViewActivity extends AppCompatActivity { - - public static final String TAG = "TestMapViewActivity"; - - /** - * 由于SDK并没有提供用于MapView管理地图生命周期的Activity - * 因此需要用户继承Activity后管理地图的生命周期,防止内存泄露 - */ - - private TextureMapView mapView; - protected TencentMap tencentMap; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_testmapview); - - mapView = findViewById(R.id.mapview); - mapView.setOpaque(false); - //创建tencentMap地图对象,可以完成对地图的几乎所有操作 - tencentMap = mapView.getMap(); - - } - - - /** - * mapview的生命周期管理 - */ - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - protected void onRestart() { - super.onRestart(); - mapView.onRestart(); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/adapters/MyPagerAdapter2.java b/positions/src/main/java/cc/winboll/studio/positions/adapters/MyPagerAdapter2.java deleted file mode 100644 index d523d13..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/adapters/MyPagerAdapter2.java +++ /dev/null @@ -1,43 +0,0 @@ -package cc.winboll.studio.positions.adapters; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/20 13:33:04 - * @Describe MyPagerAdapter - */ -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentPagerAdapter; -import cc.winboll.studio.positions.fragments.TasksFragment; -import cc.winboll.studio.positions.fragments.PositionsFragment; -import cc.winboll.studio.positions.fragments.LogFragment; - -public class MyPagerAdapter2 extends FragmentPagerAdapter { - public static final String TAG = "MyPagerAdapter2"; - - private static final int PAGE_COUNT = 3; - - public MyPagerAdapter2(@NonNull FragmentManager fm) { - super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); - } - - @NonNull - @Override - public Fragment getItem(int position) { -// if(position == 0) { -// return PositionsFragment.newInstance(position); -// } else if(position == 1) { -// return TasksFragment.newInstance(position); -// } else { -// return LogFragment.newInstance(position); -// } - return null; - } - - @Override - public int getCount() { - return PAGE_COUNT; - } -} - diff --git a/positions/src/main/java/cc/winboll/studio/positions/adapters/PostionModelAdapter.java b/positions/src/main/java/cc/winboll/studio/positions/adapters/PostionModelAdapter.java deleted file mode 100644 index 3792bb7..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/adapters/PostionModelAdapter.java +++ /dev/null @@ -1,250 +0,0 @@ -package cc.winboll.studio.positions.adapters; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/04 13:38:13 - */ -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.Switch; -import android.widget.TextView; -import android.widget.Toast; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog; -import cc.winboll.studio.libappbase.utils.ToastUtils; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.models.PostionModel; -import cc.winboll.studio.positions.utils.PostionUtils; -import cc.winboll.studio.positions.views.LeftScrollView; -import java.util.ArrayList; - -public class PostionModelAdapter extends RecyclerView.Adapter { - - public static final String TAG = "PostionModelAdapter"; - - private static final int VIEW_TYPE_SIMPLE = 0; - private static final int VIEW_TYPE_EDIT = 1; - - private Context context; - private ArrayList mPostionList; - - public PostionModelAdapter(Context context, ArrayList postionList) { - this.context = context; - this.mPostionList = postionList; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - LayoutInflater inflater = LayoutInflater.from(context); - if (viewType == VIEW_TYPE_SIMPLE) { - View view = inflater.inflate(R.layout.view_position_simple, parent, false); - return new SimpleViewHolder(parent, view); - } else { - View view = inflater.inflate(R.layout.view_position, parent, false); - return new EditViewHolder(parent, view); - } - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) { - final PostionModel model = mPostionList.get(position); - if (holder instanceof SimpleViewHolder) { - final SimpleViewHolder simpleViewHolder = (SimpleViewHolder) holder; - String szView = model.getComments().trim().equals("") ?"[NULL]": model.getComments(); - simpleViewHolder.tvComments.setText(szView); - simpleViewHolder.scrollView.setOnActionListener(new LeftScrollView.OnActionListener(){ - - @Override - public void onUp() { - ArrayList list = mPostionList; - if (position > 0) { - ToastUtils.show("onUp"); - simpleViewHolder.scrollView.smoothScrollTo(0, 0); -// PhoneConnectRuleModel newBean = new PhoneConnectRuleModel(); -// newBean.setRuleText(list.get(position).getRuleText()); -// newBean.setIsAllowConnection(list.get(position).isAllowConnection()); -// newBean.setIsEnable(list.get(position).isEnable()); -// newBean.setIsSimpleView(list.get(position).isSimpleView()); - list.add(position - 1, list.get(position)); - list.remove(position + 1); - PostionUtils.getInstance(context).savePostionModelList(); - notifyDataSetChanged(); - } - } - - @Override - public void onDown() { - ArrayList list = mPostionList; - if (position < list.size() - 1) { - ToastUtils.show("onDown"); - simpleViewHolder.scrollView.smoothScrollTo(0, 0); -// PhoneConnectRuleModel newBean = new PhoneConnectRuleModel(); -// newBean.setRuleText(list.get(position).getRuleText()); -// newBean.setIsAllowConnection(list.get(position).isAllowConnection()); -// newBean.setIsEnable(list.get(position).isEnable()); -// newBean.setIsSimpleView(list.get(position).isSimpleView()); - list.add(position + 2, list.get(position)); - list.remove(position); - PostionUtils.getInstance(context).savePostionModelList(); - notifyDataSetChanged(); - } - } - - @Override - public void onEdit() { - simpleViewHolder.scrollView.smoothScrollTo(0, 0); - model.setIsSimpleView(false); - notifyDataSetChanged(); - //notifyItemChanged(position); - } - - @Override - public void onDelete() { - YesNoAlertDialog.show(simpleViewHolder.scrollView.getContext(), "删除确认", "是否删除该通话规则?", new YesNoAlertDialog.OnDialogResultListener(){ - - @Override - public void onYes() { - simpleViewHolder.scrollView.smoothScrollTo(0, 0); - model.setIsSimpleView(true); - ArrayList list = mPostionList; - list.remove(position); - PostionUtils.getInstance(context).savePostionModelList(); - notifyDataSetChanged(); - //notifyItemChanged(position); - } - - @Override - public void onNo() { - } - }); - - } - }); -// simpleViewHolder.editButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// model.setIsSimpleView(false); -// notifyItemChanged(position); -// } -// }); -// simpleViewHolder.deleteButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// model.setIsSimpleView(false); -// ArrayList list = Rules.getInstance(context).getPhoneBlacRuleBeanList(); -// list.remove(position); -// Rules.getInstance(context).saveRules(); -// notifyItemChanged(position); -// } -// }); -// // 触摸事件处理 -// simpleViewHolder.contentLayout.setOnTouchListener(new View.OnTouchListener() { -// @Override -// public boolean onTouch(View v, MotionEvent event) { -// switch (event.getAction()) { -// case MotionEvent.ACTION_DOWN: -// simpleViewHolder.startX = event.getX(); -// simpleViewHolder.isSwiping = true; -// break; -// case MotionEvent.ACTION_MOVE: -// if (simpleViewHolder.isSwiping) { -// float deltaX = simpleViewHolder.startX - event.getX(); -// if (deltaX > 0) { // 左滑 -// float translationX = Math.max(-simpleViewHolder.actionLayout.getWidth(), -deltaX); -// simpleViewHolder.contentLayout.setTranslationX(translationX); -// simpleViewHolder.actionLayout.setVisibility(View.VISIBLE); -// } -// } -// break; -// case MotionEvent.ACTION_UP: -// simpleViewHolder.isSwiping = false; -// if (simpleViewHolder.contentLayout.getTranslationX() < -simpleViewHolder.actionLayout.getWidth() / 2) { -// // 保持按钮显示 -// simpleViewHolder.contentLayout.setTranslationX(-actionLayout.getWidth()); -// } else { -// // 恢复原状 -// simpleViewHolder.contentLayout.animate().translationX(0).setDuration(200).start(); -// simpleViewHolder.actionLayout.setVisibility(View.INVISIBLE); -// } -// break; -// } -// return true; -// } -// }); - } else if (holder instanceof EditViewHolder) { - final EditViewHolder editViewHolder = (EditViewHolder) holder; - editViewHolder.etComments.setText(model.getComments()); - editViewHolder.swEnable.setChecked(model.isEnable()); - editViewHolder.btnConfirm.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - model.setComments(editViewHolder.etComments.getText().toString()); - model.setIsEnable(editViewHolder.swEnable.isChecked()); - model.setIsSimpleView(true); - PostionUtils.getInstance(context).savePostionModelList(); - notifyItemChanged(position); - Toast.makeText(context, "保存成功", Toast.LENGTH_SHORT).show(); - } - }); - } - } - - @Override - public int getItemCount() { - return mPostionList.size(); - } - - @Override - public int getItemViewType(int position) { - PostionModel model = mPostionList.get(position); - // 这里可以根据模型的状态来决定视图类型,简单起见,假设点击按钮后进入编辑视图 - return model.isSimpleView() ? VIEW_TYPE_SIMPLE : VIEW_TYPE_EDIT; - } - - static class SimpleViewHolder extends RecyclerView.ViewHolder { - - private final LeftScrollView scrollView; - private final TextView tvComments; - - - public SimpleViewHolder(@NonNull ViewGroup parent, @NonNull View itemView) { - super(itemView); - //LinearLayout linearLayout = itemView.findViewById(R.id.linearLayout); - scrollView = itemView.findViewById(R.id.scrollView); - //tvRuleText = itemView.findViewById(R.id.ruletext_tv); - tvComments = new TextView(itemView.getContext()); - - //tvComments.setBackgroundColor(Color.GRAY); - //LogUtils.d(TAG, String.format("linearLayout.getMeasuredWidth() %d", linearLayout.getMeasuredWidth())); - LogUtils.d(TAG, String.format("parent.getMeasuredWidth() %d", parent.getMeasuredWidth())); - scrollView.setContentWidth(parent.getMeasuredWidth()); - //scrollView.setContentWidth(600); - scrollView.addContentLayout(tvComments); - } - - } - - static class EditViewHolder extends RecyclerView.ViewHolder { - EditText etComments; - Switch swEnable; - Button btnMoveCarema; - Button btnConfirm; - - public EditViewHolder(@NonNull ViewGroup parent, @NonNull View itemView) { - super(itemView); - etComments = itemView.findViewById(R.id.comments_et); - swEnable = itemView.findViewById(R.id.enable_sw); - btnMoveCarema = itemView.findViewById(R.id.movecarema_btn); - btnConfirm = itemView.findViewById(R.id.confirm_btn); - } - } -} - diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java deleted file mode 100644 index dfc3be3..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java +++ /dev/null @@ -1,60 +0,0 @@ -package cc.winboll.studio.positions.fragments; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/20 12:58:15 - * @Describe 应用日志 - */ -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.libappbase.LogView; - -public class LogFragment extends Fragment { - - public static final String TAG = "LogFragment"; - - private static final String ARG_PAGE = "ARG_PAGE"; - private int mPage; - - LogView mLogView; - -// public static LogFragment newInstance(int page) { -// Bundle args = new Bundle(); -// args.putInt(ARG_PAGE, page); -// LogFragment fragment = new LogFragment(); -// fragment.setArguments(args); -// return fragment; -// } -// -// @Override -// public void onCreate(Bundle savedInstanceState) { -// super.onCreate(savedInstanceState); -// if (getArguments() != null) { -// mPage = getArguments().getInt(ARG_PAGE); -// } -// } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_log, container, false); - mLogView = view.findViewById(R.id.logview); - mLogView.start(); - return view; - } - - @Override - public void onResume() { - super.onResume(); - mLogView.start(); - } - - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java deleted file mode 100644 index a897250..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java +++ /dev/null @@ -1,508 +0,0 @@ -package cc.winboll.studio.positions.fragments; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/20 12:57:50 - * @Describe 联系人 - */ -import android.Manifest; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.content.pm.PackageManager; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.IBinder; -import android.os.SystemClock; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.EditText; -import android.widget.Switch; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.app.ActivityCompat; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.positions.MainActivity; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.adapters.PostionModelAdapter; -import cc.winboll.studio.positions.listeners.OnGPSRTLocationListener; -import cc.winboll.studio.positions.models.PostionFixModel; -import cc.winboll.studio.positions.models.PostionModel; -import cc.winboll.studio.positions.services.GPSService; -import cc.winboll.studio.positions.utils.LocationFusion; -import cc.winboll.studio.positions.utils.PostionUtils; -import java.util.ArrayList; - -public class PositionsFragment extends Fragment { - - public static final String TAG = "PositionsFragment"; - - private static final String ARG_PAGE = "ARG_PAGE"; - private int mPage; - - private LocationManager locationManager; - - - //MyHandler mMyHandler; - - TextView mtvTXMyLocationInfo; - TextView mtvPhoneGPSInfo; - MyServiceConnection mMyServiceConnection; - GPSService mGPSService; - Button mbtnTXRT; - Button mbtnAdd; - Location mLocationTX; - Location mLocationPhoneGPS; - private RecyclerView recyclerView; - private PostionModelAdapter mPostionModelAdapter; - private ArrayList mPostionList; - - TextView mtvPostionFixModelInfo; - TextView mtvLockPostionInfo; - - EditText metLockLatitude; - EditText metLockLongitude; - - Switch mswTaskService; - - double latitudeWifiLock; - double longitudeWifiLock; - double latitudeGPSLock; - double longitudeGPSLock; - double latitudeFuseLock; - double longitudeFuseLock; - - PostionFixModel mPostionFixModel; - static Location _LocationPhoneGPSLock; - - LocationManager locationManagerPhoneGPS; - volatile static int nFixActivationCountValue = 70; - volatile static int nCurrentFixActivationCountValue = 0; - volatile static int nGPSUpdateCount = 0; - -// public static PositionsFragment newInstance(int page) { -// Bundle args = new Bundle(); -// args.putInt(ARG_PAGE, page); -// PositionsFragment fragment = new PositionsFragment(); -// fragment.setArguments(args); -// return fragment; -// } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); -// if (getArguments()!= null) { -// mPage = getArguments().getInt(ARG_PAGE); -// } - setHasOptionsMenu(true); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - View viewMain = inflater.inflate(R.layout.fragment_positions, container, false); - - mtvTXMyLocationInfo = viewMain.findViewById(R.id.txmylocationinfo_tv); - mtvPhoneGPSInfo = viewMain.findViewById(R.id.phonegpsinfo_tv); - mMyServiceConnection = new MyServiceConnection(); - - Intent intent = new Intent(getActivity(), GPSService.class); - getActivity().startService(intent); - getActivity().bindService(intent, mMyServiceConnection, Context.BIND_IMPORTANT); - - mbtnTXRT = viewMain.findViewById(R.id.txrt_btn); - mbtnTXRT.setOnClickListener(new Button.OnClickListener(){ - @Override - public void onClick(View view) { - //ToastUtils.show("mbtnTXRT"); - ((MainActivity)getActivity()).startTXRTLocation(); - } - }); - mbtnAdd = viewMain.findViewById(R.id.add_btn); - mbtnAdd.setOnClickListener(new Button.OnClickListener(){ - @Override - public void onClick(View view) { - //ToastUtils.show("mbtnAdd"); - PostionUtils postionUtils = PostionUtils.getInstance(getActivity()); - postionUtils.addPostion(mLocationPhoneGPS); - mPostionModelAdapter.notifyDataSetChanged(); - } - }); - - recyclerView = viewMain.findViewById(R.id.recycler_view); - recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); - - mPostionList = PostionUtils.getInstance(getActivity()).getPostionModelList(); - - mPostionModelAdapter = new PostionModelAdapter(getActivity(), mPostionList); - recyclerView.setAdapter(mPostionModelAdapter); - - -// metLockLatitude = viewMain.findViewById(R.id.locklatitude_et); -// metLockLongitude = viewMain.findViewById(R.id.locklongitude_et); -// metLockLatitude.setEnabled(false); -// metLockLongitude.setEnabled(false); -// mswTaskService = viewMain.findViewById(R.id.taskservice_sw); - - //mMyHandler = new MyHandler(); - - //nCurrentFixActivationCountValue = 0; - //nGPSUpdateCount = 0; - - -// mtvPostionFixModelInfo = viewMain.findViewById(R.id.postionfixmodelinfo_tv); -// mtvLockPostionInfo = viewMain.findViewById(R.id.lockpostioninfo_tv); -// - - //locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE); - -// mswTaskService.setOnClickListener(new View.OnClickListener(){ -// @Override -// public void onClick(View p1) { -// -// } -// }); - - // 请求GPS定位 - //locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, phoneGPSLocationListener); - - // 请求基站(网络)定位 - //locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener); - - - //ToastUtils.show("PositionsFragment onCreateView"); - - //showLocationTX(); - //showLocationPhoneGPS(); - //showPostionFixModelInfo(); - - return viewMain; - } - - void moveToCurrentLocation() { - if (!metLockLatitude.getText().toString().trim().equals("") - && !metLockLongitude.getText().toString().trim().equals("")) { - _LocationPhoneGPSLock = new Location("User_Defined_GPS"); - _LocationPhoneGPSLock.setLatitude(Double.parseDouble(metLockLatitude.getText().toString())); - _LocationPhoneGPSLock.setLongitude(Double.parseDouble(metLockLongitude.getText().toString())); - //ToastUtils.show("定位手动设定位置"); - } else { - //Location locationFix = fixGPSLocationFromPostionFixModel(_LocationPhoneGPS); - //_LocationPhoneGPSLock = _LocationTX; - //_LocationPhoneGPSLock = locationFix; - //ToastUtils.show("定位GPS设定位置"); - } - //showLockPostionInfo(); - //ToastUtils.show(String.format("%s", locationFix.toString())); - - TXMSFragment.moveToLocation(_LocationPhoneGPSLock.getLatitude(), _LocationPhoneGPSLock.getLongitude()); - } - -// void showLocationPhoneGPS(Location location) { -// if (location != null) { -// mLocationPhoneGPS = location; -// String szTemp = String.format("\n(%d)PhoneGPS MyLocation Info\nLatitude %f\nLongitude %f\nAccuracy %f\n", nGPSUpdateCount, _LocationPhoneGPS.getLatitude(), _LocationPhoneGPS.getLongitude(), _LocationPhoneGPS.getAccuracy()); -// mtvPhoneMyLocationInfo.append(szTemp); -// LogUtils.d(TAG, szTemp); -// } -// } - -// void showPostionFixModelInfo() { -// if (mPostionFixModel != null && mLocationTX != null && _LocationPhoneGPS != null) { -// String szTemp = String.format("\n(%d)FixModel Info\nLatitude TX %f\nLatitude GPS %f\nLatitude Fix %f\nLongitude TX %f\nLongitude GPS %f\nLongitude Fix %f\n\n", -// nCurrentFixActivationCountValue, -// mLocationTX.getLatitude(), -// _LocationPhoneGPS.getLatitude(), -// mPostionFixModel.getLatitudeFixModel(), -// mLocationTX.getLongitude(), -// _LocationPhoneGPS.getLongitude(), -// mPostionFixModel.getLongitudeFixModel()); -// mtvPostionFixModelInfo.append(szTemp); -// LogUtils.d(TAG, szTemp); -// } -// } - -// void showLockPostionInfo() { -// if (mPostionFixModel != null && mLocationTX != null && _LocationPhoneGPSLock != null) { -// String szTemp = String.format("\n%s\nFixModel Info\nLatitude TX %f\nLatitude GPS %f\nLatitude Fix %f\nLatitude GPSLock %f\nLongitude TX %f\nLongitude GPS %f\nLongitude Fix %f\nLongitude GPSLock %f\n\n", -// TimeUtils.getCurrentTimeString(), -// mLocationTX.getLatitude(), -// _LocationPhoneGPS.getLatitude(), -// mPostionFixModel.getLatitudeFixModel(), -// _LocationPhoneGPSLock.getLatitude(), -// mLocationTX.getLongitude(), -// _LocationPhoneGPS.getLongitude(), -// mPostionFixModel.getLongitudeFixModel(), -// _LocationPhoneGPSLock.getLongitude()); -// mtvLockPostionInfo.append(szTemp); -// LogUtils.d(TAG, szTemp); -// } -// } - -// void showLocationTX() { -// if (_LocationTX != null) { -// String szTemp = String.format("TX MyLocation Init Info\nLatitude %f, Longitude %f, Accuracy %f", _LocationTX.getLatitude(), _LocationTX.getLongitude(), _LocationTX.getAccuracy()); -// mtvTXMyLocationInfo.setText(szTemp); -// LogUtils.d(TAG, szTemp); -// } -// } - - public void showLocationTX(Location location) { - if (location != null) { - mLocationTX = location; - String szTemp = String.format("TX MyLocation Info\nLatitude %f, Longitude %f\nAccuracy %f", mLocationTX.getLatitude(), mLocationTX.getLongitude(), mLocationTX.getAccuracy()); - mtvTXMyLocationInfo.setText(szTemp); - LogUtils.d(TAG, szTemp); - } - } - - public void showLocationPhoneGPS(Location location) { - if (location != null) { - mLocationPhoneGPS = location; - String szTemp = String.format("Phone GPS Info\nLatitude %f, Longitude %f\nAccuracy %f", mLocationPhoneGPS.getLatitude(), mLocationPhoneGPS.getLongitude(), mLocationPhoneGPS.getAccuracy()); - mtvPhoneGPSInfo.setText(szTemp); - LogUtils.d(TAG, szTemp); - } - } - - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { - inflater.inflate(R.menu.toolbar_positions, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - @Override - public void onDestroy() { - super.onDestroy(); - if (locationManager != null) { - if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && - ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - return; - } - locationManager.removeUpdates(phoneGPSLocationListener); - locationManager.removeUpdates(networkLocationListener); - } - } - - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { -// if (item.getItemId() == R.id.item_addposition) { -// ToastUtils.show("item_addposition"); -// } -// } else -// if (item.getItemId() == R.id.item_exit) { -// exit(); -// return true; -// } - return super.onOptionsItemSelected(item); - } - -// void updatePostionFixModel() { -// if (_LocationPhoneGPS == null -// || mLocationTX == null) { -// return; -// } -// -// nCurrentFixActivationCountValue++; -// if (nCurrentFixActivationCountValue < nFixActivationCountValue) { -// mPostionFixModel = PostionFixModel.loadPostionFixModel(); -// mPostionFixModel.setLatitudeFixModel(_LocationPhoneGPS.getLatitude() - mLocationTX.getLatitude()); -// mPostionFixModel.setLongitudeFixModel(_LocationPhoneGPS.getLongitude() - mLocationTX.getLongitude()); -// -//// String szTemp = String.format("PostionFixModel Info\nLatitude Fix %f, Longitude Fix %f", mPostionFixModel.getLatitudeFixModel(), mPostionFixModel.getLongitudeFixModel()); -//// mtvPostionFixModelInfo.setText(szTemp); -//// LogUtils.d(TAG, szTemp); -// PostionFixModel.savePostionFixModel(mPostionFixModel); -// //ToastUtils.show(szTemp); -// LogUtils.d(TAG, String.format("updatePostionFixModel() run %d", nCurrentFixActivationCountValue)); -// -// showPostionFixModelInfo(); -// } else { -// // 定位修复模型数据定型, GPS定位监听停止 -// // 在需要停止监听的地方(如onPause/onDestroy)添加: -// if (locationManagerPhoneGPS != null) { -// // 取消位置更新监听 -// locationManagerPhoneGPS.removeUpdates(phoneGPSLocationListener); -// // 可选:停止后释放资源 -// phoneGPSLocationListener = null; -// } -// LogUtils.d(TAG, String.format("updatePostionFixModel() stop %d", nCurrentFixActivationCountValue)); -// } -// } - - private Location fixGPSLocationFromPostionFixModel(Location location) { - // 用腾讯定位数据与GPS定位数据的数据差修复模型,来修复一下GPS定位数据。 - mPostionFixModel = PostionFixModel.loadPostionFixModel(); - - //Location location = locationTX; - Location locationFix = new Location("GPS_Fix_Map_Manual"); - - // 设置基础坐标 - locationFix.setLatitude(location.getLatitude() - mPostionFixModel.getLatitudeFixModel()); - locationFix.setLongitude(location.getLongitude() - mPostionFixModel.getLongitudeFixModel()); - - // 设置必要元数据 - locationFix.setTime(System.currentTimeMillis()); - locationFix.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); - locationFix.setAccuracy(5.0f); // 手动点击精度设为5米 - - return locationFix; - } - - private LocationListener phoneGPSLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理GPS定位结果 - nGPSUpdateCount++; - updateGPSLocation(location); - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; - - private LocationListener networkLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理基站(网络)定位结果 - updateWifiLocation(location); - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; - - void updateWifiLocation(Location location) { - if (location != null) { - double latitude = location.getLatitude(); - double longitude = location.getLongitude(); - - latitudeWifiLock = latitude; - longitudeWifiLock = longitude; - - // 简单的融合示例:这里只是显示最后获取到的位置,实际应用中需要更复杂的融合算法 - //tvWifiLocation.setText(String.format("Wifi [ Latitude: %f \nLongitude: %f ]", latitudeWifiLock, longitudeWifiLock)); - fuseLocationData(); - } - } - - void updateGPSLocation(Location location) { - if (location != null) { -// double latitude = location.getLatitude(); -// double longitude = location.getLongitude(); -// -// latitudeGPSLock = latitude; -// longitudeGPSLock = longitude; -// -// // 简单的融合示例:这里只是显示最后获取到的位置,实际应用中需要更复杂的融合算法 -// tvGPSLocation.setText(String.format("GPS [ Latitude: %f \nLongitude: %f ]", latitudeGPSLock, longitudeGPSLock)); -// fuseLocationData(); - - //_LocationPhoneGPS = location; - // 位置变化时的处理逻辑 -// double latitude = location.getLatitude(); -// double longitude = location.getLongitude(); -// String szTemp = String.format("Phone GPS MyLocation Init Info\nLatitude %f, Longitude %f, Accuracy %f", _LocationPhoneGPS.getLatitude(), _LocationPhoneGPS.getLongitude(), _LocationPhoneGPS.getAccuracy()); -// mtvPhoneMyLocationInfo.setText(szTemp); -// LogUtils.d(TAG, szTemp); - //showLocationPhoneGPS(); - //updatePostionFixModel(); - if(mswTaskService.isChecked()) { - moveToCurrentLocation(); - } - } - } - - void fuseLocationData() { - // 融合数据不充分退出 - if (latitudeWifiLock == 0 || - longitudeWifiLock == 0 || - latitudeGPSLock == 0 || - longitudeGPSLock == 0) { - return; - } - - double[] result = LocationFusion.fuseLocationData(latitudeGPSLock, longitudeGPSLock, - latitudeWifiLock, longitudeWifiLock, - 0.6, 0.4); - latitudeFuseLock = result[0]; - longitudeFuseLock = result[1]; - - //tvFuseLocation.setText(String.format("Fuse [ Latitude: %f \nLongitude: %f ]", latitudeFuseLock, longitudeFuseLock)); - } - -// public static final int INIT_POSITION = 1; -// class MyHandler extends Handler { -// @Override -// public void handleMessage(@NonNull Message msg) { -// switch (msg.what) { -// case INIT_POSITION: -// // 在这里处理接收到消息后的逻辑,比如更新 UI -// mLocationTX = (Location)msg.obj; -// //showLocationTX(); -// -// break; -// default: -// break; -// } -// } -// }; - -// public void sendInitPositioningMessage(Location location) { -// if (mMyHandler != null) { -// Message message = Message.obtain(); -// message.what = INIT_POSITION; -// message.obj = location; -// mMyHandler.sendMessage(message); -// } -// } - - private class MyServiceConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - LogUtils.d(TAG, "onServiceConnected(...)"); - GPSService.MyBinder binder = (GPSService.MyBinder) service; - mGPSService = binder.getService(); - mGPSService.setOnGPSRTLocationListener(new OnGPSRTLocationListener(){ - @Override - public void onGPSRTLocation(Location location) { - showLocationPhoneGPS(location); - } - }); - } - - @Override - public void onServiceDisconnected(ComponentName name) { - LogUtils.d(TAG, "onServiceDisconnected(...)"); - mGPSService = null; - } - - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java deleted file mode 100644 index 0c22f3c..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java +++ /dev/null @@ -1,515 +0,0 @@ -package cc.winboll.studio.positions.fragments; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/25 12:44:39 - * @Describe 腾讯地图服务视图 - */ -import android.Manifest; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.os.SystemClock; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Toast; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; -import cc.winboll.studio.libappbase.utils.ToastUtils; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.positions.listeners.OnTXRTLocationListener; -import cc.winboll.studio.positions.models.PostionModel; -import cc.winboll.studio.positions.utils.LocationFileStorage; -import com.tencent.map.geolocation.TencentLocation; -import com.tencent.map.geolocation.TencentLocationListener; -import com.tencent.map.geolocation.TencentLocationManager; -import com.tencent.map.geolocation.TencentLocationRequest; -import com.tencent.tencentmap.mapsdk.maps.CameraUpdate; -import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory; -import com.tencent.tencentmap.mapsdk.maps.LocationSource; -import com.tencent.tencentmap.mapsdk.maps.TencentMap; -import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer; -import com.tencent.tencentmap.mapsdk.maps.TextureMapView; -import com.tencent.tencentmap.mapsdk.maps.UiSettings; -import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; -import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; -import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition; -import com.tencent.tencentmap.mapsdk.maps.model.LatLng; -import com.tencent.tencentmap.mapsdk.maps.model.Marker; -import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions; -import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle; -import java.util.ArrayList; - -public class TXMSFragment extends Fragment implements /*EasyPermissions.PermissionCallbacks,*/LocationSource, TencentLocationListener,TencentMap.OnMapClickListener { - - public static final String TAG = "TXMSFragment"; - - private static final int PERMISSION_REQUEST_CODE = 1; - - private LocationManager mLocationManager; - private LocationListener mLocationListener; - - private static final String ARG_PAGE = "ARG_PAGE"; - private int mPage; - private TextureMapView mapView; - protected TencentMap tencentMap; - - private LocationSource.OnLocationChangedListener locationChangedListener; - - private TencentLocationManager mTencentLocationManager; - private TencentLocationRequest mTencentLocationRequest; - private MyLocationStyle mMyLocationStyle; - ArrayList locationPostionModelList; - //Location lastLocation; - static TXMSFragment _TXMSFragment; - OnTXRTLocationListener mOnTXRTLocationListener; - - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - _TXMSFragment = TXMSFragment.this; - View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false); - locationPostionModelList = new ArrayList(); - - TencentMapInitializer.setAgreePrivacy(true); - //TencentMapInitializer.setAgreePrivacy(getActivity(), true); - //TencentMapInitializer.start(getActivity()); - TencentLocationManager.setUserAgreePrivacy(true); - - mapView = viewRoot.findViewById(R.id.mapview); - mapView.setOpaque(false); - //创建tencentMap地图对象,可以完成对地图的几乎所有操作 - tencentMap = mapView.getMap(); - - - checkLocationPermission(); - - // 设置地图点击监听 - tencentMap.setOnMapClickListener(this); - - loadLocations(); - - UiSettings uiSettings = tencentMap.getUiSettings(); - uiSettings.setAllGesturesEnabled(true); - mTencentLocationManager = TencentLocationManager.getInstance(getActivity()); - //创建定位请求 - mTencentLocationRequest = TencentLocationRequest.create(); - //mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this); - //地图上设置定位数据源 - tencentMap.setLocationSource(this); - //设置当前位置可见 - tencentMap.setMyLocationEnabled(true); - //设置定位图标样式 - setMyLocationMarkerStyle(); - startRTLocation(); - - return viewRoot; - } - - @Override - public void onMapClick(LatLng latLng) { - //创建Marker对象之前,设置属性 - //LatLng position = new LatLng(40.011313,116.391907); - BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker); - Location location = createTXLocationFromLatLng(latLng); - addLocationToMap(location); - Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng)); - - //创建Marker对象之后,修改属性 -// Animation animation = new AlphaAnimation(0.7f, 0f); -// animation.setDuration(2000); -// mCustomMarker.setAnimation(animation); -// mCustomMarker.startAnimation(); - } - - void genLocationFixModel() { - - } - - public void startRTLocation() { - //ToastUtils.show("startRTLocation()"); - mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this); - } - - private void stopLocation() { - if (mTencentLocationManager != null) { - mTencentLocationManager.removeUpdates(this); - //mTencentLocationManager.removeLocationListener(this); - } - } - - void loadLocations() { - // 读取数据 - locationPostionModelList = LocationFileStorage.loadFromFile(getActivity()); - - for (PostionModel lj : locationPostionModelList) { - tencentMap.addMarker(new MarkerOptions(convertLocationToLatLng(lj.toLocation()))); - } - } - - void addLocationToMap(Location location) { - locationPostionModelList.add(new PostionModel(location)); - LocationFileStorage.saveToFile(getActivity(), locationPostionModelList); - } - -// public void addCurrentLocationToMap() { -// ToastUtils.show("addCurrentLocationToMap"); -// Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); -// locationPostionModelList.add(new PostionModel(getCurrentGPSLocation())); -// LocationFileStorage.saveToFile(getActivity(), locationPostionModelList); -// } - - // 手机 GPS 定位信息 -// LocationListener phoneGPSLocationListener = new LocationListener() { -// @Override -// public void onLocationChanged(Location location) { -// locationPhoneGPS = location; -// // 位置变化时的处理逻辑 -//// double latitude = location.getLatitude(); -//// double longitude = location.getLongitude(); -// String szTemp = String.format("Phone GPS MyLocation Init Info\nLatitude %f, Longitude %f, Accuracy %f", locationPhoneGPS.getLatitude(), locationPhoneGPS.getLongitude(), locationPhoneGPS.getAccuracy()); -// mtvPhoneMyLocationInfo.setText(szTemp); -// LogUtils.d(TAG, szTemp); -// updatePostionFixModel(); -// } -// -// @Override -// public void onProviderDisabled(String provider) {} -// -// @Override -// public void onProviderEnabled(String provider) {} -// -// @Override -// public void onStatusChanged(String provider, int status, Bundle extras) {} -// }; - - - - - // 创建Location对象方法 - private Location createTXLocationFromLatLng(double latitudeLock, double longitudeLock) { - Location location = new Location("Tencent_Map_Manual"); - - // 设置基础坐标 - location.setLatitude(latitudeLock); - location.setLongitude(longitudeLock); - - // 设置必要元数据 - location.setTime(System.currentTimeMillis()); - location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); - location.setAccuracy(5.0f); // 手动点击精度设为5米 - - return location; - } - - // 创建Location对象方法 - private Location createTXLocationFromLatLng(LatLng latLng) { - Location location = new Location("Tencent_Map_Manual"); - - // 设置基础坐标 - location.setLatitude(latLng.getLatitude()); - location.setLongitude(latLng.getLongitude()); - - // 设置必要元数据 - location.setTime(System.currentTimeMillis()); - location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); - location.setAccuracy(5.0f); // 手动点击精度设为5米 - - return location; - } - - public static LatLng convertTencentLocationToLatLng(TencentLocation location) { - if (location != null) { - double latitude = location.getLatitude(); - double longitude = location.getLongitude(); - return new LatLng(latitude, longitude); - } - return null; - } - - public static LatLng convertLocationToLatLng(Location location) { - return new LatLng( - location.getLatitude(), - location.getLongitude() - ); - } - - // 添加标记方法 - private void addMarker(LatLng latLng) { - tencentMap.clearAllOverlays(); - MarkerOptions options = new MarkerOptions(latLng) - .icon(BitmapDescriptorFactory.defaultMarker()) - .title("点击保存"); - tencentMap.addMarker(options); - } - - public static final int REALTIME_POSITIONING = 1; - private Handler handler = new Handler(Looper.getMainLooper()) { - @Override - public void handleMessage(@NonNull Message msg) { - switch (msg.what) { - case REALTIME_POSITIONING: - // 在这里处理接收到消息后的逻辑,比如更新 UI - - break; - default: - break; - } - } - }; - - /** - * mapview的生命周期管理 - */ - @Override - public void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - public void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - public void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - public void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - /** - * 设置定位图标样式 - */ - private void setMyLocationMarkerStyle() { - mMyLocationStyle = new MyLocationStyle(); - //创建图标 - //BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(R.drawable.marker)); - //mMyLocationStyle.icon(bitmapDescriptor); - //设置定位圆形区域的边框宽度 - mMyLocationStyle.strokeWidth(0); - //设置圆区域的颜色 - mMyLocationStyle.fillColor(R.color.style); - - tencentMap.setMyLocationStyle(mMyLocationStyle); - } - - private Bitmap getBitMap(int resourceId) { - Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId); - int width = bitmap.getWidth(); - int height = bitmap.getHeight(); - int newWidth = 55; - int newHeight = 55; - float widthScale = ((float)newWidth) / width; - float heightScale = ((float)newHeight) / height; - Matrix matrix = new Matrix(); - matrix.postScale(widthScale, heightScale); - bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); - return bitmap; - } - - public static void moveToLocation(double latitudeLock, double longitudeLock) { - if (_TXMSFragment != null) { - Location location = _TXMSFragment.createTXLocationFromLatLng(latitudeLock, longitudeLock); - _TXMSFragment.moveToGPSLocation(location); - } - } - - - - private void moveToGPSLocation(Location location) { - //对地图操作类进行操作 - CameraUpdate cameraSigma = - CameraUpdateFactory.newCameraPosition(new CameraPosition( - convertLocationToLatLng(location), - 19f, - 0f, - 0f)); - //移动地图 - tencentMap.moveCamera(cameraSigma); - ToastUtils.show("Move To Location."); - //addLocationToMap(location); - } - - public void sendRealTimePositioningMessage() { - Message message = Message.obtain(); - message.what = TXMSFragment.REALTIME_POSITIONING; - handler.sendMessage(message); - } - - public void setOnTXRTLocationListener(OnTXRTLocationListener listener) { - mOnTXRTLocationListener = listener; - } - - - /** - * 实现位置监听 - * @param tencentLocation - * @param i - * @param s - */ - @Override - public void onLocationChanged(TencentLocation tencentLocation, int i, String s) { - - if (i == TencentLocation.ERROR_OK && locationChangedListener != null) { - final Location locationTX = new Location(tencentLocation.getProvider()); - //设置经纬度以及精度 - locationTX.setLatitude(tencentLocation.getLatitude()); - locationTX.setLongitude(tencentLocation.getLongitude()); - locationTX.setAccuracy(tencentLocation.getAccuracy()); - - locationChangedListener.onLocationChanged(locationTX); - moveToGPSLocation(locationTX); - - //显示回调的实时位置信息 -// getActivity().runOnUiThread(new Runnable() { -// @Override -// public void run() { -// -// //对地图操作类进行操作 -//// CameraUpdate cameraSigma = -//// CameraUpdateFactory.newCameraPosition(new CameraPosition( -//// convertToLatLng(location), -//// 15, -//// 0f, -//// 0f)); -//// //移动地图 -//// tencentMap.moveCamera(cameraSigma); -//// Rules.getEffectInfo(location); -//// double distance = DistanceUtils.getDistance( -//// locationA.getLatitude(), -//// locationA.getLongitude(), -//// locationB.getLatitude(), -//// locationB.getLongitude() -//// ); -// String szTemp = String.format("TX MyLocation Init Info\nLatitude %f, Longitude %f, Accuracy %f", locationTX.getLatitude(), locationTX.getLongitude(), locationTX.getAccuracy()); -// mtvTXMyLocationInfo.setText(szTemp); -// LogUtils.d(TAG, szTemp); -// //打印tencentLocation的json字符串 -//// Toast.makeText(getApplicationContext(), new Gson().toJson(location), Toast.LENGTH_LONG).show(); -// -// -// // -// // 本机 GPS 定位服务调用服务 -// // -// locationManagerPhoneGPS = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE); -// String provider = LocationManager.GPS_PROVIDER; -// //Location location = locationManager.getLastKnownLocation(provider); -// locationManagerPhoneGPS.requestLocationUpdates(provider, 2000, 10, phoneGPSLocationListener); -// } -// }); - - // 保存最后定位信息 -// lastLocation = new Location(tencentLocation.getProvider()); -// lastLocation.setLatitude(tencentLocation.getLatitude()); -// lastLocation.setLongitude(tencentLocation.getLongitude()); -// lastLocation.setAccuracy(tencentLocation.getAccuracy()); - - //PositionsFragment.sendInitPositioningMessage(locationTX); - mOnTXRTLocationListener.onTXRTLocation(locationTX); - - // 当不再需要定位时 - // 取消定位监听 - if (mTencentLocationManager != null) { - mTencentLocationManager.removeUpdates(this); - } - // 关闭当前位置显示 -// if (tencentMap != null) { -// tencentMap.setMyLocationEnabled(false); -// } - - - } - } - - @Override - public void onStatusUpdate(String s, int i, String s1) { - //GPS, WiFi, Radio 等状态发生变化 - Log.v("State changed", s + "===" + s1); - } - - - @Override - public void activate(OnLocationChangedListener onLocationChangedListener) { - locationChangedListener = onLocationChangedListener; - - int err = mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this, Looper.myLooper()); - switch (err) { - case 1: - Toast.makeText(getActivity(), "设备缺少使用腾讯定位服务需要的基本条件", Toast.LENGTH_SHORT).show(); - break; - case 2: - Toast.makeText(getActivity(), "manifest 中配置的 key 不正确", Toast.LENGTH_SHORT).show(); - break; - case 3: - Toast.makeText(getActivity(), "自动加载libtencentloc.so失败", Toast.LENGTH_SHORT).show(); - break; - - default: - break; - } - } - - @Override - public void deactivate() { - mTencentLocationManager.removeUpdates(this); - mTencentLocationManager = null; - mTencentLocationRequest = null; - locationChangedListener = null; - } - - - private void checkLocationPermission() { - if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED - || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(getActivity(), - new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, - PERMISSION_REQUEST_CODE); - } else { - // 权限已授予,可进行定位操作 - //startLocationUpdates(); - } - } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == PERMISSION_REQUEST_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - //startLocationUpdates(); - } else { - // 用户拒绝了权限请求 - Toast.makeText(getActivity(), "请授予定位权限", Toast.LENGTH_SHORT).show(); - } - } - } - - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java deleted file mode 100644 index b60e00c..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java +++ /dev/null @@ -1,78 +0,0 @@ -package cc.winboll.studio.positions.fragments; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/20 12:57:00 - * @Describe 拨号 - */ -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.libappbase.utils.ToastUtils; -//import com.hjq.toast.ToastUtils; - -public class TasksFragment extends Fragment { - - public static final String TAG = "TasksFragment"; - - private static final String ARG_PAGE = "ARG_PAGE"; - private int mPage; - -// public static TasksFragment newInstance(int page) { -// Bundle args = new Bundle(); -// args.putInt(ARG_PAGE, page); -// TasksFragment fragment = new TasksFragment(); -// fragment.setArguments(args); -// return fragment; -// } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); -// if (getArguments()!= null) { -// mPage = getArguments().getInt(ARG_PAGE); -// } - setHasOptionsMenu(true); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - View viewMain = inflater.inflate(R.layout.fragment_tasks, container, false); -// Toolbar toolbar = viewMain.findViewById(R.id.toolbar); -// getActivity().getMenuInflater().inflate(R.menu.toolbar_tasks, toolbar.getMenu()); -// - - return viewMain; - } - - - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { - inflater.inflate(R.menu.toolbar_tasks, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.item_addtask) { - ToastUtils.show("item_addtask"); - } -// } else -// if (item.getItemId() == R.id.item_exit) { -// exit(); -// return true; -// } - return super.onOptionsItemSelected(item); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/handlers/MainServiceHandler.java b/positions/src/main/java/cc/winboll/studio/positions/handlers/MainServiceHandler.java deleted file mode 100644 index d4c6030..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/handlers/MainServiceHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -package cc.winboll.studio.positions.handlers; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/14 03:51:40 - */ -import android.os.Handler; -import android.os.Message; -import cc.winboll.studio.positions.services.MainService; -import java.lang.ref.WeakReference; - -public class MainServiceHandler extends Handler { - public static final String TAG = "MainServiceHandler"; - - public static final int MSG_REMINDTHREAD = 0; - - WeakReference serviceWeakReference; - public MainServiceHandler(MainService service) { - serviceWeakReference = new WeakReference(service); - } - - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_REMINDTHREAD: // 处理下载完成消息,更新UI - { - // 显示提醒消息 - // - //LogUtils.d(TAG, "显示提醒消息"); - MainService mainService = serviceWeakReference.get(); - if (mainService != null) { - mainService.appenMessage((String)msg.obj); - } - break; - } - } - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/listeners/OnGPSRTLocationListener.java b/positions/src/main/java/cc/winboll/studio/positions/listeners/OnGPSRTLocationListener.java deleted file mode 100644 index e7766b8..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/listeners/OnGPSRTLocationListener.java +++ /dev/null @@ -1,17 +0,0 @@ -package cc.winboll.studio.positions.listeners; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/03 14:01:18 - * @Describe 手机 GPS 实时位置监听类 - */ -import android.location.Location; - -public interface OnGPSRTLocationListener { - - public static final String TAG = "OnGPSRTLocationListener"; - - void onGPSRTLocation(Location location); - - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/listeners/OnTXRTLocationListener.java b/positions/src/main/java/cc/winboll/studio/positions/listeners/OnTXRTLocationListener.java deleted file mode 100644 index 7b23b96..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/listeners/OnTXRTLocationListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package cc.winboll.studio.positions.listeners; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/03 13:06:13 - * @Describe 位置监听类 - */ -import android.location.Location; - -public interface OnTXRTLocationListener { - - public static final String TAG = "OnTXRTLocationListener"; - - void onTXRTLocation(Location location); - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/models/MainServiceBean.java b/positions/src/main/java/cc/winboll/studio/positions/models/MainServiceBean.java deleted file mode 100644 index 9294ddd..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/models/MainServiceBean.java +++ /dev/null @@ -1,68 +0,0 @@ -package cc.winboll.studio.positions.models; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/13 07:06:13 - */ -import android.util.JsonReader; -import android.util.JsonWriter; -import cc.winboll.studio.libappbase.BaseBean; -import java.io.IOException; - -public class MainServiceBean extends BaseBean { - - public static final String TAG = "MainServiceBean"; - - boolean isEnable; - - public MainServiceBean() { - this.isEnable = false; - } - - public void setIsEnable(boolean isEnable) { - this.isEnable = isEnable; - } - - public boolean isEnable() { - return isEnable; - } - - @Override - public String getName() { - return MainServiceBean.class.getName(); - } - - @Override - public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { - super.writeThisToJsonWriter(jsonWriter); - MainServiceBean bean = this; - jsonWriter.name("isEnable").value(bean.isEnable()); - - } - - @Override - public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { - if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { - if (name.equals("isEnable")) { - setIsEnable(jsonReader.nextBoolean()); - } else { - return false; - } - } - return true; - } - - @Override - public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { - jsonReader.beginObject(); - while (jsonReader.hasNext()) { - String name = jsonReader.nextName(); - if (!initObjectsFromJsonReader(jsonReader, name)) { - jsonReader.skipValue(); - } - } - // 结束 JSON 对象 - jsonReader.endObject(); - return this; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/models/PostionFixModel.java b/positions/src/main/java/cc/winboll/studio/positions/models/PostionFixModel.java deleted file mode 100644 index e0beab2..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/models/PostionFixModel.java +++ /dev/null @@ -1,108 +0,0 @@ -package cc.winboll.studio.positions.models; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/03/21 10:11:36 - * @Describe 定位数据修正模型 - */ -import android.location.Location; -import android.util.JsonReader; -import android.util.JsonWriter; -import cc.winboll.studio.libappbase.BaseBean; -import java.io.IOException; -import android.content.Context; -import cc.winboll.studio.positions.App; -import java.io.File; - -public class PostionFixModel extends BaseBean { - - public static final String TAG = "PostionFixModel"; - - // 纬度校验数据模型 - private double latitudeFixModel; - // 经度校验数据模型 - private double longitudeFixModel; - - public PostionFixModel() { - this.latitudeFixModel = 0; - this.longitudeFixModel = 0; - } - - public PostionFixModel(double latitudeFixModel, double longitudeFixModel) { - this.latitudeFixModel = latitudeFixModel; - this.longitudeFixModel = longitudeFixModel; - } - - public void setLatitudeFixModel(double latitudeFixModel) { - this.latitudeFixModel = latitudeFixModel; - } - - public double getLatitudeFixModel() { - return latitudeFixModel; - } - - public void setLongitudeFixModel(double longitudeFixModel) { - this.longitudeFixModel = longitudeFixModel; - } - - public double getLongitudeFixModel() { - return longitudeFixModel; - } - - @Override - public String getName() { - return PostionFixModel.class.getName(); - } - - @Override - public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { - super.writeThisToJsonWriter(jsonWriter); - jsonWriter.name("latitudeFixModel").value(getLatitudeFixModel()); - jsonWriter.name("longitudeFixModel").value(getLongitudeFixModel()); - - } - - @Override - public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { - if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { - if (name.equals("latitudeFixModel")) { - setLatitudeFixModel(jsonReader.nextDouble()); - } else if (name.equals("longitudeFixModel")) { - setLongitudeFixModel(jsonReader.nextDouble()); - } else { - return false; - } - } - return true; - } - - @Override - public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { - jsonReader.beginObject(); - while (jsonReader.hasNext()) { - String name = jsonReader.nextName(); - if (!initObjectsFromJsonReader(jsonReader, name)) { - jsonReader.skipValue(); - } - } - // 结束 JSON 对象 - jsonReader.endObject(); - return this; - } - - public static void savePostionFixModel(PostionFixModel model) { - saveBeanToFile(getPostionFixModelDataPath(), model); - } - - public static PostionFixModel loadPostionFixModel() { - PostionFixModel model = loadBeanFromFile(getPostionFixModelDataPath(), PostionFixModel.class); - if(model == null) { - model = new PostionFixModel(); - } - return model; - } - - static String getPostionFixModelDataPath() { - return App.szDataFolder + File.separator + TAG + ".data"; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/models/PostionModel.java b/positions/src/main/java/cc/winboll/studio/positions/models/PostionModel.java deleted file mode 100644 index ea593ba..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/models/PostionModel.java +++ /dev/null @@ -1,202 +0,0 @@ -package cc.winboll.studio.positions.models; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/25 02:58:33 - * @Describe LocationJson - */ -import android.util.JsonReader; -import android.util.JsonWriter; -import cc.winboll.studio.libappbase.BaseBean; -import java.io.IOException; -import android.location.Location; -import java.util.UUID; - -public class PostionModel extends BaseBean { - - public static final String TAG = "PostionModel"; - - // UUID 唯一位置标识 - private String uuid; - // 纬度 - private double latitude; - // 经度 - private double longitude; - // 标记时间 - private long timestamp; - // 精确度 - private double accuracy; - private String provider; - private String comments; - private boolean isEnable; - private boolean isSimpleView; - - public PostionModel() { - this.uuid = UUID.randomUUID().toString(); - this.latitude = 0.0f; - this.longitude = 0.0f; - this.timestamp = 0L; - this.accuracy = 0.0f; - this.provider = ""; - this.comments = ""; - this.isEnable = false; - this.isSimpleView = true; - } - - public PostionModel(Location location) { - this.uuid = UUID.randomUUID().toString(); - this.latitude = location.getLatitude(); - this.longitude = location.getLongitude(); - this.timestamp = location.getTime(); - this.accuracy = location.getAccuracy(); - this.provider = location.getProvider(); - this.comments = ""; - this.isEnable = false; - this.isSimpleView = true; - } - - public void setIsEnable(boolean isEnable) { - this.isEnable = isEnable; - } - - public boolean isEnable() { - return isEnable; - } - - public void setComments(String comments) { - this.comments = comments; - } - - public String getComments() { - return comments; - } - - public void setIsSimpleView(boolean isSimpleView) { - this.isSimpleView = isSimpleView; - } - - public boolean isSimpleView() { - return isSimpleView; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public String getUuid() { - return uuid; - } - - public void setLatitude(double latitude) { - this.latitude = latitude; - } - - public double getLatitude() { - return latitude; - } - - public void setLongitude(double longitude) { - this.longitude = longitude; - } - - public double getLongitude() { - return longitude; - } - - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - - public long getTimestamp() { - return timestamp; - } - - public void setAccuracy(double accuracy) { - this.accuracy = accuracy; - } - - public double getAccuracy() { - return accuracy; - } - - public void setProvider(String provider) { - this.provider = provider; - } - - public String getProvider() { - return provider; - } - - - @Override - public String getName() { - return PostionModel.class.getName(); - } - - @Override - public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { - super.writeThisToJsonWriter(jsonWriter); - jsonWriter.name("uuid").value(getUuid()); - jsonWriter.name("latitude").value(getLatitude()); - jsonWriter.name("longitude").value(getLongitude()); - jsonWriter.name("timestamp").value(getTimestamp()); - jsonWriter.name("accuracy").value(getAccuracy()); - jsonWriter.name("provider").value(getProvider()); - jsonWriter.name("comments").value(getComments()); - jsonWriter.name("isEnable").value(isEnable()); - jsonWriter.name("isSimpleView").value(isSimpleView()); - - } - - @Override - public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { - if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { - if (name.equals("uuid")) { - setUuid(jsonReader.nextString()); - } else if (name.equals("latitude")) { - setLatitude(jsonReader.nextDouble()); - } else if (name.equals("longitude")) { - setLongitude(jsonReader.nextDouble()); - } else if (name.equals("timestamp")) { - setTimestamp(jsonReader.nextLong()); - } else if (name.equals("accuracy")) { - setAccuracy(jsonReader.nextDouble()); - } else if (name.equals("provider")) { - setProvider(jsonReader.nextString()); - } else if (name.equals("comments")) { - setComments(jsonReader.nextString()); - } else if (name.equals("isEnable")) { - setIsEnable(jsonReader.nextBoolean()); - } else if (name.equals("isSimpleView")) { - setIsSimpleView(jsonReader.nextBoolean()); - } else { - return false; - } - } - return true; - } - - @Override - public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { - jsonReader.beginObject(); - while (jsonReader.hasNext()) { - String name = jsonReader.nextName(); - if (!initObjectsFromJsonReader(jsonReader, name)) { - jsonReader.skipValue(); - } - } - // 结束 JSON 对象 - jsonReader.endObject(); - return this; - } - - public Location toLocation() { - Location location = new Location(getProvider()); - location.setLatitude(getLatitude()); - location.setLongitude(getLongitude()); - location.setTime(getTimestamp()); - location.setAccuracy((float)getAccuracy()); - return location; - } - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/models/RulsBean.java b/positions/src/main/java/cc/winboll/studio/positions/models/RulsBean.java deleted file mode 100644 index 452a77a..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/models/RulsBean.java +++ /dev/null @@ -1,15 +0,0 @@ -package cc.winboll.studio.positions.models; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/25 01:21:17 - * @Describe 定位信息类 - */ -public class RulsBean { - - public static final String TAG = "LocationBean"; - - float latitude; - float longitude; - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/models/TaskModel.java b/positions/src/main/java/cc/winboll/studio/positions/models/TaskModel.java deleted file mode 100644 index 712a49b..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/models/TaskModel.java +++ /dev/null @@ -1,173 +0,0 @@ -package cc.winboll.studio.positions.models; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/07 13:30:41 - * @Describe 提醒任务单一任务模型 - */ -import android.util.JsonReader; -import android.util.JsonWriter; -import cc.winboll.studio.libappbase.BaseBean; -import java.io.IOException; -import android.location.Location; -import java.util.UUID; - -public class TaskModel extends BaseBean { - - public static final String TAG = "TaskModel"; - - enum AROUND_CONDITIONAL { WITHIN, BEYOND }; - - // UUID 唯一任务标识 - private String uuid; - // 距离任务中心点的方圆半径(米) - private int aroundMeters; - // 方圆半径区域选择条件 - private AROUND_CONDITIONAL aroundConditional; - // 任务生效时间戳 - private long taskEnableTimestamp; - // 任务过期时间戳 - private long taskDisableTimestamp; - // 任务描述 - private String comments; - // 是否启用 - private boolean isEnable; - // 在UI列表中是否显示简单视图 - private boolean isSimpleView; - - public TaskModel() { - this.uuid = UUID.randomUUID().toString(); - this.aroundMeters = 0; - this.aroundConditional = AROUND_CONDITIONAL.WITHIN; - this.taskEnableTimestamp = System.currentTimeMillis(); - this.taskDisableTimestamp = System.currentTimeMillis(); - this.comments = ""; - this.isEnable = false; - this.isSimpleView = true; - } - - public TaskModel(String uuid, int aroundMeters, AROUND_CONDITIONAL aroundConditional, long taskEnableTimestamp, long taskDisableTimestamp, String comments, boolean isEnable, boolean isSimpleView) { - this.uuid = uuid; - this.aroundMeters = aroundMeters; - this.aroundConditional = aroundConditional; - this.taskEnableTimestamp = taskEnableTimestamp; - this.taskDisableTimestamp = taskDisableTimestamp; - this.comments = comments; - this.isEnable = isEnable; - this.isSimpleView = isSimpleView; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public String getUuid() { - return uuid; - } - - public void setAroundMeters(int aroundMeters) { - this.aroundMeters = aroundMeters; - } - - public int getAroundMeters() { - return aroundMeters; - } - - public void setAroundConditional(AROUND_CONDITIONAL aroundConditional) { - this.aroundConditional = aroundConditional; - } - - public AROUND_CONDITIONAL getAroundConditional() { - return aroundConditional; - } - - public void setTaskEnableTimestamp(long taskEnableTimestamp) { - this.taskEnableTimestamp = taskEnableTimestamp; - } - - public long getTaskEnableTimestamp() { - return taskEnableTimestamp; - } - - public void setTaskDisableTimestamp(long taskDisableTimestamp) { - this.taskDisableTimestamp = taskDisableTimestamp; - } - - public long getTaskDisableTimestamp() { - return taskDisableTimestamp; - } - - public void setComments(String comments) { - this.comments = comments; - } - - public String getComments() { - return comments; - } - - public void setIsEnable(boolean isEnable) { - this.isEnable = isEnable; - } - - public boolean isEnable() { - return isEnable; - } - - public void setIsSimpleView(boolean isSimpleView) { - this.isSimpleView = isSimpleView; - } - - public boolean isSimpleView() { - return isSimpleView; - } - - @Override - public String getName() { - return TaskModel.class.getName(); - } - - @Override - public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { - super.writeThisToJsonWriter(jsonWriter); - jsonWriter.name("uuid").value(getUuid()); - jsonWriter.name("aroundMeters").value(getUuid()); - jsonWriter.name("aroundConditional").value(getComments()); - jsonWriter.name("taskEnableTimestamp").value(isEnable()); - jsonWriter.name("taskDisableTimestamp").value(isSimpleView()); - jsonWriter.name("comments").value(getComments()); - jsonWriter.name("isEnable").value(isEnable()); - jsonWriter.name("isSimpleView").value(isSimpleView()); - } - - @Override - public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { - if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { - if (name.equals("uuid")) { - setUuid(jsonReader.nextString()); - } else if (name.equals("comments")) { - setComments(jsonReader.nextString()); - } else if (name.equals("isEnable")) { - setIsEnable(jsonReader.nextBoolean()); - } else if (name.equals("isSimpleView")) { - setIsSimpleView(jsonReader.nextBoolean()); - } else { - return false; - } - } - return true; - } - - @Override - public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { - jsonReader.beginObject(); - while (jsonReader.hasNext()) { - String name = jsonReader.nextName(); - if (!initObjectsFromJsonReader(jsonReader, name)) { - jsonReader.skipValue(); - } - } - // 结束 JSON 对象 - jsonReader.endObject(); - return this; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/receivers/MainReceiver.java b/positions/src/main/java/cc/winboll/studio/positions/receivers/MainReceiver.java deleted file mode 100644 index 3773a0f..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/receivers/MainReceiver.java +++ /dev/null @@ -1,50 +0,0 @@ -package cc.winboll.studio.positions.receivers; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/13 06:58:04 - * @Describe 主要广播接收器 - */ -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import cc.winboll.studio.positions.services.MainService; -//import com.hjq.toast.ToastUtils; -import java.lang.ref.WeakReference; -import cc.winboll.studio.libappbase.utils.ToastUtils; - -public class MainReceiver extends BroadcastReceiver { - - public static final String TAG = "MainReceiver"; - public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"; - WeakReference mwrService; - // 存储电量指示值, - // 用于校验电量消息时的电量变化 - static volatile int _mnTheQuantityOfElectricityOld = -1; - static volatile boolean _mIsCharging = false; - - public MainReceiver(MainService service) { - mwrService = new WeakReference(service); - } - - @Override - public void onReceive(Context context, Intent intent) { - String szAction = intent.getAction(); - if (szAction.equals(ACTION_BOOT_COMPLETED)) { - ToastUtils.show("ACTION_BOOT_COMPLETED"); - MainService.startMainService(context); - } else { - ToastUtils.show(szAction); - } - } - - // 注册 Receiver - // - public void registerAction(Context context) { - IntentFilter filter=new IntentFilter(); - filter.addAction(ACTION_BOOT_COMPLETED); - //filter.addAction(Intent.ACTION_BATTERY_CHANGED); - context.registerReceiver(this, filter); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java b/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java deleted file mode 100644 index 36d583d..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java +++ /dev/null @@ -1,137 +0,0 @@ -package cc.winboll.studio.positions.services; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/14 03:38:31 - * @Describe 守护进程服务 - */ -import android.app.Service; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.Binder; -import android.os.IBinder; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.positions.models.MainServiceBean; -import cc.winboll.studio.positions.services.MainService; - -public class AssistantService extends Service { - - public static final String TAG = "AssistantService"; - - MainServiceBean mMainServiceBean; - MyServiceConnection mMyServiceConnection; - MainService mMainService; - boolean isBound = false; - volatile boolean isThreadAlive = false; - - public synchronized void setIsThreadAlive(boolean isThreadAlive) { - LogUtils.d(TAG, "setIsThreadAlive(...)"); - LogUtils.d(TAG, String.format("isThreadAlive %s", isThreadAlive)); - this.isThreadAlive = isThreadAlive; - } - - public boolean isThreadAlive() { - return isThreadAlive; - } - - @Override - public IBinder onBind(Intent intent) { - return new MyBinder(); - } - - @Override - public void onCreate() { - LogUtils.d(TAG, "onCreate"); - super.onCreate(); - - //mMyBinder = new MyBinder(); - if (mMyServiceConnection == null) { - mMyServiceConnection = new MyServiceConnection(); - } - // 设置运行参数 - setIsThreadAlive(false); - assistantService(); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - LogUtils.d(TAG, "call onStartCommand(...)"); - assistantService(); - return START_STICKY; - } - - @Override - public void onDestroy() { - //LogUtils.d(TAG, "onDestroy"); - setIsThreadAlive(false); - // 解除绑定 - if (isBound) { - unbindService(mMyServiceConnection); - isBound = false; - } - super.onDestroy(); - } - - // 运行服务内容 - // - void assistantService() { - LogUtils.d(TAG, "assistantService()"); - mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); - LogUtils.d(TAG, String.format("mMainServiceBean.isEnable() %s", mMainServiceBean.isEnable())); - if (mMainServiceBean.isEnable()) { - LogUtils.d(TAG, String.format("mIsThreadAlive %s", isThreadAlive())); - if (isThreadAlive() == false) { - // 设置运行状态 - setIsThreadAlive(true); - // 唤醒和绑定主进程 - wakeupAndBindMain(); - } - } - } - - // 唤醒和绑定主进程 - // - void wakeupAndBindMain() { - LogUtils.d(TAG, "wakeupAndBindMain()"); - // 绑定服务的Intent - Intent intent = new Intent(this, MainService.class); - startService(new Intent(this, MainService.class)); - bindService(intent, mMyServiceConnection, Context.BIND_IMPORTANT); - -// startService(new Intent(this, MainService.class)); -// bindService(new Intent(AssistantService.this, MainService.class), mMyServiceConnection, Context.BIND_IMPORTANT); - } - - // 主进程与守护进程连接时需要用到此类 - // - class MyServiceConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - LogUtils.d(TAG, "onServiceConnected(...)"); - MainService.MyBinder binder = (MainService.MyBinder) service; - mMainService = binder.getService(); - isBound = true; - } - - @Override - public void onServiceDisconnected(ComponentName name) { - LogUtils.d(TAG, "onServiceDisconnected(...)"); - mMainServiceBean = MainServiceBean.loadBean(AssistantService.this, MainServiceBean.class); - if (mMainServiceBean.isEnable()) { - wakeupAndBindMain(); - } - isBound = false; - mMainService = null; - } - } - - // 用于返回服务实例的Binder - public class MyBinder extends Binder { - AssistantService getService() { - LogUtils.d(TAG, "AssistantService MyBinder getService()"); - return AssistantService.this; - } - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/GPSService.java b/positions/src/main/java/cc/winboll/studio/positions/services/GPSService.java deleted file mode 100644 index 7f583cf..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/services/GPSService.java +++ /dev/null @@ -1,108 +0,0 @@ -package cc.winboll.studio.positions.services; - -import android.Manifest; -import android.app.Service; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Binder; -import android.os.Bundle; -import android.os.IBinder; -import androidx.core.app.ActivityCompat; -import cc.winboll.studio.positions.listeners.OnGPSRTLocationListener; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/03 12:13:23 - * @Describe 获取实时 GPS 数据的服务 - */ -public class GPSService extends Service { - - public static final String TAG = "GPSService"; - - OnGPSRTLocationListener mOnGPSRTLocationListener; - LocationManager locationManager; - Location mLocationPhoneGPS; - Location mLocationNetwork; - - @Override - public IBinder onBind(Intent intent) { - return new MyBinder(); - } - - // 用于返回服务实例的Binder - public class MyBinder extends Binder { - public GPSService getService() { - return GPSService.this; - } - } - - @Override - public void onCreate() { - super.onCreate(); - - locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); - // 请求GPS定位 - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, phoneGPSLocationListener); - // 请求基站(网络)定位 - locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener); - } - - @Override - public void onDestroy() { - super.onDestroy(); - if (locationManager != null) { - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && - ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - return; - } - locationManager.removeUpdates(phoneGPSLocationListener); - locationManager.removeUpdates(networkLocationListener); - } - } - - public void setOnGPSRTLocationListener(OnGPSRTLocationListener listener) { - mOnGPSRTLocationListener = listener; - } - - private LocationListener phoneGPSLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理GPS定位结果 - if (location != null && mOnGPSRTLocationListener != null) { - mLocationPhoneGPS = location; - mOnGPSRTLocationListener.onGPSRTLocation(mLocationPhoneGPS); - } - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; - - private LocationListener networkLocationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - // 处理基站(网络)定位结果 - if (location != null) { - mLocationNetwork = location; - } - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) {} - - @Override - public void onProviderEnabled(String provider) {} - - @Override - public void onProviderDisabled(String provider) {} - }; -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java b/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java deleted file mode 100644 index b91655c..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java +++ /dev/null @@ -1,237 +0,0 @@ -package cc.winboll.studio.positions.services; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/13 06:56:41 - * @Describe 拨号主服务 - * 参考: - * 进程保活-双进程守护的正确姿势 - * https://blog.csdn.net/sinat_35159441/article/details/75267380 - * Android Service之onStartCommand方法研究 - * https://blog.csdn.net/cyp331203/article/details/38920491 - */ -import android.app.Service; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.Binder; -import android.os.IBinder; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.libappbase.sos.SOS; -import cc.winboll.studio.libappbase.sos.WinBoll; -import cc.winboll.studio.positions.App; -import cc.winboll.studio.positions.models.MainServiceBean; -import cc.winboll.studio.positions.handlers.MainServiceHandler; -import cc.winboll.studio.positions.receivers.MainReceiver; -import cc.winboll.studio.positions.services.MainService; -import cc.winboll.studio.positions.threads.MainServiceThread; - -public class MainService extends Service { - - public static final String TAG = "MainService"; - - public static final int MSG_UPDATE_STATUS = 0; - - static MainService _mControlCenterService; - - volatile boolean isServiceRunning; - - MainServiceBean mMainServiceBean; - MainServiceThread mMainServiceThread; - MainServiceHandler mMainServiceHandler; - MyServiceConnection mMyServiceConnection; - AssistantService mAssistantService; - boolean isBound = false; - MainReceiver mMainReceiver; - - @Override - public IBinder onBind(Intent intent) { - return new MyBinder(); - } - - public MainServiceThread getRemindThread() { - return mMainServiceThread; - } - - @Override - public void onCreate() { - super.onCreate(); - LogUtils.d(TAG, "onCreate()"); - _mControlCenterService = MainService.this; - isServiceRunning = false; - mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); - - if (mMyServiceConnection == null) { - mMyServiceConnection = new MyServiceConnection(); - } - mMainServiceHandler = new MainServiceHandler(this); - - // 运行服务内容 - mainService(); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - LogUtils.d(TAG, "onStartCommand(...)"); - // 运行服务内容 - mainService(); - return (mMainServiceBean.isEnable()) ? START_STICKY : super.onStartCommand(intent, flags, startId); - } - - // 运行服务内容 - // - void mainService() { - LogUtils.d(TAG, "mainService()"); - mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); - if (mMainServiceBean.isEnable() && isServiceRunning == false) { - LogUtils.d(TAG, "mainService() start running"); - isServiceRunning = true; - // 唤醒守护进程 - wakeupAndBindAssistant(); - // 召唤 WinBoll APP 绑定本服务 - if (App.isDebuging()) { - WinBoll.bindToAPPBaseBeta(this, MainService.class.getName()); - } else { - WinBoll.bindToAPPBase(this, MainService.class.getName()); - } - - if (mMainReceiver == null) { - // 注册广播接收器 - mMainReceiver = new MainReceiver(this); - mMainReceiver.registerAction(this); - } - - - MainServiceThread.getInstance(this, mMainServiceHandler).start(); - - LogUtils.i(TAG, "Main Service Is Start."); - } - } - - // 唤醒和绑定守护进程 - // - void wakeupAndBindAssistant() { - LogUtils.d(TAG, "wakeupAndBindAssistant()"); -// if (ServiceUtils.isServiceAlive(getApplicationContext(), AssistantService.class.getName()) == false) { -// startService(new Intent(MainService.this, AssistantService.class)); -// //LogUtils.d(TAG, "call wakeupAndBindAssistant() : Binding... AssistantService"); -// bindService(new Intent(MainService.this, AssistantService.class), mMyServiceConnection, Context.BIND_IMPORTANT); -// } - Intent intent = new Intent(this, AssistantService.class); - startService(intent); - // 绑定服务的Intent - //Intent intent = new Intent(this, AssistantService.class); - bindService(intent, mMyServiceConnection, Context.BIND_IMPORTANT); - -// Intent intent = new Intent(this, AssistantService.class); -// startService(intent); -// LogUtils.d(TAG, "startService(intent)"); -// bindService(new Intent(this, AssistantService.class), mMyServiceConnection, Context.BIND_IMPORTANT); - } - - @Override - public void onDestroy() { - //LogUtils.d(TAG, "onDestroy"); - mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class); - //LogUtils.d(TAG, "onDestroy done"); - if (mMainServiceBean.isEnable() == false) { - // 设置运行状态 - isServiceRunning = false;// 解除绑定 - if (isBound) { - unbindService(mMyServiceConnection); - isBound = false; - } - // 停止守护进程 - Intent intent = new Intent(this, AssistantService.class); - stopService(intent); - // 停止Receiver - if (mMainReceiver != null) { - unregisterReceiver(mMainReceiver); - mMainReceiver = null; - } - // 停止前台通知栏 - stopForeground(true); - - // 停止主要进程 - MainServiceThread.getInstance(this, mMainServiceHandler).setIsExit(true); - } - - super.onDestroy(); - } - - // 主进程与守护进程连接时需要用到此类 - // - private class MyServiceConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - LogUtils.d(TAG, "onServiceConnected(...)"); - AssistantService.MyBinder binder = (AssistantService.MyBinder) service; - mAssistantService = binder.getService(); - isBound = true; - } - - @Override - public void onServiceDisconnected(ComponentName name) { - LogUtils.d(TAG, "onServiceDisconnected(...)"); - if (mMainServiceBean.isEnable()) { - // 唤醒守护进程 - wakeupAndBindAssistant(); - if (App.isDebuging()) { - SOS.sosToAppBaseBeta(MainService.this, MainService.class.getName()); - } else { - SOS.sosToAppBase(MainService.this, MainService.class.getName()); - } - } - isBound = false; - mAssistantService = null; - } - - } - - - // 用于返回服务实例的Binder - public class MyBinder extends Binder { - MainService getService() { - LogUtils.d(TAG, "MainService MyBinder getService()"); - return MainService.this; - } - } - -// // -// // 启动服务 -// // -// public static void startControlCenterService(Context context) { -// Intent intent = new Intent(context, MainService.class); -// context.startForegroundService(intent); -// } -// -// // -// // 停止服务 -// // -// public static void stopControlCenterService(Context context) { -// Intent intent = new Intent(context, MainService.class); -// context.stopService(intent); -// } - - public void appenMessage(String message) { - LogUtils.d(TAG, String.format("Message : %s", message)); - } - - public static void stopMainService(Context context) { - LogUtils.d(TAG, "stopMainService"); - MainServiceBean bean = new MainServiceBean(); - bean.setIsEnable(false); - MainServiceBean.saveBean(context, bean); - context.stopService(new Intent(context, MainService.class)); - } - - public static void startMainService(Context context) { - LogUtils.d(TAG, "startMainService"); - MainServiceBean bean = new MainServiceBean(); - bean.setIsEnable(true); - MainServiceBean.saveBean(context, bean); - context.startService(new Intent(context, MainService.class)); - } -} - diff --git a/positions/src/main/java/cc/winboll/studio/positions/tasks/Rules.java b/positions/src/main/java/cc/winboll/studio/positions/tasks/Rules.java deleted file mode 100644 index 2fdacd3..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/tasks/Rules.java +++ /dev/null @@ -1,34 +0,0 @@ -package cc.winboll.studio.positions.tasks; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/25 01:15:08 - * @Describe 定位规则类 - */ -import com.tencent.map.geolocation.TencentLocation; -import android.location.Location; - -public class Rules { - - public static final String TAG = "Rules"; - - public static String getEffectInfo(Location locationA) { - //Location locationB = new Location(22.0f, 111.0f); - // 腾讯SDK返回的坐标点(注意坐标系需统一) - //TencentLocation locationA = ...; // 第一个点 - //TencentLocation locationB = ...; // 第二个点 - -// float[] results = new float[1]; -// Location.distanceBetween( -// locationA.getLatitude(), // 纬度 -// locationA.getLongitude(), // 经度 -// locationB.getLatitude(), -// locationB.getLongitude(), -// results -// ); -// -// return "两点距离:" + results[0] + "米"; - return ""; - } - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java b/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java deleted file mode 100644 index 8cb99ae..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java +++ /dev/null @@ -1,73 +0,0 @@ -package cc.winboll.studio.positions.threads; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/14 03:46:44 - */ -import android.content.Context; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.positions.handlers.MainServiceHandler; -import java.lang.ref.WeakReference; - -public class MainServiceThread extends Thread { - - public static final String TAG = "MainServiceThread"; - - volatile static MainServiceThread _MainServiceThread; - // 控制线程是否退出的标志 - volatile boolean isExit = false; - volatile boolean isStarted = false; - Context mContext; - // 服务Handler, 用于线程发送消息使用 - WeakReference mwrMainServiceHandler; - - MainServiceThread(Context context, MainServiceHandler handler) { - mContext = context; - mwrMainServiceHandler = new WeakReference(handler); - } - - public void setIsExit(boolean isExit) { - this.isExit = isExit; - } - - public boolean isExit() { - return isExit; - } - - public void setIsStarted(boolean isStarted) { - this.isStarted = isStarted; - } - - public boolean isStarted() { - return isStarted; - } - - public static MainServiceThread getInstance(Context context, MainServiceHandler handler) { - if (_MainServiceThread != null) { - _MainServiceThread.setIsExit(true); - } - _MainServiceThread = new MainServiceThread(context, handler); - return _MainServiceThread; - } - - @Override - public void run() { - if (isStarted == false) { - isStarted = true; - LogUtils.d(TAG, "run()"); - - while (!isExit()) { - //ToastUtils.show("run"); - //LogUtils.d(TAG, "run()"); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); - } - } - _MainServiceThread = null; - LogUtils.d(TAG, "run() exit"); - } - } - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java b/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java deleted file mode 100644 index 078f7fc..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java +++ /dev/null @@ -1,48 +0,0 @@ -package cc.winboll.studio.positions.utils; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/25 03:02:17 - * @Describe LocationFileStorage - */ -import android.content.Context; -import android.location.Location; -import java.io.BufferedReader; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; -import org.json.JSONArray; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.positions.models.PostionModel; -import cc.winboll.studio.positions.App; -import java.io.File; - -public class LocationFileStorage { - public static final String TAG = "LocationFileStorage"; - - static final String FILE_NAME = "locations.json"; - - public static void saveToFile(Context context, ArrayList locations) { - try { - PostionModel.saveBeanListToFile(getDataPath(), locations); - } catch (Exception e) { - LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); - } - } - - public static ArrayList loadFromFile(Context context) { - ArrayList result = new ArrayList(); - try { - PostionModel.loadBeanListFromFile(getDataPath(), result, PostionModel.class); - } catch (Exception e) { - LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); - } - return result; - } - - static String getDataPath() { - return App.szDataFolder + File.separator + FILE_NAME; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFusion.java b/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFusion.java deleted file mode 100644 index 694e400..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFusion.java +++ /dev/null @@ -1,40 +0,0 @@ -package cc.winboll.studio.positions.utils; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/03/11 09:36:52 - * @Describe 定位数据融合类 - */ -import cc.winboll.studio.positions.App; -import java.io.File; - -public class LocationFusion { - - public static final String TAG = "LocationFusion"; - - static final String FILE_NAME = "LocationFusionModel.json"; - - // 融合定位数据的方法 - public static double[] fuseLocationData(double latitudeGPSLock, double longitudeGPSLock, - double latitudeWifiLock, double longitudeWifiLock, double gpsWeight, double wifiWeight) { - if (gpsWeight + wifiWeight != 1) { - throw new IllegalArgumentException("GPS权重和Wi-Fi权重之和必须为1"); - } - double lat = latitudeGPSLock * gpsWeight + latitudeWifiLock * wifiWeight; - double lon = longitudeGPSLock * gpsWeight + longitudeWifiLock * wifiWeight; - return new double[]{lat, lon}; - } - -// public static void main(String[] args) { -// double[] gpsLocation = {30.5, 120.5}; -// double[] wifiLocation = {30.6, 120.6}; -// double gpsWeight = 0.6; -// double wifiWeight = 0.4; -// double[] fusedLocation = fuseLocationData(gpsLocation, wifiLocation, gpsWeight, wifiWeight); -// System.out.println("融合后的纬度: " + fusedLocation[0] + ", 经度: " + fusedLocation[1]); -// } - - static String getDataPath() { - return App.szDataFolder + File.separator + FILE_NAME; - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/utils/PostionUtils.java b/positions/src/main/java/cc/winboll/studio/positions/utils/PostionUtils.java deleted file mode 100644 index 7253eb3..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/utils/PostionUtils.java +++ /dev/null @@ -1,58 +0,0 @@ -package cc.winboll.studio.positions.utils; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/04/03 21:09:50 - * @Describe 位置处理工具集 - */ -import android.content.Context; -import cc.winboll.studio.positions.models.PostionModel; -import java.util.ArrayList; -import android.location.Location; - -public class PostionUtils { - - public static final String TAG = "PostionUtils"; - - static volatile PostionUtils _PostionUtils; - - Context mContext; - ArrayList mPostionModelList = new ArrayList(); - - PostionUtils(Context context) { - mContext = context; - PostionModel.loadBeanList(mContext, mPostionModelList, PostionModel.class); - } - - public synchronized static PostionUtils getInstance(Context context) { - if (_PostionUtils == null) { - _PostionUtils = new PostionUtils(context); - } - return _PostionUtils; - } - - public ArrayList getPostionModelList() { - return mPostionModelList; - } - - public void savePostionModelList() { - PostionModel.saveBeanList(mContext, mPostionModelList, PostionModel.class); - } - - public void addPostion(PostionModel item) { - mPostionModelList.add(item); - PostionModel.saveBeanList(mContext, mPostionModelList, PostionModel.class); - } - - public void addPostion(Location location) { - PostionModel item = new PostionModel(); - item.setLatitude(location.getLatitude()); - item.setLongitude(location.getLongitude()); - item.setTimestamp(location.getTime()); - item.setAccuracy(location.getAccuracy()); - item.setProvider(location.getProvider()); - - mPostionModelList.add(item); - PostionModel.saveBeanList(mContext, mPostionModelList, PostionModel.class); - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/utils/TimeUtils.java b/positions/src/main/java/cc/winboll/studio/positions/utils/TimeUtils.java deleted file mode 100644 index 6281fc5..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/utils/TimeUtils.java +++ /dev/null @@ -1,26 +0,0 @@ -package cc.winboll.studio.positions.utils; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/03/21 16:02:56 - * @Describe 时间工具集 - */ -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -public class TimeUtils { - - public static final String TAG = "TimeUtils"; - - public static String getCurrentTimeString() { - // 获取当前日期时间 - LocalDateTime now = LocalDateTime.now(); - // 定义日期时间格式 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - // 格式化日期时间 - String formattedDateTime = now.format(formatter); - //System.out.println(formattedDateTime); - return formattedDateTime; - } - -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/views/GridMapView.java b/positions/src/main/java/cc/winboll/studio/positions/views/GridMapView.java deleted file mode 100644 index 63e925e..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/views/GridMapView.java +++ /dev/null @@ -1,246 +0,0 @@ -package cc.winboll.studio.positions.views; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/02/22 03:32:48 - * @Describe GridMapView - */ -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.PointF; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.ScaleGestureDetector; -import android.view.View; -import java.util.ArrayList; -import java.util.List; - -public class GridMapView extends View { - // 网格参数 - private float gridTotalWidth = 1000f; - private float gridTotalHeight = 1000f; - private float gridSpacing = 50f; - - // 视图变换参数 - private float offsetX = 0f; - private float offsetY = 0f; - private float scaleFactor = 1.0f; - private final float minScale = 0.5f; - private final float maxScale = 5.0f; - - // 手势检测 - private final ScaleGestureDetector scaleDetector; - private float lastTouchX; - private float lastTouchY; - - // 图形存储 - private final List shapes = new ArrayList(); - - public GridMapView(Context context) { - this(context, null); - } - - public GridMapView(Context context, AttributeSet attrs) { - super(context, attrs); - scaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - canvas.save(); - canvas.translate(offsetX, offsetY); - canvas.scale(scaleFactor, scaleFactor); - - drawGrid(canvas); - drawShapes(canvas); - - canvas.restore(); - } - - private void drawGrid(Canvas canvas) { - Paint gridPaint = new Paint(); - gridPaint.setColor(Color.LTGRAY); - gridPaint.setStrokeWidth(1f / scaleFactor); - - // 绘制垂直线 - for (float x = 0; x <= gridTotalWidth; x += gridSpacing) { - canvas.drawLine(x, 0, x, gridTotalHeight, gridPaint); - } - - // 绘制水平线 - for (float y = 0; y <= gridTotalHeight; y += gridSpacing) { - canvas.drawLine(0, y, gridTotalWidth, y, gridPaint); - } - } - - private void drawShapes(Canvas canvas) { - for (MapShape shape : shapes) { - shape.draw(canvas); - } - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - scaleDetector.onTouchEvent(event); - - final int action = event.getAction(); - final float x = event.getX(); - final float y = event.getY(); - - switch (action) { - case MotionEvent.ACTION_DOWN: - if (!scaleDetector.isInProgress()) { - lastTouchX = x; - lastTouchY = y; - } - break; - - case MotionEvent.ACTION_MOVE: - if (!scaleDetector.isInProgress()) { - final float dx = x - lastTouchX; - final float dy = y - lastTouchY; - - offsetX += dx; - offsetY += dy; - invalidate(); - - lastTouchX = x; - lastTouchY = y; - } - break; - } - - return true; - } - - // 初始化视图显示区域 - public void initViewport(final float centerX, final float centerY, - final float viewWidth, final float viewHeight) { - post(new Runnable() { - @Override - public void run() { - float viewportWidth = getWidth(); - float viewportHeight = getHeight(); - - float widthScale = viewportWidth / viewWidth; - float heightScale = viewportHeight / viewHeight; - scaleFactor = Math.min(widthScale, heightScale); - - offsetX = viewportWidth/2 - centerX * scaleFactor; - offsetY = viewportHeight/2 - centerY * scaleFactor; - invalidate(); - } - }); - } - - // 图形绘制方法 - public void drawPoint(float x, float y, int color, float size) { - shapes.add(new MapShape(MapShape.TYPE_POINT, x, y, color, size)); - invalidate(); - } - - public void drawCircle(float x, float y, float radius, int color, float strokeWidth) { - MapShape shape = new MapShape(MapShape.TYPE_CIRCLE, x, y, color, radius); - shape.setStrokeWidth(strokeWidth); - shapes.add(shape); - invalidate(); - } - - public void drawLine(float startX, float startY, float endX, float endY, - int color, float strokeWidth) { - MapShape shape = new MapShape(MapShape.TYPE_LINE, startX, startY, endX, endY, color); - shape.setStrokeWidth(strokeWidth); - shapes.add(shape); - invalidate(); - } - - // 网格参数设置 - public void setGridParameters(float totalWidth, float totalHeight, float spacing) { - gridTotalWidth = totalWidth; - gridTotalHeight = totalHeight; - gridSpacing = spacing; - invalidate(); - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - float newScale = scaleFactor * detector.getScaleFactor(); - newScale = Math.max(minScale, Math.min(newScale, maxScale)); - - float focusX = detector.getFocusX(); - float focusY = detector.getFocusY(); - - offsetX = focusX - ((focusX - offsetX) / scaleFactor * newScale); - offsetY = focusY - ((focusY - offsetY) / scaleFactor * newScale); - - scaleFactor = newScale; - invalidate(); - return true; - } - } - - private static class MapShape { - static final int TYPE_POINT = 0; - static final int TYPE_CIRCLE = 1; - static final int TYPE_LINE = 2; - - final int type; - final PointF[] points; - final int color; - float radius; - float strokeWidth = 2f; - - MapShape(int type, float x, float y, int color, float size) { - this.type = type; - this.points = new PointF[]{new PointF(x, y)}; - this.color = color; - this.radius = size; - } - - MapShape(int type, float x1, float y1, float x2, float y2, int color) { - this.type = type; - this.points = new PointF[]{ - new PointF(x1, y1), - new PointF(x2, y2) - }; - this.color = color; - } - - MapShape setStrokeWidth(float width) { - this.strokeWidth = width; - return this; - } - - void draw(Canvas canvas) { - Paint paint = new Paint(); - paint.setColor(color); - - switch (type) { - case TYPE_POINT: - paint.setStyle(Paint.Style.FILL); - canvas.drawCircle(points[0].x, points[0].y, radius, paint); - break; - - case TYPE_CIRCLE: - paint.setStyle(Paint.Style.STROKE); - paint.setStrokeWidth(strokeWidth); - canvas.drawCircle(points[0].x, points[0].y, radius, paint); - break; - - case TYPE_LINE: - paint.setStyle(Paint.Style.STROKE); - paint.setStrokeWidth(strokeWidth); - canvas.drawLine( - points[0].x, points[0].y, - points[1].x, points[1].y, - paint - ); - break; - } - } - } -} diff --git a/positions/src/main/java/cc/winboll/studio/positions/views/LeftScrollView.java b/positions/src/main/java/cc/winboll/studio/positions/views/LeftScrollView.java deleted file mode 100644 index e59e6c8..0000000 --- a/positions/src/main/java/cc/winboll/studio/positions/views/LeftScrollView.java +++ /dev/null @@ -1,219 +0,0 @@ -package cc.winboll.studio.positions.views; - -/** - * @Author ZhanGSKen@AliYun.Com - * @Date 2025/03/04 10:51:50 - * @Describe CustomHorizontalScrollView - */ -import android.content.Context; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.widget.Button; -import android.widget.HorizontalScrollView; -import android.widget.LinearLayout; -import android.widget.TextView; -import cc.winboll.studio.positions.R; -import cc.winboll.studio.libappbase.LogUtils; - -public class LeftScrollView extends HorizontalScrollView { - - public static final String TAG = "LeftScrollView"; - - private LinearLayout contentLayout; - private LinearLayout toolLayout; - private TextView textView; - private Button editButton; - private Button deleteButton; - private Button upButton; - private Button downButton; - private float mStartX; - private float mEndX; - private boolean isScrolling = false; - private int nScrollAcceptSize; - - public LeftScrollView(Context context) { - super(context); - init(); - } - - public LeftScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public LeftScrollView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - public void addContentLayout(TextView textView) { - contentLayout.addView(textView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); - } - - public void setContentWidth(int contentWidth) { - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) contentLayout.getLayoutParams(); - layoutParams.width = contentWidth; - contentLayout.setLayoutParams(layoutParams); - - } - - private void init() { - View viewMain = inflate(getContext(), R.layout.view_left_scroll, null); - - // 创建内容布局 - contentLayout = viewMain.findViewById(R.id.content_layout); - toolLayout = viewMain.findViewById(R.id.action_layout); - - //LogUtils.d(TAG, String.format("getWidth() %d", getWidth())); - - addView(viewMain); - - // 创建编辑按钮 - editButton = viewMain.findViewById(R.id.edit_btn); - // 创建删除按钮 - deleteButton = viewMain.findViewById(R.id.delete_btn); - // 向上按钮 - upButton = viewMain.findViewById(R.id.up_btn); - // 向下按钮 - downButton = viewMain.findViewById(R.id.down_btn); - - // 编辑按钮点击事件 - editButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (onActionListener != null) { - onActionListener.onEdit(); - } - } - }); - - // 删除按钮点击事件 - deleteButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (onActionListener != null) { - onActionListener.onDelete(); - } - } - }); - // 编辑按钮点击事件 - upButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (onActionListener != null) { - onActionListener.onUp(); - } - } - }); - - // 删除按钮点击事件 - downButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (onActionListener != null) { - onActionListener.onDown(); - } - } - }); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - LogUtils.d(TAG, "ACTION_DOWN"); - mStartX = event.getX(); -// isScrolling = false; - break; - case MotionEvent.ACTION_MOVE: - //LogUtils.d(TAG, "ACTION_MOVE"); -// float currentX = event.getX(); -// float deltaX = mStartX - currentX; -// //mLastX = currentX; -// if (Math.abs(deltaX) > 0) { -// isScrolling = true; -// } - break; - case MotionEvent.ACTION_UP: - case MotionEvent.ACTION_CANCEL: - if (getScrollX() > 0) { - LogUtils.d(TAG, "ACTION_UP"); - mEndX = event.getX(); - LogUtils.d(TAG, String.format("mStartX %f, mEndX %f", mStartX, mEndX)); - if (mEndX < mStartX) { - LogUtils.d(TAG, String.format("mEndX >= mStartX \ngetScrollX() %d", getScrollX())); - //if (getScrollX() > editButton.getWidth()) { - if (Math.abs(mStartX - mEndX) > editButton.getWidth()) { - smoothScrollToRight(); - } else { - smoothScrollToLeft(); - } - } else { - LogUtils.d(TAG, String.format("mEndX >= mStartX \ngetScrollX() %d", getScrollX())); - //if (getScrollX() > deleteButton.getWidth()) { - if (Math.abs(mEndX - mStartX) > deleteButton.getWidth()) { - smoothScrollToLeft(); - } else { - smoothScrollToRight(); - } - } - } - break; - } - return super.onTouchEvent(event); - } - - void smoothScrollToRight() { - mEndX = 0; - mStartX = 0; - View childView = getChildAt(0); - if (childView != null) { - // 计算需要滑动到最右边的距离 - int scrollToX = childView.getWidth() - getWidth(); - // 确保滑动距离不小于0 - final int scrollToX2 = Math.max(0, scrollToX); - // 平滑滑动到最右边 - post(new Runnable() { - @Override - public void run() { - smoothScrollTo(scrollToX2, 0); - LogUtils.d(TAG, "smoothScrollTo(0, 0);"); - } - }); - LogUtils.d(TAG, "smoothScrollTo(scrollToX, 0);"); - } - } - - void smoothScrollToLeft() { - mEndX = 0; - mStartX = 0; - // 在手指抬起时,使用 post 方法调用 smoothScrollTo(0, 0) - post(new Runnable() { - @Override - public void run() { - smoothScrollTo(0, 0); - LogUtils.d(TAG, "smoothScrollTo(0, 0);"); - } - }); - } - - // 设置文本内容 - public void setText(CharSequence text) { - textView.setText(text); - } - - // 定义回调接口 - public interface OnActionListener { - void onEdit(); - void onDelete(); - void onUp(); - void onDown(); - } - - private OnActionListener onActionListener; - - public void setOnActionListener(OnActionListener listener) { - this.onActionListener = listener; - } -} diff --git a/positions/src/main/res/drawable-v24/ic_launcher_foreground.xml b/positions/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index c7bd21d..0000000 --- a/positions/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/positions/src/main/res/drawable/ic_launcher_background.xml b/positions/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index d5fccc5..0000000 --- a/positions/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/positions/src/main/res/drawable/ic_location_searching.xml b/positions/src/main/res/drawable/ic_location_searching.xml deleted file mode 100644 index f009b89..0000000 --- a/positions/src/main/res/drawable/ic_location_searching.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/positions/src/main/res/drawable/ic_my_location.xml b/positions/src/main/res/drawable/ic_my_location.xml deleted file mode 100644 index 6c00b88..0000000 --- a/positions/src/main/res/drawable/ic_my_location.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/positions/src/main/res/drawable/location_icon.png b/positions/src/main/res/drawable/location_icon.png deleted file mode 100644 index afd491df16f17a3826dd930e0725fa85cd388b5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15399 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 diff --git a/positions/src/main/res/drawable/marker.png b/positions/src/main/res/drawable/marker.png deleted file mode 100644 index 2bf4a9e5b83675008e923e3e306e006aec56c73b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6056 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 diff --git a/positions/src/main/res/drawable/navi_marker_location.png b/positions/src/main/res/drawable/navi_marker_location.png deleted file mode 100644 index 0663838fed23187f1ac5165cf78d31991fe6c159..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4822 zcmZ`-XE+sZ+!G&3nAI#;MlUq36+&YWG7k2UfE=1kFrAk_R0<+ zS$Xwd*ZcAP@I23l-|xEb-*x})=gS?XtF1~-0w)0gkgKaH>0iH?e+Nc*eRn>v8U%pm zow|~|fuH&AQ(`{@!{oot3)S(!ia0V74Waui5RG}wMI{_9pTQh!6JzB|Og6y6k`p8@ zDG+N@Up8l@X9{PG!0@qI;if+jQ$f^OZsD=Av%dW=<@Bot4;_0^z_EUJ;Ia9;y%Ir- z;-9i7b6$UaQ@n0XCo8k$ppF9}zR{|^^R7!vfg6X=)a`01C1p@=@0+1+QIbpni zHDa}v^8{)ZJP@UUT%NtZdwn%K9m-SuXRWu8JQzi5@cbKOgrFS?v@G;Et)3UieG^vx6d=~*l4>>o z8m$VsY`xu{NDU&|2wDm5A3zONg9-v?-P~qfCC(VH;_y!R(<##NxelMGFGBMWcw_{X za@qwQ5JmX%nyFE-sjXD(Fq*SyhaH4k8>+Xz$Rh#pbshYT7EPI3!zD6RMx%PY&k!#E zA=i9?U)VF{=k!TDz<#v&idvbsRAK}kFYB*`?`kR&aW2ZD3~C_m+T@L{xFr)rVfHgi z%T+OQP3V5x^9gz*M{YbzQVjJ+(f(|#T)=1zIcY7vdmEylZo|=m`=wD??v*d()-v{0 zd}sFc*J|~e{CLcgrlH~>G5xO zwx{z5z->$nFb%HZI8B_M~I$PI_%MAZ}b1x)n!qGjq)^&xt>{zT(GhyPP5?Xg=Pa0Ul6LOa%@q zlYmssC$+CuwW=oKNt9*XgdZmaYThQAz`fO^ zH2uS1TO81h@|4LA#}j6d&|7WhNu~Xq{!C?oYKw=xwDDM)9ZO?S00$0`8jEtqIGo`w z+_tsdlj@6|wB`h&>lC75 zz`XpD)z)R#16JT0whvcTuFBacN1cWfe}IVdfT$F z0;OFzv;349$B|ITE3{(tu*+)7q}fpI8!6xgX}OaM|HI4A0q#>|dG@6fdJSKt9kbJ$ zP})Q{5z(W#&9Xz9ehTL{A26OBSODf9I{D9Q`Tne*T5n??W}i zy59H4t+MT(J>XQNAYl9fLYGKKoNIcCt4nE|f^YIcn1@sPJR`@oB_Cj3p#K~`RUrc` zM8mY8iD+w)0ljp+Qaa~FM*a@hOg1?ofcY5CshW0L`df2?W5>%pU)Xy`Evq-Iz?}%0 zdm9m6_HM22W2znN9qJaH_qPGh1c-Y@x9;$ zPPY+Lo2pjvZ6ROBxyifZe=8S_tvJ$YcZRbNQG3!+ z^SxjLw}^%%(^RO{ba8^@n&NAV4J8DO$J{6ZT*tlp1J&=kLrs6rS@9pG6ZWZe{K1kY zd?p9A*F3*39(|EHX!T+7nq_p7UTb;&^H)J_+`WbAuU1WV5@H&?o!**!Y9tc>J5-qT z)h1WZtw-WN9M7!Nf6Qn6;QpY58+cp8NOdGir41~Z5EJpLRm59nD5;36s!LKG-We;Y zL1esTTaI8_oz2G;nyOtQj0Y1P`~~gx#5#5I?=;GK_ldTv{(Hf2C(OdFE%Nb~Bo%N6 zlG@)Z^2b@k4Crnz`g3jhx5>Zz<`^>rG0l|C-NMi_)%h@Y?0T7XvqdLoW~y{r!C^$8 z(r5qZ)o)}d=lc%kw+o9;T|zIKn>4Z~(teqb18CfRW;TT!cK~>ahIL^RA`z4ZHC>c1 zM>Er}Kh*=)87LOIu?U1eqCRTYMU+s5nJ-w3k#XagHPh_(1x@mVa1hDRa`56nVq zEEJm3JT-)i?72TgSgI8Q%eBSEvE*08Og9})^znV_V}wYEul>*SPZ$gNcNx1-zy6ER z?=H7u1fm-Pi-rScirt^+ZPw+!MikF4d@6waH>U5&Egw$>X_xdnBi#z>KB5(u{3T>D zUZLj^+%fh!Fj-M@v*mg1%Y@_V>&3T%`}d4@#gnlk|3uvsEc8N8*zb7IFOfgfX(`(s zHS)`#S< zHh9#WdC>H^gqgkQiu>wz2}ID%l7m!T5W1F7t|2niyf1O?f3_q6LaZ-GSoyfv{}~B5 zQLb|PUa@OovwcD%4u~|z5#I`3o(5Bj&ez;%Yl{7jzBQihwq$w^)fC#x+p6j5hdK31 z3e(d3lSZqCe)6G)i|_o{QBOv?Ia9N*gV?WgMx$Da;2Zpv{qZz(S?E;VizVD7t+9(7 z5u=&GivkFogKHO2!A|#&y-5;(%%~;W>xs@%-{a=R%I^$Ing+f$OfqndEQ$MsPG*t* zRaH9|lNCl6>U{N&%A=jex=>c1xD#w8>zq5(toPe7@lQ7@E4p>%dZbpung+-yV% zr+~=S$r}lW7S~2emjGM8uO>aKe{SQpBC&f9FX5U}kHY%-&P^^XhhKd0jeh7q8)4p6Wu^5BtH49H)W(nQ#H`+Z)+8)E&iVUBLnO_~?$cvC<$l?LC)jJ5rg~`*9bWI`i=A?}OHzj`y*Hv-Cf*kWGvmT$j(xd-=a_l@$o1 zMyybey#vlz+1c-%*#!6QH9r{YIpxP~Gz)=Z5yJyy5IzQBcb@0=HR53}zv9jQ*hy$N zjzq6=-ND|VkgLT+HEGv&6vaKorbpj>@mBt&etlZhauMc6z5uUl6F)i6Os8)CkgTV= z=MbYCQbf0wqM_$sn+YL#GS;(2H78A>$8VkL5aT*WP!;8Y8qFZcN{ z5J4h1u>3JZON`+CoA9p0J9$EGhFnoeZuQ?$=iNa}_KZ6}njQ(}{^^qBl4_kspX&xJ z!6&sYNN-q>TOwuxIs|$pK;O8h&3XdmN|nj+om|4^PK703`%Ar@t0W-;{T48-;K$ku zLGrdKym&Z@o~=)`LeYPTq56aJ?)}2T-RvDF;3bh(J1N*=|{9-@+R=`TowVmv`p}$66qz?ZnCHEd+uh z00?j$JJZWI%4cdt@zDf&`F8xc8xd%N+g}v?en$WClFf_bsp(LNGff!L4H8i3thrII zDWG`OuaiCV{XypPfdWfzc9p1kN&8uB+ndqoI2gAIhRmwvO*}w``O$-WvlC+nn=5WO zmb%w_d~+=i1u;GRH#pF#)p)j_O8Xg=PQ(2;KR_@93ROpRB=hp+`YhaH43yYAFi(2o z$Hjc*?bx&u*#TUHQrmjq#z~)kB*=EieZeXfslWBCOd(fkO6b$bWn)O>!-n7}FG;XG zWdrRqX_)siI#`EWAkEi<-5QB+fGh{}lSG$9qd^|iJ2jgppegoew=uQN};`^E7bB(EfSlnkQVD1>5J}pdVGidsfW^$|VttY#;hSIkAE>+?! zZ0e*33zn&Rdx7+>a$=%t$4>+ua|;ajMgGehkrkPsy~E36xmmC{cLz?)RnPkrs{LM? zo?W^E_f!d;A=y>u63uZUrkv=bmA2Qww9+)^+EeuLmlL#4rf7A&q#?oghJ>K`$pgo{ zQeC=Pg+p1lIOe}}f=9|MGwUY;DY~>Cip?--)4WW9iL6v#>ayE8ragC?l=+gR#SEkk zk1fhbyyy37q^u-nQdu*lWJ{}aifd?kmPs0zCd^xXskwu7UdP;2zJS>$tn0)tA@Kfe zKal{9{{H@4TwKVIkdSvej@(}Bf=}*#Nz6HP63AzFxDpZT&whAN@o+om^;pClzP1kbR#;+HjH`)XcZUOrCe{qMA^xiwGu+|h>H6upwbIh=deees?> z7-A4bjm&-uJUL^6e9e>!cb!8uVu--%tMIX~)7Wc(H%UoJn~dV<{WPASiDE;))3p>W zpJv%0N=Eo|m=OLVc5`#H!q(32GO3`K2tO2?u6WiD0Wi@$kjuF~9)X#jF+IEDfjY>^_ps9{O zjiv{tWj@aK_CFG1=tqB+he-SFvk;P5S_`K`V0}F7w)up=&^b_yHtyVUvecw=KDhqD zjCO5gGM`Bpl$8F$NjQy5E`eQr2=t}N2L6seJ=|noKXW|V82#xoQ&(0wv)l3#br^+E z$8Wd1-=N7c9tykc6Hfxv{Gi5kH+g7ih?=|%qMe0^%90IyI0;rEZ&46rGloILK5qyoL6Kx=DjCY4-|yAWkq^x`%{7a8VM@gntvuH_%CbH6sn8pW&dAEBeCf1o`2LRi2a<6tK|eZs)N zpr)bGxzzbe{nRyOP+75U@pBEHq51uRnA;!{iw%8PW)y0suRo?&GLcnYTzq$sYVAi1 z6&S^5$+26Y`IpYXqQL*3+{F8xu(2Tt08I*}tN9KC - - //这里是Linearlayout布局的背景颜色 - - //这里是设置边框线的粗细和颜色 - - - //角的话,里边有参数可以单独设置 - - \ No newline at end of file diff --git a/positions/src/main/res/drawable/recycler_view_border.xml b/positions/src/main/res/drawable/recycler_view_border.xml deleted file mode 100644 index 0af4a58..0000000 --- a/positions/src/main/res/drawable/recycler_view_border.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/positions/src/main/res/drawable/road.jpeg b/positions/src/main/res/drawable/road.jpeg deleted file mode 100644 index 2fda1e908bc10be1fa8208b274d398475788a43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220082 zcmcF~XH-*NxMt|Rx6pfUp@*Wb z5Sj=`5iyFw#Bb)#omp#s%w4l)XJzk`bF%i?Cwc4hKKp9D>CA}h}V=^0Hl8#2^smnBN=gBq%35@tV-m1wrnCk6zs}yQ5F59T8v!* zhnT_e#?^ZOJsAn{LC9DDHvk*q8$-|9`MeXo1YHVForDy#AVG2oVBwo_kT=TV%OL7y z{DCqX^7Hef?8wi8&4b(}W-{`%T71hNYiw1uqQ_{5K1cNdUpMUPs-*vP=iYMa4%nPa zor$o5BSUp3X!u7l;nnS$`L1cdA$YmFUHtIrS=(z|c>+cOIv5+4&i&)z7<D)p-tL;8$L#v!}mwJ6drK$y#oV29G!Szx)t@kcL3J9P=T^lu3;M;#b_|Ru$it^=2LZ45gCT+D z@{K1&MOOH&6xxeRId0kRH4aN5m>RCOS)(5Z#`Q?^NIQiL(iiKWkKJpbl3t>;pd3?> zT2wA*D$L*-j_9be&9O-!D3dB8{EWXCJ+aVeqR8@Mbxf65&Q!;RrXc_}8ch-mXgN6m zuSWB3mbc~rsOz53%>#Au$_0*Z_q@x|Ez!J;3~04rpKtdd=IF#Vrc57i(ioRab?h2| zDJ^}F;}}42frMlXk&cXv5Id|FEdhX#BhE;C|9|KV>F_QtfOJl=W$%zgrUw(ff{N{8 zRx>9$@%K!|UD*epjiQ<^!*u$z2&3GS*$NCKQ=jUoU2+)3OBLhRLE-QC9USyKD>Prz zZ$}MtrAMe~=VCcxm{?evh0g~@PZo?+?GEdqbJNnp^Iu{JCw@5>nyoPb5;v{AL!0`f zlcS@hOa;n5w@JTyy-fFOQ?dfX+D^MluG}wdGnT7CkXaar*IB>ecDGlnf;KgbPI?T~ zl66zv+oT{{waQox(f^fEeJK| z-M7@#RCsNI8Yn`^sV`A7qkn^6RxsfOJ($@=*7MqxBmA>@q-gJIORyx3!)~XOEit6c z6c2NMXg#82>V*eqk*17MsjHDY=BkVAQn8?i_3Y8OB(h$W&Nqh2xrD;j#bpTz z3XHfIonpKA6#pzumf!c0&K8zTzUy9I)8y0p8Klcj>`8v#f1^7|dKuD^NAmen2KnUC zy7H+MXcs%-v}7M|bRA%ox)L9g?aj@*G3~`NGHT07ltS?&pAMJ|fBMK!#Jz-=vV1-n z{s*{-dp_A@>0nk;?=_|*y!RS46d%JG5{*OOWE;Wh_3{G#9r)wcNsiHIG=TX2f9-I@ zwRw{q<5uadj+X&0#0L0jF(|=s!YZHP5r6NxX3cU%Zy#$RNcRrh*iyNY7w?nSjWfJ^ zl(Ez|YB;$dzhG9V2W=U*v9R;i+g%vcBq!%TX*IEPV8n9!jWuLs%Z|!wrQ(f+-_i&u zdEWcwmIxbqL`9nHSFDvbJQNfYK0#l=OmppGvyd4Xr`_p4v2lLz#2*98^SK{|rm@{b zY`MSnxtx}}*X=XjBxlUxY%7+K(E@FM^Z9g5`o;^RPuyM#devJDxmxCKXHj(3gq_a` zGeS~)WXGf5H%`-;=<7ESVLPerpYps$CksKIGj4rdtFU(^3tidfwRsU;0#!U>IKCbqv1cAlEdo~fMyHu2QwND#^ zU9=GJUaw~G=gpH6gng^5m&B8IcJ9jkRLs_r;FZ}jvd8LqysbDV;dafpqVCtIG=Hhq zJF2!rvQ3KI##JCa-`KL!q5%$FZQb7MxZ2$LiB zy$Dn_a4^TYKyBsixGh^;C!Z@l;~TPEW349n_D6hP=`DNh$|aOJwOecT^)F&^?`HeP z)1U0MD~jt0k-}4J=I8mcN)1yX`ugx&UZ7!;UX^-xy2^!bBXhgVl!Q2vURphv1mYw5 z=N}L#B+I)7bBtmBE5J7oN;rAxXp_fBus$6bde9A@j!-= zd`jwA|Fa=-G=}d}nd<(%f_L{*lrt%KOB%}&%^9`1->d^N51f<)d|Id z-!-4#tGh{t7AVW|PmNE;mV_Q=&3d`JbFN3}z3oreV!A9U1@G@&FT*HyzVdnAldF>8 zBzZ7TxNg!?hFOve_A|JzG3<;qgK#)|f%~rj3kNlYyIY{j#BGa!7x(Z9O%jUr+v4>% ze(UAECP-B3fkvT zOJ@G~#TS06r)uZxCyar}+{+)_r3D{7u>;b)&~JsMd7-ow8NA^A~{z5-Z-!C$^qe$3x=D$O)4 znNxu7Wj;bKb-`}5jD_Cb=K*@ziVuQ)>kJT2nt_v}s=WvnaA)hgj@-~jmHq(Sg*pXE z=nx}y5$E-7OsSw?j#c(5mB74x-lYZNq;kCUjeNlHX^=c;^;c?eWI!0D^5%Ipr8>Q0 zw(KFT+7n}y5}n80A$-e%mamDblX3;q+rLN{1O^+r|b_LAjeeQI&wxs@Q7Kb&dWB=uF6qPc_)etV^1!v+YCe^$-Mm@p4- zy{x0Gbjd*pq-AyVx3sDsSQ3QQ&0quo6c>&Cb`7)xf(x@&NsJq6_8z9qfF;Edcvnh} z+68h8e)RhvVDL?CpOMzXlzcdVM0+n|djF^Qa*2m5Kga2>OBYw7j<`&xl~SY$xn2wV z86RfZ2a!*M^3t(RXAF_~jZ9~Z43V4m@(ks`b>sjv%uR%HP8@nBk!l2IHpr|_lxW;4 zQ|8O(VSuS01GAE-o$zJ^r%a>BI0vrU=#?BuIK2#ErvKjqlYgU=|GmSq!LD-xgwwKE z5F(0+)Ef}ju+DW-uuF-D34o5MRsRg4U*@(pe}TV# zp1lIlG*IiN$zOgj`K=(kN1K;8R_h1$gST_NEuHi-7o>3M^Dw_Z#WmVko9BrFf-}n*;v7;n4cn#+}2Vu1>{wKUOU4j=gU9;M6Lx0 zfTk@I*W^#U`X30#(a6Gz3I!6t%I|qs|T#)q&CvU1Oe8;3H%UJ_vkI zqdzoVMvcBaJgsj$_L86J3IOxY)}wqGeZA~+UL|g;bg#{F{XVuS>Ic&T3!ie7M%U)+ zH%KA*e5Mk%o8v2h;fo)~Hdg>--sG?%U3rF63dk-LBi8LzQW*)V9*c&srdAgBt`sM?_tgr;P~W& z7x@){Dew8F#ul$4M?C{e;_#*dFV9n~Jx$D=3w%Pig^MpTODr)59;Eq1o6ky$a}k%u z@sefC+SY#_RUq|+=K9fYO2#voQQ(1m*6Dy!alLQjfyg90&bv10DCvobho!Nx@O;on zGs1%YG3>e!W@u1QL68nWZ*)u`1`hv55C3)$#f*O?Z>Z@(NhuD}!jz#;6fW=3j1eF) zWWlWhn9@ZE&La}b0HOqLkRh%EM2s+0Kdh;(&>BCi0aDi+@FkF3)6uq!2}bEI`beYO zJC*frC1DO^*|8Z2$bu4;WnfdFE~W=lR2Q7we zIBZv$3J?(D4`-g@p?Oo=yK>{NjnFef)P!VACvW&9^3@NDvHm%B-$0X)@IS+Df5)NG z)E*rk3eN4seB~PsqcA-$;6@lB8X4j=P9p_!DRe?3|E_}C_h0817D}`o#J_^PBbDKV zPYz&1$BgSBp2B)D{g2-%lZ#pbuA}cj|9oB7@9ms0tRAMu#sLwG$PT5RODsF(J-kC$ zbu?D9o}mai(Ycu(%K%Z zj#`IzxvOE!#rhk9MCqSHV&;&rhez2u+lOhRMGeUh5R?XG?##RLGr1IEsothm#lfP& z2Wp(7wluu^IrN+Ouwstt3#gw&L3SFZH89lQr%835l#bq5o^x43=|R`+QKOqgS;C0_ z7b1uMbA-XS&V}8&hM|Bx8#YWlYSK`8tpnm5&Z2_RKOG1I?De2;Psle(m-a7jbP=$R zC5w5cmViRRo8mz(UY0CD<<`$|Cw|fu*qn3+?ZR4fUn7=AW{}EG z&r@zs4qX9o5?6qO%a|U@SC@5NR_+K3@K_L>3i?D0f$@`2@7D)axk;NT&%%k4$AK&T zEy?ie&O}(tW8%CcbEiWp8t^Qin=T%kbQ(?MRxi959=%>~l4Yn|pwo^WA}{%{#`a2k zy>{7hcTha(aSmKb2q-0&uZ}|(r33SC!qpv_NtgfnEH=e<;8V2A%{4yZ3{nD2_%#L; znz{9TWO6@6uQSFa*I?Ddczk>}6;xJytTUHBx0mR|Nq}Jog&!@@TV1duLRiU?%D;we z(oe-fG?@@~hRbu}hr49*Wp0E@qbhfIZ?6E1D9o)c+T_GXb=aXWG&wwPnxnb#!LfRE zU!!G4a9#I1+#@oMnR^d&W#5iXhZ*-ZSYh7r!2|d@CzUUpSwk!7i~Cm%P?sIK{3>Me znC1o3NxujF?;RpP!*BHTJVp4^0P#LYsA?6zf(p#6>(HQlz3lmzn5E;e0K9{azDD5_ z9JOg;thszxA#s$_^pY*(HA<7>-V2nUe=Dc`N8BV8%xNc2u$onAkuaMh*U5lhUjxWt z2PGic0sM5 zW8pKvm$rgBY=>d(KSqARuGcA&C1Ce5I)CWGAD;gT1si1BGmWO~O|M^na;?kJR&5WM zpJNjYRf@rBtzd-5puCr5*Q+imyP!YS`VD4*BaA9c{F!vCr=#~T>)&o$flB!DUOy_x ziqo)T3HDBAR$t=#bzyk$>GNpn=6jDu^kuHmXRZfX7iu%g4^PCC$Ii#JPw?_SN%wQ7 zdrQ9qE$Fd7fV0^T_R^*V;5mZ8@aHYqYPsFxf~;REs=toaDuj3GMaj6Wa1B?0DsjAg zys_Xy1=qW*rv=)m8^+3ueM*=?hVu?fn+3mk)6(Z*&*3JA;L`VOOM7WJ&AMG{&N9G5 zCWK9ylIqkJJF^BCHqzTQ9!}bDj>U7jeEu4eHov^a;VFb2qnM)W;=3+(dY|GFr6i?f z;`rMTuQ~N~oC>fL7~#w)X-mKq&v_EOZrgY@$?iS)Zsh~k2K`!34vT~G%P@Q0Z(=N_ zDSf%XayI1(n^$hd;wz>qz9f{Dq;u7Dotzy`aIlUC4J%bPIi0vwLhILLA7n2oH}< z{@4BsmR{vu;vLA}9pL@(2Kd%R`7Nlw`tYKBNQkvurX$6VK|VmUrH1zBV%mdbyUO5< zEsD|NelBnziT?t3>(}yTa>u`ZznCQ>p5ZGqt<1=obe{}Cy&3&J?;tc5$nuth{IPdS}We|Ro>fT z<Fy=v0AnJ*+?aL}sAntK zJevuV``(AaiZUD}i!{FMRh9nyX-G9Vlyj62cv=Y@{f8yj%-{5^Hrb|&N6nzgK6_pt z=pv7KQiKVe;=6Mf|TEstz$gTr((4uW_kZ-vILO}j z3a}|j#oR(1UQTlrdHxaGnCkEoW&6$@Olx#gbn5z7LfQ7COFlm1jN|nY>e)?}i5}AS z+bAgeL}y3mV;WWyjm7_q;Cge*$(evhW{H`;97qHE%o-q$5DHD&1rn2gfQOs` z9e@=Ac)K1uUXWhose)QUR8~1aeWx5es>4L0d3d3;bu|M+!(SxCSmIEQEIZ%Fjfqgt z_9IE%#6d9s>oIIH+^N8-2p z3u!ZF*xJ7^3QOT1^vXCwsGFCLWM=Q@hX2{`HJ#eYKa_eoV#W=qfK5?fq?!fpM3qO!dCL8cmCene{=7Hx181mrPfv1; z9E`f3_AX7GZj=S1;qjP)_al7Cj*?cP1|SiXpjp^?Mucm>*e8GAS!~jBz<*l zNyw+A&f~o*`Gh(Z+fJT`f5b!iyONX~C7jTVAq$yvH)WFjjJZ9eyl2gN7LIMnLxE}i zdP9OmvhLjlidiK`8IkxIv`>C+2~PEPg&%5vmk}sHU}b6VD{(x@^lKXNL8cI$I|Gbe zTTnqfEiF~a$Ggl0Ai(8Bla@&GeWU9}-WCrVWYcyadxz75IYDhO#El}V##yoCun$T|yfw}Y!@ zW%W|G(9z-FwpOk{{Vzcyc$_kuDC&~FPmVe_@A)>X2Bgv8~3AF@k;8by)^Z-qDqJmS3 zCsK<1#Se+71i2FdmO(j!#n=I$k_=N|Od5Q79bMOMe3Dl14`d9Uu1t~vsS#0z3v&Y> zX(D_gO2-(|Gq=ED4G?|ZRboxY$DLo;_d79T`fEZonwUrbLYVEG@U$v#5?>%uo`@c4 z>wg`Ii7Mcj-5_rN`!Kt(jw+WT?6 z9O^zq>sPa8EVqr^Jp}=s?QUE1iXpid_n&!~1wCdz5+XodA!T&_R77W^l+-vff0Qd?XEWapw!U%d*COl7 z``~Pp5NusKsA5;+`2mw{JHtY>^*tvjVt%RmXMG0*Dg0MVEIdNOA4!m(u z&+2f~aVDMwsOU-gF{jC?67S@11G)}kWo{qWS-nd(MLg?# z3R0zceN#Tw3d8u1h0<3gaY^3@fy4Bdzs9JIj#o?&*Hh>D*7kp+@wztzcnd-5%{=au zWxXj8Y=kjB^OO^&c3Gb2gCTD(zX$!J@XV?PuU*N44A#dXNUwm>*FMOJ8@qH!F3mXO zL~l4V%(@bvuX1;R%_%$znucpsK32y+_~1)hB;w`RT+4Xz5&uhk>F4=f+c9#=5syF4a%yP614_?0~ zDTuA~9`a%#{fG&$@ad)DIL5$;zT;d#Nhbr>fON^1M_93xMi4i`>qCLHc}!(q8{s*Bwr7gn?FcSDC(6F@gJm4dq&LZ$2GG)C_l_ z9Ma}M?v}T3)17r^f1Rh2oSd0q#62RCK!kE~y*w-!DUJck^6A66gDjjwfOf>Ci}UsS za=Z$h9@hZ8n34VA&JDj2K&%%tsQ{jCvfuMNBXh32Jj z27ALD!ZYNlfad`Er#hc4m+3p@hX}lFaip+y^>ch`VgCCnE5E3DxJRUkntv{*^sr7T z?YO0<#BzGe8-;f$BXp-C3amlIiwr~-_0lN`1(**$WH5j_r#OO$T>dQ`2sjeabII;2 zz$GIMSJ!NA!(<%P@?Fhu`ES@px1F~nSAddhc~6V$hyHZrJ~CuW(~1U5)ki+FItdI) z5;$jkkPaN(del`1#{81XT)xv+vFkbX8&kvWvY(vkn47`<$7{F^8_z9w@WPl;#6NVD z6iwKSv^6$vCh8nh#uC*c@=P+>vpiEQC%qfHpE7pLzqiH{V!)ccpVYt~ZMp@%{=`L2 z`Bt)lHP`QQs%cIU5L*}!VN5SwmGb(f2h+h9zMYcsKj4{3l_<(=l6u?PVNGPT&-Wp_ ze3p4($t4O?fyGyhDv?3`2y)8h2>2>3_yA1*FNE z^ZSK=pi*4GA(X(H;Bvo5@tDsf9~%!EoIAn3E)`0yVH&<)B7XkpEWrgiLP?O)RUerT z8r!{Jx9lT-1z@BpWoimORRW!V$BiVdvTb*u7-}1I)h_r<)n4$K66Nt11lFBS z`G<(=xfpPAa`N%|05WM6tTNhFb~jbSR7A}cLx300PEelG<6DK6MN6jhJ$DXK(H(7e z%CBaD-vho-ZNXRaM#G&&Q#2}p&$E_HM(6ilA<3WA9f)e**U^G!iYNK%wQzZJUIBQa z)tSRO*{b%)Sl&;T16YvR%0Bl?idr^X3ec?7gJr#^jIJPe>y1O~q56R_gvo4) zS4X`?83c{^a(7HL+1`?~#J_pL=L24n(N=X-gPY%cGHMBMm+_AJC{QK~wfg}-r|K)& zs|lWe-+UV!)~18^NeMyf>%xVFfZ)7>NM4BF2;D=BO;sG9v?P7%-4XnCqYwMLObFZN zO0_Nqr3lt{4BC>3Jz6SW(7j|*NHx18ogL9sDj}Dua&x~@mR?zVGYqo3Schw^NB*wYJ91WzVoA*4qCASRqn6 ze&Fa@j?!lba*j!qL(_-05sCiZAjvlO$jU0!N{$BCp=NJ3PlBzb80y;7gmK27zIOHY zNzq*O>X7~{V39(D`z)EJ%+5LL=Zjc_K)Xpb|HTRr8 zp%Pr)1H;WcY}36Y+4;@Nf8SBDaTW7ZPR6yIjhU!9RO08jH_g19U+E6HElTPgkJ*-$ z%!I%XHpUg`3cd{*yL>}1xcJ!z2f=B}$#{Q^-E+|Turs{H;XRf^Cu*utlVkcVW2Br; zL+TxQsubj~_4_E&VMYX_A@&)tMA2xj8f~2VR$)wk)aFw3*>28Pe&tM@BC8e?Jf!V6 zBLS=6R8p|CxxV$TQ?)>8&wpEB-T~%QJTYeawOLx<)g{td zg-nCh3%_4}DyR5Ji2UKnGcbk1U0$e2Y=hW9&RE%dR@eyKw8KrvOgD=*JGi}!O3Eb| zL0M-UT#5I2%5emV9@n=r;`{Ib*4^+Ps|&&h-(3J?6{@~+J6gvhw)@q&zGc-FrDQ!_ zBX?zQ`G)jZ|5R40mN){Jw(JY&d{4-%Uap`0KAO3=Qz&p--N-3G1vfYjftF<+*eRrH=77b9ZE|atC z?EQhW7)u@CV$v3~(XZQ7c5-Zh47t09B;BAb-}MW#SJ~CCXyM)8N9Fl{w2PH|V3?-j zc~QOmwq>*1UcdwMg7U|cm5{S>@>;2x7SYA=5|!jwAZ<0jm%EEYZI03NhSwy&kA2r8 zl^-yuLAjrnd9@_CSRL}+tXp_9Ml02`9lXY|d7l1I+?PEpG13P(mCzSeF-Y?d*E8=q z`t~HGD!uOYyRXT6^^U^Z9f^?(GAul{=4x-z*EYH%$L{$NbS4TH32z z5@=>`e2fL2O=eUz+_g~BW&)ypw{xFb%SN;bs0WYpML)+-3{ugWPsJEDmb)%|;#|6g zNpsiI6uV^)&lnXvanrMuQHfvCw0cQ%jDU0_?r^n&G;c*m1t%pzADl7Cadny3pwl{! zkPdIAzF1&r8PYEB2R=_C4tHm{A84H&CTYF?a!yg@hXIF8yhN_ilLp0hQ-LzE14j17ui` zd{svty;8ib$xTjh!<#XzyGIC2U#6FGrF#Sp3vyhk7h|zFqF-(RJEYB2QG8$HM4^~( z6f`mM4Zqn%m=~2A^^M&sTL_z6*WA<@US|laYkurZK7@+_f1qcSQF&J)!>Y!00Jo5< zs1uNCzWq?HQ#C;6PD3!Dx{%mZx3FPh|`z`IdhNt%a zayHUb*LObxU+Os-Yn-3v1?SIlx&^I(LTJAsPj_y?& zT&Vo|?U{Vs4{+sMNjd6|MFen9PWhkPXq^vc;}`rAR>Q34{C3V_vlUf=FmZJa3++ zs}SUL+KC0n<$?PGHw1q}=>xgE7lE3>Cw}fpgZ!pTE$deRh}Y%~OU2Hl7Y~wOOQDIB zl`xZ#Fi*qyhTkW`)&o^lvb5fzMBWgT9(r;KWhzv_3089yx&dTXSUa^lDZ%0BAJ-LMWmGlKPx(V>u3&yQ$%GAHLIwq(0t5Gh`7jS3rZ1#lui zoJC}Toq6(KtRH5W@_n1OT=^dJGF4%@=6B$`Y(M&5jE76Lo13q+qn*`ErpWT{Rt0Km zn(ym$#JlMma*>ea`1(o-95ePAS~V@K)1;&h9lAiiAJZfi|yy2)_*!f_)xaF&lrl}z&zve|btrg^q%cxEf>KIbqRhXw(G)vsA(k2qF&#QQ6F2=QCRH~TDdzNk z_>Q%zZw<25vAlDj=lf46t<0=2^{XNuy~SbU6gC~FhZAnyg;ZKQ{NS0*(%%-jE=08D z%^jY}w<7xNL`a-)L#!dVq85tER&E_sS$ul^m0fjn)%uYnjFejvg@#jPvs!gz-F$E` zXnTuGq6ADOuXbyA=7`VRX<^Z+OU8;?{j5$K7DvF;s<;?WZt+L~MncG7`E$@-5deDPY$6v*FDS?I8KTvX`n#wJt zSF%AbhxT$xAC6n8lz25g>+8<7OIZm*_Lv1!gN5J~7Z^dtH61VMVX!Y>t+A~Ct;T}* z9YV}l2X9+bcE&gF`q&h*yQo#k)^SlT<{S8%lfm1FQJ0W3ZX4zB2d__|qnmFb&%Uh; znBg9`1+YjmYEpl(rv~J??`8KS%nswE`#&_)w^^yW%QD@(VVho3*V>wYO@HNizu&Ku z$HTjYZKwz?tpqM;Zs4r#MSXpj0C?`8`jreJgK;B&o>fn;e3g)MGGTG^!;Tb=?m&IK z^F;37TZM1Yj4OkyFcwEDY0G?eEl=+jSFzHZWO-`eSqVRd0^i6l zEIDOOFa_^zLH_Xj7WL@)g+t@1uVH5O98M;9)yw+Dp5T~ah|O61PtB8^^XL#ULzlky zgj#z?Y;pEP+t+&`rF>nBuLMoNm5Y-%CpzisvfT)iF*7{VQ#KA!%vkJ}OxrUt4}WM% zHLtZA_Z8rLOrH02g)f0Eho@cSDGgm*m7mn4`2&sAy3G(S({%8VoP5uTXTzUDt7XtMN!?xUI z1%ov@;X~xS;wgnn?ViLMABRNY;!KtdLui(-2SaV6nDWGUL=)}63CFGP!@9jf^AaI0 zvZ<^J(A7b)FDI2Rs_MsNDeFt>walTF6PGbBSqf;JVLMCYfw^4u3+@0hV|9;L31D!q zl?p0g#uNQghI(8nw`8=et(=|qS&qOJAa#u_`@lT7rgrlVAuO}`M#R~$Xp|JS2GyY0 z1h+1@aH{Z04x%tWo>G{{p|v;udS54I8~bGdeNZiwRYss%APWj4GCIq%HJ4_E{HPc} zb?AocMweibg^BvLQPlYJf~1L+S_nt)%H3g@hnU_7_bFv>jG0Hwf~K53e4+H1-`$fEjJ(fD0QGw(it`o`8~?af;0S1oMM$~ zN3DjtA1Y~5eh`RD>D3%|wO9T5@U(K-Z-KY_!x*i{esJg!y+;k+P+9scdCLn}oPm-z zeGSpXl-GhnQW-Gx`)LmoJj28|RXd+3>Ey!N6yVrN+(#L|0LiYe7ar z0pSW9y+HgH#2s-@K!Mk4;+xK#$U{Sn<5-ZGrklR=utu*mPwTCAm*r@zGHGZ!Efwq@ z3kuSmClf32v6s7hCkv;G5oIHCKyPQ6<|^7g zn6Zc*mFs&!T3QfZDJV%BPx`{7Htad!3ViMC(#;dAD;H33WbqVZg~Yd_S`u4c#S)=|!cZ){Kz#jT$2W0tCxBN9p<0GBwQohw7sqqTs=(EELJewbOIOj)X&X+?`_@=ux*^IVhZ79qq-l?)Zc0CudRX0dSiwCzNS!+uGK@z5H zpTxT*x3h+^eeveGw|t;`jVGfgv@2Vcsy*DNpB178r8Q<=l!#na6}%)oQ!uTD|Y$L4n{Ih@)}JUDY#5zDLHkaoR88G*8JYlNud$ zgJ`jAYacb#$6hjSsNMW?Xk^A(NsoEI2yC<(34&J3lx(5EExz-Lwpf+B zy60q!vHXtNL~y+CfWyp_+Ze|gU2x!<-uH;6@XIOZ!X)ksYas&D^&}BS1{v`4fZLt2 z$#iDB!Ye$AE3QDkw%o!9Or=gSz@#o!CkjaJKnmKvE_exCoE5k{w^3Lq_vX2lH2hsd^y7G60 zb8k#EJUs|)7w{BXd2W?a1?BF%Xu^^dHg8_6FBG8 zLM_QLQ8xu@}1uizL4fOgAJ!_k0a=Hbhb@M2~(hGGpx`2?sSK zf=HLf1trQ?hQZwtl;y)1eK?~{u_(XnLK-hyCQnSmI@g0BFqf8a{kZT^fUnr#D@28Vn*+g=|U`Q2Ian93bb{USl+WZe3R>H=zCq^qV06}Qe0^5!1qBm9>@f!v$@KGj@mnO zP_lH1$fhIJWP&4mRAp5HB7*5cvi%Z?K(L%OasL3#l78UzSI-l;>6KZjlvO(Hy`)E% zeW))#({$$TW~tUb63%(L^Bw`xS5DR&+FF)se7*RtGY9V3)+u9TRDB*1nl2Dske|I= z&^N9&T3G*k2{Qc)Y8ke*SH3-g@6LXQxCi|3#E5q7Q}8D1%Ul{VT;np^QONx!Wf_NE z2^^D$qqkY#nn1}79=d>n(y2*#%8DnL)xBPTnRaEBZsi6UEUKXpyghkt!BDoLPKFdI z(?37V+y&-x0`Nro6zg4Fm|+wtZk<*lQ!ygDdojn1Dqek53?95bJh95A=KEAz&8Nj< zI3jZ6T2Spb=!a0$u#&)6p*OtysKJV^&<+``S&s2nww+c`fqvE1g^i@eIEy*EL_e>M zZ@C^5Q{^NJEXrO>EEg`}&(;2X_0+NYhU0MyBkA*+X0pLCXt9MS0I_Du3>XD?*gdq4 zY^}*;;Yz?7+u+RZUk6Kl)`(*^4x?K0q^dlIqRYMrK& zd@D=(FTB4knSS94RUg%n3p6{Jv^KNjUMY*>eFS!e>kRf0A!=ts=INCAG}md2x|Ok7bEUFL2i$l6q+8KP*`n$1c#4|cVl_M3 zYTem#{LZca8EdRyFGw%w+CRok%ZaY4=F&_z_`cRH?#Uw0fl46b;V*7 ze#ylgJ$LbEq?e3>hjY8!Ll1h(^3}&4Spnk%D=6y-9$z1?u{-`4+396!a$fY?b5Y(q zg3!qdzurUc3se3Wl&p##*)-UVlPk{}63frGIxZhY^KCL1+LckhvYI7$E2fmtgLHz* zQ-E|3T`v}i<%%D}K2AIpo(?HXmbbr|RBlRJQ??;QA_azG^VTMd`Kj375c>Cr7OP~O;m!GQJ&4&pl65xqif3yn1pIC z@Kj(W^!DdKY$o$P@2SW^665{zsJGrfxyHbP0kvFpF2rrRX$X<@DeVn*syIFiI^x!D z<8vIbluSHiA#OL_@?uJ-rNjcbl@_Et`eBq5lC;gyuVNE_sWZx?Fo0}rpCYRQ!!74f zZn6e?=IQ&qg+!V*ltb%c(&tN9LU@Y?jse1mTkjpI%QXDLx1A!ze-N74W7ve(y8E(i zm7Jr^dYtV-pP~<}am@2mwr$b;&XBQEklY4ry%1FB>+^QSCMEsC@-8~~H|W_hZ7Jr% zM5O6u0Gko)p_@ASJ6#4fFqxw%#TkH+Ae~Z3B_C|$%Ff}?KqXmv^Lb71`%ey)k80oI z;c{WQ#tD8v2cLff1s%mom9$qDj9@yPMDMcRQ))pTIk31RkDWNEh z5K|JD(6|EVr_1=AIt8P?f-O8Xl9nR)o82qdF6QZ$*M4s<2b2HMwl$t+dwkf;IlpJX z;b*C|FoBl)&RP61T;o$OQgJmTJ?ZXPC;Ytzp2pynqHDmNn-s}1z3!D>US#nn@(e0* z{a}~W0Oe0OFAR~)iND=#S_zTR1ufIhvo^FRuX(7UVbaCczr1avmR$rzxg)G(R>DEr zUqCbx6>4AXq5C;bDqJNwQq`b5Nu|8;S;im{`-jy-hY={tNm)_NF!mil;Qdd15iXMe z^s7a(kb$rd-wCpk{?}dwcuCft!ZN>%n_1wow{q zTwEv31?inzZkDAPysJji*Gd}-^MQJDM#EbEqqhf8p0_^L>>g8=eK}+|qT{d)6Sb}R z1(}tO)#QA@b^Bxl2_TYOY`^eo)-|4dDFOnMK7JSzn zlla#2ByXj(g3#O#_LW|-!xbRAmZI$+Vf1eKEOG1LkJ`e*qP!oxKmQ7X+p|#;$T$3+ zjI#s;e>z>mxNpY_NJClzV$=f6tgT8Dq7*}qK<6E=9+3ZBLH zL@*2KyP0LuZQ*-F9m38kRayejoeu|NX2F$t66ZmuW6JoF+$I?XL2Ug_xF~XK|A;MN zX;gGfYVVP_nof{nTtRL^+w<5u+E=CmeRGBtcd3&e5@Vl?oVZGngj-t4+SbCO^?Xuq zjW_)N8vxxvBEP+W@^Qv55S6OA)3eKMY#guVF>+oH#X_pJ9QO2E{+OoxABb~|YezY6 z{{U9l*Ay{DHD+0-mm^M^Db>_TRXLf!%-w*n7#bU2d|jyFRrHEldP$L2b}Mo98e*P0 z;^Noa(ak6{_7P{1MS~DM4jY3Jx5Eev;qu^33yC!EhbGvD77;EX zFt9v0HtcW*5P;hcd`_C4YPr$~S3Hhvpkr4pYcWx zZ#a%R8NHLQNW(($O|7i0Z=SfPAG3T`M=B{9ZQYqb{cx6iZ+29?Y^z*Zm4+tR>C@P{ zvZFmrAol|27pVP?r$ukJPR_*WBN;%(a`Le+X0hz1PkP<3fACHx zpC{O6&Hmj!xbzBM8wCwGhLCcW`H9@0jx4-_81oh+4)(`1yy;)sj=27t8vCBlEt&~w z1=Z4$kcRo;l;{VC7{&Y9-5sL)g01pMf!1dBc)+@V@$(a z9{3E@wGx|H5pOspJrt1p`AxOZn2l*xh0B1M^gFU0#*&tc*q7Pip?&7vM|4Mf<-1_ zY$_dv!o)znC4?~?Fd*%W?kmK;!A|lOU@od8%b7uDwxDZa+~Ygh{wEbz2pmzSMu~$v z&v2paJ>olP2ABnAB@nD)S*AAejcDpB6lEt*IHw$oaB*NTJ@MH+zK$qqc3A|lyEwil zoZ8v{04xe4lwSpB7|xAFmp9`$AV9mhz|p(nMnFinYy;6SvD;G3=ME!`?aah8W@~MU zhGX9dDGtcLgjnLRsfbklo!wGWrIlRRF!b~5iBwg`OO@w2BWG03b_D1z;}tm76)k-u z(^i=xOO9OdzF8w{*kwJBZ`VR_3)xm_sFFBVtHHe+_aiGAc#^cBNRz9Gg~m~0A;YazWqSr8%3*UP3(^f zpNsJ7MwUrnq*p+1;yIeJ&3ShNTi>KQi$QArvm4e1X1`M&x?7- zA^!kO_*8NG60e!e;z^S-w&7i}h4H4pGv^dn+PIU2((v973QJ%1)j+W^2(oh>oO{>G z0+Vt`vGlek?`2;d9rE#bf5s0AMUm%K=F6s$p}ta2t%$dw@q?{;RKk-&@rYR2UA4{d z7~?&jRiv$wq|~gly2TA)%vwn$3`C8P8vsaExW0>~`0HuvCYD(_h=sHCBK{Tf*Zugu z3L0jJH|$5p5Or(a2(j`pH3dgj_?BEEnM$P$s4k;0{9VVx6q27cz#+jJgN>q@l#Ik* zxW-joIChDluV~*j&;X=9n;kU+dt&1wIY#zTT+3Rqq%z5v8a8U?p)xamJ@Oo#~G2uQw?oJQI#c(bRh^!MuORf`jXn;;5%XI z{iLI+tx8HsBc0d=yix;Ub8>wJzIVhn%T?1Y)vS#J#Rp8Eg~733TyeGajl=l*KM|>q zH6kW?O6BK7*{;mG<*)=_Z980BtgYg3P*ud0Vnta2DKe=lEpkIz_RwDEP4VZy^*#vr zrw50L6f#p&$RbLpq*4`L$3B{lwF#&?9@us!&gzB=9wEhFi1S_QA}orAT@-D6x6|is z{&?N&eB;bN>6aF?H851r(^J(L)WnewzMTUc%*5LEcl6bp9*Id%^)LxcMj+a#CghIC zO+Q>oOW+UKrgyZjoe9^djAijo6EtDuglA328e1I@U@#f(=;@`1wz#-tX^}iiQKQXe zM+{4Xruz|yg#c@=IzBJM;s-iOVSR2k#x+e8wBcCU(EcUc9}*1j=z1Q`-Om%Y~N&$kPpP+A?)W7p*f5OR6mLkTkGE#;x;9Pjn{E)MmvMXDzd7@C~IR@ z32Eyn;}XQRCzY``!DO6M2ZAG@Cm8d&m5y!k(TXk0lR2`@Mm!KFnV)^J zDoU9tDpF|oUpQosJ6koqP9n%dJrH4u5FpumSJeOjCz| z@hOp+Y4VZT&Qfqc@NOr}bQE&4Ew84ZTyrR4zeiux@++o1{BovPo)&YFg@`!CDgef{ z2MlTWqSDl?f}NW5%y9tBa(p0*4AZle7?A~lO8w3g^MmkZL#3X-F!M=jJ=sgZ_^q_JRh=Uf@{&0rWl)I-7O5Yb&=Aj zw2s+z8)L0+Vrfh&u~f(;2dS6>56cTCcw==T;=w$LxSTjQ#i~j<>g5r^6Faf6wmM(_ zhkkP2u}ppXHO9c8i-OVGi5;5$^K}vD8BfcCRSmOPcyn&$q+-(h7R;^onzU1G1Y-L7 z-xg_ojzp+qRZ+}@0hA!hSo-4iJ#IzMB#a~{P!~qUlT|Ci=&NS)wmDvG&sKG;7&PdF zlG9Mcu~I^VD9d0ir;KLQaVeR|3_RF0Ma1D*IaKyW0PdBKV z)U{Ppuu$wk*25ZgHM1;1lSgjeG0oF`vRCEPBQWmXF{3p#LFOfcRl2 zvoOXlO;pV|^I*8%r;KHG&6!-^Oim~k5ao9}oKM%ER$uM$z0sXZ!WdT5 z(-@WVr#J|~&}w|*vfo>rYaB6Z%wBmWbwa+J?Dxdhr3ks{2W$7oHw$Hu78!?wjcBV8 z)GNlf9+=K}tD{I|zROOjF(xX#;+hLZWvys2U8Jd$>!y6s2 zf(5ZnLBTRB^)S~EjF|K*z7XH!J|g$Za_{OfEM{@OD<22plU2RRMa&dxPw&rcB91@) zq1Cr3IAU=oq=u#@YJelmd3l!Ywe%T|pWI}7N9`pC4EA9-FAjJaSwv20?PXs5Bi+CE z7@@~F?JpE3iPG^V;q}GTeVszwfXo%MSX$wkwY|E27~!U>j!L3cuL`hVd7CgBwa&Wl z^Ts(RQFLbCw0p!n7a=U~oDRbk2!4BXvJ2>^wmN9~NGHA{RZkU6WlLrC9kJZ9?`BU5 zue8L>0081bKyW&$St+Em5XgPj#8UUrV^ovb&f89l1nn7;?ziOt|8H+ zQ*4?qd*G@77T*p9u`n%&Hi|1&(j{FauuBS042o6aZ^SLz9(W#OIcg&|XvVCv zF80#b*F)SLS76cS6&}*Ucw9BSI<7Nc0VxkT0Vax8Af6lI8%SbvKt$Vs}j16INxfxOz`ltQ%y-s&?`4GdM9SeNB;mEk%nt_ zvwS?}#SdjT$sW+q&0SLI4LNfe(bhQ#(&|pxt)L^)*v3+)Ok3#R_H&5NYNS@{w+QWwyE<4aS1QFWK7amg7@V(kyVpP~^SKEyFkfK!WovPRQk2fJ%b3MHY#6}6 zoZT6h)LFI{)5LDlE-5qBxE~CtrdcQ|_<)*0By)tOr{$o_WwTh3xXeL2-%DwZ%90g^ z0E==wvAI7Jj(dYsP;h8wf;Xy_m5{1SP|}qRduUEjJ?*;M~|ISj(W)> zlhc?M?WhLF(%rFZh|#r7t{~zIOzxqcAcF2e4Sc7yg91B)>5eY8FKQ}Gf`Yu%y*)xj zByOe>wp2dxYxgaC5!81Wq>107x8h#V(s24&s;WyRJZ;N4qi?)puphqT9M=!_ju+$g zOIIy45hM`E&{YB?N#q3O1-t}X`8wcIQSs`!=_vS{#v?H+QxvC10PIz+S6kfg+rBxv z-WORx?R_J08W`*9XN+t}JwZyuiEu9~-KF^rwVz2g+pu7qeIANAXLLl5R1wc5|?63hR7G zKrBcbVrmXubi~z32G}f;i=fjGbq3wBV1f;f23FpCF zsvjgtnT|RNJ_A&gj~;0AI|t0IufrMS%NVViz<6Eod7U?6l zBS!xKWf4=u{z_Q}ZsP@xjxlBuyz&pi1(z1%rFK!Co+Z}yw%Fn1lB3a4w`C43DGOr2 zo$N7$)y@U4pvPA|1PwaNBO5Q^?TVa7gVI$ho?wGdcn^CQk0e%_GRul?+Gi@VHALA# z0ge;UNp>zm0J*isjYk48PYP31B#!3HTT6QUF{K9#f*jv#XPROP<8RD=V*(F%rj4iiSm2N~4ObZIx_q*bT5{u8uIA$pbrn5sp5(wc4ebIt{JUrT~=; zubk?BIOtw7XytxoNuAuQN{{xF9A;6o1sT4$sI|qVu=hr%U9rzCapaSm6&kVKjhNdL zA03x3CM%<_lD!b!7_#~8i8`6$SCQ)Ra79b~~>iZjH6QWpuhon2$NriMpB*+zp4 z=sOznV_P~{X;IDkHs8(%Jj)CuTpfF30+)Gu4e$7ga5(P(F z6XfEb_{_F*nV9z18LcFaij3ri8e%xjVv6)z&o|LIBxzi`o0EnD*kEmmV^oYT#|jP~ zA@78p@hmGH5y*RD)fHTna%YU|-`4;J*qW(hWfwk}m$gi&+IEe)J}V}5LfT&)8_uYj zkXVc9jz*k7ks%SWm+^XINqMzXa_`he{xQdr5pPGOiz7;&$;%>CPWkl!T|n077O8&I zAU|*-2V&Y`_-_xAnVsc*PtON49L?4&JYzXa)Jj-yM_e63HzHql!ZFMF#GX>#HbS z!`(fN$@IQ6E0Nii09<3t4;iiYj$K!o~v?IG%N;}xm$s!e0fK-9CL{9&uN8TN2jP*Ic|Z05+%L%7qyrh5kx?b49yU{HAnx1v3KpNNW>4=tS<|uAJ^NJKxvPp2Z1nt`! z11yRdfKEH)sfsSqONp@%B4xNH zivU{=w9?w;F)%DGg3#ibB=3oKK78SoZHL5`kpTJ2BFUCjJAAK?Aoi!)?l;3~=9y7q zmW@nJO)8cJ8MX|%Ucq<1g>A05^-A_=p`Jt+V-p2nNXqIMt?jRN)MLs$vaI2cB-P@j z8lfr-QUM!8@i)4z%GU&pz*yKao7^3j^hCQesQAwW;&hQiOC;2ls{)B-M**a4hSmXW z(XLZ*aNh1;P7-8kqD8}bEJ-#y4SGSxu*JeD_%92Shek8f%}mlq zG$*yaKjpVtlj}4aDo_i=8~t^2){lk2zDeTN7{M zZrO+)f}TG-c}+cc6X7&5$SGrzby#_oRc(?r%u9K@0ssQQ*o$}5(fCzL)>EwMKRIOT zX)=(yk9BgSf6Rz0P#(xvx@$nitV3tXd z9yUf1wXO)U(`*A}7rMI zRw*W2$fqr{W*0rdTzPdz6`EO*E8&0fC7w8ooWKN2S~tt7*xcJS@zZ--Pc;o+_=D9( zrWw#v#L|{Xqhc>mc^Qt@V}ppZv2OL$UJ4=@!ulTC>i*!(rrTK2PxHB|=;j=9{`H!ZoUj2)@^ zY%MTp@xhmzQ#(k&vWr~nU`DJh(f}63{fnrn`%t6ewJy@jnc`<< zaG;FcBwpc^xYtgAHyUoq#JGBKLkcOCWtpRSSX?es)CKk(C%tll)+T`{Vk!IMpqnj2qC3{tZ%yKjy!MogeSpfR|( z*969^BlKkP{FyC4e~4nVwB-$m+Z&9x?}}Amg*Mk3!y{)tOi3b?aIRgkEP*z*xQf11 zV0FX`u{|rcG}|#;O0o+`*clhWWDL$p-w-w{Yis8kre+$Fsz{q6Aba+<`0co4b45y~ zc1CvA$*}at1pzB2VYtTp9BNgGQI3|}40HJqa_H*ua>fttXIIaUE@I#eL{&mxCSiPY zzv4N_Oor@iFNrXbF6!eqdt;C2{GH!l;OLm5sBXs&VvWY25OK~!#9gH7Yg@K8BCJg_ zHI61&q>GM7$Sm~l8Yri-t@?*y>xO})&1NN&&KWqAB-ot}2$itrx1Qq*?&^p3{DP_H z&ZQ9oi+9F+)K&5*OC^W;v9`4lwXDMUo^gRq$Iv`#Ud~}SRc$p=%*mh78{z7tlpDG_ z9`_jOT2)*3#TvSZT^$)qc^J|;TYE-t3W}(+78;WF1nGlUR0-($Zp5&YJC$d4?luD!B;tu%Qxen=u>+_B7?l!^!xfp2 zd};JkckJi=!;0d%Ix5Q8B5qwGBB?iG2Kb>@#5swVK9;7!6k<9p z#`ra@-we1Q7Q`B*LM#+rjfazp)tpkEhMdnc1wi>pEEn*WJNg2DwlY1h;}rZahes7e zMrdl7#VV=QQpA!zhg^B@6ZWcksVFFEWt@mntunJTl6SLS#GMyk^plKoWl_;Z-XZNn z@u}B|#b_#EM_O8EgPtWuDwiNy*KI6+hv9lsaVpyGJq={ST6yWEb*B-J^DIsC86vqBYpZ*?u1}^X?VlXs{A!wkk~w3oY{o=s8}7~f z4_u>Lc)l||rmo>t94Cjv!(rxB(nbwcN}cxore0Yz8JefO;uQc)59cz7iCjp@WeEh!jGk>)ubTh zIer+~Spth&OaUibh1g)k1{OH)ld@o_u&fz$!|9637+3*`1_K$hM^E!22JSb~-w=28$D8rK7e&N^wKB<1TB1oNhEw-)Okb)T#eiJLF#|H%*WWfe zZ)gt>tf-Evf!QjUa}uJSJjpU>xlW;8&0}J2GGDMb=MN65eg$6j{MqYh)lyVR9`#U! zIx?_PAYymRt+cVeD9?SFa2^>;!37r^jU)RcSwggz(5jF({47HEzHw&IF!SCu!?=YX z3#OW;t>mW8Rv2WE7D7GVi|7j2jRy9|q;YyC{{Rc1;tw&I7buP(%^`|Z8CW4IK?I=C zfUH;@_vHPg_M(@FPPG+0Hc0rm5>wR*wK61QH)Ugch10RVp!v>y6?-!{MDuX&6~(86 zl(CtkLJ{*TvYX{!DsS;NU2UTpUN6O(f|H2nk$%TLmDc%Hm}pkQ%c6y~^~ro zrxDOp@Vfd6nw6)joWCeC0$VZ+!EAHXes!GJs{%MERh_@cx5xBoWqm^Wn-XSy*KTqI&K~9 zL)TA1!l*+<%LXS>RPEd1aaiQolKDFL)$;Yo3I6~{(*vl4 z&l@K-(&E=m2=&8>l6Y0&d#eCdlU)ydb5%anRPZ|HrsB&OirJ!^45CHxZp2>Z+G(aW zp|%pcgS{-TT#s8{S0Lr&X~M;q%PqhoTc7WYUuJlF(s8aORa?Xq$xn4E?R6;GPHSd5 zu*r5E#-nU$@tTVMCoFMM!z*ywk(NnSlI*!y*+Xnimd)QV+k8{6ZUx7~!u7BuF+?Jf zosnjUtK8hTyS86k;{ztiRA#N=TtkIdafE3D31D_Yl1PhY8U`7Z~!4T7?6 zElF63{{Z7TDe9uAQ8{#ohly<3*ab^>*XA*?#<&C$ah@KWRVgZEnU)Gt;iHTqp=P?N zy~!%Kzk_RxaCNhB4jt_@v2YrLRP|BH3E9{)DztWOh$^-Ns1`VhIs+EEdO)$QJkrHW zD}y8wFmR3w4B5TYxjuTdCq}^J;&N6&15TR6jE9@3W0{JDJ+~m+_;EjI>nbayifYOs zO=()U?e)f`JzC0Mo>k1! z9ZJ~dy}R1~0JG;9Iagt%bkMYPye>7Zu32P^i52PE#hloP8LTp>%FY1z*fxV!J}1NY zawD-PhR!95Rp%Q<%q^2PY_ki;RY#dq*pS9rl)~3muAxT?Y6cD zL3~&Cmb;3Y!@{7V`#fScV++Dia*HWBlUo4En=sR;`NvK}EvgYK=8 z?O-$_%mMdFQ)U>X?Ua>l^sW_IQ^aUF^|a<08Q7$3xkyXdZar;(o-U+on^TIE4J%Xq z~2z9y>Cpp@@=F z_r-RjP`>cQo~Y)~Vk;v^ZEK%Qb}mUA4}*OY{wG?eA3OYgVcEj-wS)wtJg@Dk3Y;!4F+1TSz(U$T+T}_63C!3_} zigGq)01MlEJ38eH-yIwdMUXEyAvSD0HS$3Dm9OY<@JC56-7~O}wz1G)b<{CZmCI5j zEDh{7!uxKR+nQXHE{|v>JECCm`$1uLUGbYq!epw4Iz7KT<79Bk2x)S>LEHk^C{|46v>mZptBbUeFj4^`*wY%wo{Z-4KFld%KyvIx zDK_}GP|CvNe>kex?~6RSEs?^)!o>$078Vv30r41%;j;STSXctS1_Ic8EK4pB=wL60 z0@!>^EwHR=BV;|W>bAjA0T^&EiEN~Sg}w*{@cBJ(Ot>trAo4aG3t*sM50}>p%Ay%@ zJifS)*Ai9VTuqOO6HVLpucH~=AufkYe0A}@ zA<0#aF5Mnk?WY`};#IXQ@=lV#z(XEhms<@^#djxfo;Xub(iz@0kfN?;D!%W>^2M$* zT5A$&$)qNtXDrH*#%+ zB~08#y1Jr{N?BCKDI@n4l(BaFA$q;lH}uCB6SLMru3c4*RtN(((AXSw{2gMaqO9Tb z((xF0)J@EJBYuTatC3g_R$qpg)+k3`4;Z7bdN>lUN{X6^ZB+{=G%R74Nd$}U6PWwJ zDLdNO&z`ax8kUAC7M6|2J!s&iWR_ExrH#~_xs+d0rzs-%^lE+?!ziJnVMeHGApZd3 zMbUCxhAXQnB(t&OdJIK#=y91wDBw0YMO;Pt-H zB^a8Xk`mtR!aRk~YmMz-qtea3*xsb}ev5(9Q_f)xQlqVhYmI?Al?Q8+wlyae0Az{d zSskoPHjA#OefPzBjW~IRXCxk#anw!4zn^@3?EIYhX*Z$tdTddYH+I+4zAUSaZHZ(y zHpEsYTjT7A39n&@wY%bA+Y{5i5a_H4J+UBI17Lo5J{I^aD5X5;@w&Ef$<%WD>*_x| za6C?ur-)ZaLtVt)N|$`gXyoFYdXL%qnJHtTjhdDw zC?yYaN|JwvGN9ArZE&2Zmc1L)zR_^rDeQ!9?JTf8N7=bD{p9X?SaQZ&blTx=KMBkj z>%)6s{64a1YE5LVUUH=3YF=C0De7ytz;EmE(Tj$Z;?dL^C{{|DLytxFbD75}MKxHFY1!JwIivg3yBwEX z#I2e=vfnSp{4WaN)Z8#Gf|uW!KUJ(Y)wq&ym} z10o)DCCEwLfyk0E)3MNBW2QC6*fq1zVWfthGaVQNrpV4)(|v7<;pw=oH1w5JPNw-~ zhIqj&JcFn|5OE4#Hw-l^MONy9M`Vl@IaGm|u5Wd;1ol3f99gO1w7hDTH;SsF7+djE zwoKyIwxds#j+om1NBtO6(^T*|6!7Yp(wSQAM>FO!+_sBly8N&1fo}N5uHYw&@n@;w zdFf=9K4kRsMpK*DWekNt8CU`dzHZp9?JW!(3yrT4salak7z;Fr>V=t^dX#1dLaFYr zZu;6)oNiBOIDGs+g;Ywl@kbo7Sh7iz-vO?pHkR#cch?1x(Un6#v{Ugx#6>ZwfM%zs zk|$-&BR*l6x4ODo?b$|#{Y#D3aL;4CuA{7^r;&M-E~S#$SUiho4YtLF{TBDatM;3W zM=V??JiIcR7@ApUoxwR(tX(cM5*c5lc;4FMlJ<(SYPwDmvr*OZ>FF6;of||>i)@WwRn3#G`)nXE3?%YOd= z57QS>MO5z*ks4Md5o7|}TV~t!7sR5XrD(ED&vnsbb@$G{yJMD4w#r%pAj=d{%bFQ( z!l*7&IdEKM3T8DK>!!dCnz*4pojh^UODbD}xJ zF1HPP4IAOx`{O6E9gnk|V}??2De4}Up(=9=%o{j}9+f0)+Uu=>APkkQQ2%e9S%@_CiZ4koj8qT z=#rTngh^2uNj5oDGXvC4Q)_$Qi!jTy6{L{T_H*z&e1?S{eDtwM+yS9>)_Jp~Ucrz3r$ z6V^~5&3wf4gVkZXSndY3sA%hWl~)hRb0lw>V`NZ}EyF1h^yt7`3*72#ZF8cu!?W7y z=UAwcNx6thsVgYz3_#HO>IJblrZPgZGBTDI%G-={)6$42VM#=i67c=;O!sWWhRd6K zwY#YQ0BAVehy{gETm=9Dr}D>SRkInoK?yA-jwI^2P0j#}1A=f#WxAgDw;zKz$y2h0 zOhWmWOej%uoo$KAGsfp&FeGD_Ol-QN2d80}WKM;}NhfA)?~7TkzZ_?uc;Uu^Z{Qm_ z&5gbWi7n)oav2)RhZt?W@n)H3M$U_2>$V)%DAE=;##VGyldwF!taip_RK-VI0z3>a zv|V$)=e9HIpE?vNDSTK*n-~@7bc8j=dXy zXmGhdhfOxbB&*1lzPQgdB<+B_jK<{aiCBtxUr0RDl58*oBLaPK0Bwi9HAy2D+ZdbR zBwq!@a{A$kDg}jt5o|UcjD{8^m)8%M*9yu=h!?}<^~2@$!{D%?TMH7)>-k~A+X$qD z1+g$KgaxobEriOU0c=k$5EjJ1wi97P0ennrhXUB1UtCR;kpL};<@Lcb`r=`4iL#VI zgtvS+7QsNaCzlG!q(v6j*Aqq8d`m6}tG>90B9a&YHo;MK-w9WJa6m7JveZNc@K7y; z1+YLZiL%n8KaBA>csC20u2KnA=u`Ncu=?8{I`Lj9SzpAOs#{yGeZo-M@;i*;Os`D^OchClxRcU(@Mn}|hJBZDf*9KrJsEZ(Fa<&Pt7Cl3yz zNU0-960SCjp6aS|4PA1AbW+z}cK-nC10DPvKyg1~>Nqs%AKNM+=C3V*Y@xF=uov3r z)ckN>n3wWQ@_M4>3~{hv%vVEi)a~CHWh91XB`%q)<2X6KAH8v@Jb7wl5-X`&*f6%+ zU-HHJUuJ4*A^!jq$lt8&lFx7>JYb$Hs{&dGQvqB2w%A$u2;V)fj(qR#e?haC< z4BC?4g!sSw^`64lb8D-WDQA>16I0Yq)@EeofH{l^7O~i0ZEgk$MeOBRXlJRZXd=== z00g6r7dQSS+s2-_>^OZ$;gHCPlH_#V>~E?60PwdzyW@&qsYWfR>~xuB(`fHm*~K)4K|WV4~Vs1F62cV}4hXq9=42x23K7 z+Z>HY2H~+8XPUWL_2x;Ft*&+#Cc~$HO$PY#a^?E@Q_JiB0Dq92T2zbGTxy=2eV^?p zBe6+Y7&8Jqi|_I{%&+#9g#l!3=^_T=!*b*c~sogO5`Oi;bkjl)axPY7!15I`L{Zl9HZe z<;w6hbD<2X#Y*>El2m0R0Lz#$wyk#)q2v56bm3CPRo5Rb){)&xp$-(S^DV<#$KBUP z(EK7a&nuUXL+s^3NlPqzLKzi=khPj9vj);OxMA-uEAP4;88uwtFpz)kdQBQafr7 z9mDuNQ&v~euvqIMrDgSXC&-ZOzXHR`&~-Zb@a5^=&9w) z5UeVI^?+Qe`>kM9>6ilB+zeuIelf$VIE74A{0wl~x_JPOT1%;fZV6I4moLC+dl1If zcu%y_aT;H-)H>8ixn5c-g+((chRo3&LNb8f?yZ|(PL^xw_;j2?mbcj+87t4qNvb1r znh5kGD;92o16tePL9QC;ZCgCVypq;bO+DSrrJL_m5?Q?W`3!Wv%2RPljz3EDJUu6w ztkI(ztFjZ-n*RXAx6s?=jEHEm*GW%V8mqMCow<$^l;r!z;CIs2zB}4_Xt*b{d^WDK zib-OcDPikixmiOpJY`fLd0XGqX6^3`lD1bzYsKD5YK4(uhN`kEb0n}q2p}GU7ERR< z-K=yrx!)Y^Umm03-03HZSn9!r=^&ORkCYjDt&>LdC(X{b#JEQf0OG-1HvKdtb*U6iLMCkJ*w|Q#~jT z%x}jUB2%y4R9HNHz#qZI3nw@^mSF7eZ8rks*oeaP9S+H>K!l2%XDVS25i^O zZ}#~Z$E)^Bh0sp(aOtZ>MI1`f$jc&-8NK3qcNzN;&~t8a&5kD|l}W`&nu~}iR}j$0 z*HGT~H1w3Uol6bxe>cSVcO9l=siosGD2)Z+E|M}`n&lSP$N<}YjrYa!OqyvGYj~-e z0XvHBD@z-FooXc^I$Kr&da{jIDJ*)H{$(6FFaC)!bUfzCK z&CAdhXE9Y)%R5f;Pd2&p5A!c(^KpHM^NPGhLP#NL5X+aSxEBrQ2ZpuYhIRoFgXgl6 zRFF5Zzg4fUGNgvGYQ`+3-b=Ayb9&=7*+|iVnN+NS*=%0yecSgP#x^*0=6vzIZ68X6 zEN-?I@xQP3#U2qTj%TK-_))&-l80RXOo{%^i8pWr(?9vQ*u z+JdfmnUNzPT&|N{3FU#Vx{X*LPh5^M4MkEdWT5{5h(Z!A^^-5U-}rz$Y%tXAEYdGH zS?W~ejrxasF#IjGzPlZ8C?nz=ABt0>x>Q2Jb3H#=Hk%P`z_C6rfn8{%m#}YHUXjZ^ zW94&9Y1x%?I6^GBtZoB0ODeU&UCoAUt>b+>4b+%X z=^W??;dO6VkjAYXYY<}3n#{$C4A&(FZ^f#Ce&e#HhDD}DYo=?RR>xDlvF98rzKZl! zk;PjjMHDK6ngv%v1HV};qW9)EyYA)#(;blGMjkApv6dj@Ej(23m`kGOeTPnF3JJEy z#yaujMstE_*mM!7wz!UP+v$Nt#c3+zjgoXc(`dk8OK3^`4j&y*m7LOz19E-Qpu&wq z6;f;ud`Xu0dT`vpa@-B^tEwWbwv;QE-#DuD@I>U2SbwPFL33sxV=})#Fyk0D-5O3Q zD@ckMOr!490o-77&zSUSfabvSYEC*7OdEX#XE+n>iG>ZmBHhLrC=M1SmkowG8xL$O zECZq;ZHR@w35XGFD+)yIhQr}ug$N7bu`n%%z%C&0uuBXX7^7wz;aI4wLk`Ch%5l3D zJhfECn5oT*((sy;QtFw9fsEEw(>3~Ttr-S8VY2%EShQBeh8m1RAjR1~*b*<_63c^t zJ86ZKcfnwRD(|i(m)8a53tq;<(-O<;h3KLgaE6#D7sQo!*ArzVL05fnKre{_Y)>z) z5orts@ik5L#K5*EmlD}T0JbNW6U&JKd_$1Z7yvfJvf%-25DQ`~w1|Ox5DVeJwg?5V zibz0P69U+f7sT+27z<(*Gp#Ko)eoY^g^rio1_Ib;RgoDDm@u)#$&DlCUOoQ+dF@2- zQWdBbGG<8w78WNrkFJ~F7WiKes#%(@qBv(XdC`;r=oO=Uth46mKT4zr$AK^RFDGR*RtOIx9x@O^FvKn957Q<80!M8$l~$;0GKr%_Ng1+OOcyw zb0l251;c%X;xp5v^u{$xb^@*`>QxC|lWS(u%KF@m?b_Jc;WS)N?QrpWr+I6sp6L{h zN#&^gLp8Lr?QIv(V@HK>UO7#}>o|;o=BAZ-GYMu4(jq$qU^1I1vij+Lx1~cFG}AK0 z%R?g}wTLIV4d7gDj&CP7)6ylcl9`&SimB8>(&qtN?i7hU65Ia(?cZ!`(>!p~JmzIJ zC#qEnR38d=wYJ3yinytwA_mne7&u2QZNRVp)(5EqLn6aSqj?U5O>FmnLNLb z{{XRabT9G$0JK#abSIOjOLT){ZChX1#l_+^q347`U|1PcXC7qpVe0=mu0$(gOT-z$uBvdq(?C`V~~?lSxb^~a~|e9b#H${m-6V>h zEXF5tqDCieHXZM81I{w5YUE1kS|~!ZISK*3Q{W#OV6IQ2Ik;Z%Bf~vb`J>+)suLXbaTaa>s1-e48yKJP~>4v+Y?RIhe29}zqiPp_kD$5L6vpIHH-Q;dsI~!=B zn6>`^t~+i4#CUxwQpH;jCZQ9T9Aa~xQ1)xfn42e5V@2vdnjTkxjvY%M6Q`O97mfY0 zI4SJma*k@|vukTu?Q(Ms4URi6Y3a=kDXFgtw6y{?6!AsM=Cau=gQ=B38nDW2!=~Wg zV!e(|w1ROyGsF0UR7JxI(9I@UV|sCSmoOwmQGXXx4bQx8dTdF;(}Tl7BvVmw1e8vz z_KCA0Su_q@ue{o|$-T2!b{KvK!+0;V=}%R}s&mw^YKbCYoX22Pqb>TZ*B1i)C$;b? z{idbi>BNbZXQ`Q%b59x-2sIC%H-C3tuNrDuHva(RM^Cd?+J9`RxP&1jqG7_;M&-x= z`{JNw1Y4wPY)+a3j&f<~YB;i(CZ0MfR}#X8P!c^&xp{_}m=kY8J{Rl#q~V-)u+>*V zDB-lxa_OidD%sn)ZAVT206~g;c3uy}Xz72$d5YYXnDV9O2vmR>HPuSxW0u}MF`T8` zlPA8+-UU&_KHUvvIzW<9#P3TSU|Xn*uv_Z@`9KE0sMjb4{{SotiE()Spr9}YgmG!E z^%KPlDU+#fn?M1!ZGiWed`03DQW;Smo)`&MflhY!j#YaBn_;fD+tU@eY^o-9qoowk zvwOzwd1q}$i<^UO#+b?Fl1x7Z8SAMd4OvelPf;p5G*TgU*Qc$UOvD@Ae0J}LG?GXJ zGR9H$AQam+yZVb9YVn%%dE=uc+A#Ul3uRk?4Tr8#@Bm{aX{C;LkeYY}{{YH)27gUA z`uN52wQQtcg{k3#kX>Xp$}%1FxxbaarZY`SMP@L_Ix>=9-tnOI^MOj$6jcbR%go7` zTWv<)99n`%QWQ#}Q)2_ZxY8<^TQ0j-o?V!ht%3fIH zxFMG67!3y7dJB4Dr?YU^Rm`gbG_4rtU4gQwBIT|4eA~u4RJm-WZ1itpy{+Mp-Wr-1 zVXKJ>q_CW!`fNc_xxL%}04)XWjGF3>9C%#3V~JGOMk*>tDkw7Z1Zr7CXF2L!8+Gbu z*HLU0tDcXHM38Wj)b%QPm3*?Mw6sbBu|DeNahX)xP&;C`v_8#8Tf}M7Boy_vEM=!r zDJ~;by8i&DdmfvAs@FKxT~PaHLH__qsQ7`dsNydReU@m3gq1+s4Z+TOeCd1YPM)^Z zbnXq}U3=RcpRs%gh;Vo%jeGj@hCXB+FC88(b}l<+x8;r4-4F#DiH|VMWRT4eP z80O25+0%z5Xun-g6-69_D&|p`5HZR!^&EBZ6n>V}99FI1kj$mw86Uvd;&EhA(;i%I ze{wNtIAujz=S+b-md2Dk0Ok!e!!LDFi(EDXMNAZqvTku{oH-W4o>^TX!wf3lW=9o) zX`zlNlPqNG>x_^sj)RCq^F!3fq~6%Y0{GVx`%JP%q(d*R376LrMZNXG6?et9B!~#@ z-vk2qDnTP(Dwg;R87QYJPc6Qf&B-FvTLG5{3t){KBNcE|j>irK@fK24Lo!YE~3^~BY8*AZq|qj?>IqKwSPu*WMOw^UN`+In>^lobqP zf~|-V$jk2w9e1z|x9f>*F2L+DCGU(sXn37fB^F*9t0i2HB8X-d&#%4d+k5Malw4IR zI8WOMEKnT5REyZ|FRhOM00J;_LqvG*8>HZTJ*q040^Kns?VYA(m69n6!S*BxWsSnGOhBH)Gz+qUf9Os{8G2ty6GN9g0F)`A}p{$)IfAP#z^;v z@e&2b*c>!mcZpC(_P!M~^vcc>immfJEt!xs#k`dOM@rfqce!}Wf#!<+O>ciUijXrt)qj1JkUqYfX8lLeKPI7zI^z^ z+KO$JW-RrqKm9qQl4p8hEJ+(Y37eLC>7{|Sy)TXiNMVAALrw-dbK;>Z}`K*gL~}FTV|=^al`xp#}7o?9$JAEMa*u<4y6WbdfNgO5zMS2 zlx7wnjYhj4hKK2kfFwffY&~&_#&`@98LOy_uvU~eH1cIKA9!ebb6jqIw!%!NbM>5V zrk{w-A)t;&r62bYglzeABHCE`HTAcZ@RF zsoSU#exkz?<2+xD@Qx&$N;W8!5G({w7cv@!7Drd^GBIrp_d9EgzRdC76tt68BP~5G zI6~CX<#LR`h8O%wa)!u3_ihU8A++>Fe;PvBQ96c)F2I~)aQ-QjYPGENetIy2M_EZK#E?V-8t+w#v9QqddZXJm7Oo z(!n6e3za?Y6n^#oc*a>&s*yW1AbDq0NFuwg?|bGNe?OO|4O0w{R~r~ZAw^~?MTbb- z{0i;2>syCR@KL%*!!sMjlw2_bPlljr=rCw2!DX^&zUlX@Pn-4^BOJ}N%B_d1RhEJ( zXz1gV!_ym^D_rYx;dLL=9FGvCjw#w_siP*@l>?CG)){)X@2S^Ay~aAY;ab>ZT>P?B zg?!(cKOuhjuADe$4N(kr5;VD&JZiaA+yH)B@4tO9P|r{9Voc*GcwJq5e85C-sSI7M zpkl)R01lIls3N7M3kTY%Y9j;!@ z^XJQCEEhn)r^nY#kBm@>qWcP#kV>s0tB^JwSGU0BIHyI<5;973RLb8izf4~X+XRk} zht;IDO`armQbH(Wpd(9b*xU5PYU;&3LZd->Bhx-_bb<&YO@2Qgjwo>Bo?sR787!c! zhB}IRT6xO5u18cVuYEuy+`|hX3hF(=jw0p_~T}A7G-1ADsO#q{Po2O+96JcMUCG(9NgQh zgX1l~TxlG(^e@5DaNaP@QAJx<8%$~9=JO&$oj|@&-9Q_iZ)0nY*BI*fL5GR)*|@zO zdce;oEg-F8CFP@Pif?Ndu>3@VR{inCa7wtBh15c6vsBcTfM@Ddj@qypO9tQ4*YGju zALCpyKWONf?gwiP@uGVic6L#l3t^wOB9E@vCr^AjF31T1+Y?p> z_#Y*6Uig`e3=9z2y)g=eGD66v#P`Fh6S=`KEeB>C+%?ei74B`WY-UW8Ln~fe*jyht z>e|dT#zj>OWnFAl$+&LV-yTnsnN z>4{;lhhRqzMX@X4Uj?8cg^6XuWxxYrVeN%%7JwEU3*vcjvf*+9Dc=W*S3|zrU_f64 ziYAf5uH^T?+M&_4LscWFJ;pVotGey3G2@4jfNn-F)5LNHCc_+aNwcmFRYj($QF{xF z3MbCw?r~Au?<~7{#i#|bHAuB4*bX9O$WwgSq?8poGjh$3oOBKYixme6dav0=1(KB@ zc&*zrsrW+V21yAdY%pZuQ7c`EBgQXScEnkM7@l%tP>;aiBuW)jDDW`+(c=Kuu)~5z z;|hwgPNGQLC+-6l?=WmF|HN@#^XeW$I_iPmA%cj52arO1b4qVB~tVe0Uy`!Xq zi*X9diN41WfQoiTW^oa1BUAiKlyzIqJA*t`91U8Au6i>xaJgErq1rYYgblk9pe=E= zvEjTwh$Ssc)GVzWkc`nX#IM#iz0RK%sk zbH_70jIqkB)`fDBlFe{SW-M3>X|HSnxX9+Lh9|0$RFP-r8?I7smfo7}ZT$u*@w(cc zCju=A$`<_%A#3T{`Y+ILj$EIp;*5URv8Jrm;}sE+VAS)Yvq?MUw_Six4aS3gtbbg% zs=m+6ST7VVE;3wQZMKKwj5nvK5(#T66&}S^0|Gnh1+V(zy!>{N3&9lJ%!10pe~Gr3^Ij)kHG61$4X4CTTj$4RLBvlI(Py);{#-&Y%=Z*YGduYm1wn#5I2`eWlECR*`zL=#` zNNn#sUgg+lbD;Dcv9rP`D>%2=VyRIIGG<9FVAt+^-xYna5m8l1NQnVh-B{&0iQHKI zKW81VZ=VvO2khl3?NcO(N~i$1Ev9T*ifJdO%My|z7m%^Nu6^u1RM1pS6wty{foHI= zzorSpma=(TI7+B~oVL)5jWO42vw9^ydt_-*O0Q-go;xlP!#>08ojp=hEl8TF9$_Pe zQrn^dd!EGaZT|p^7#t6VvvI1LmyQ`)mdOepw325zBU>HyyMN=3i;c@wNy3|iNmm=t z#b{%mHYF~nHfGZ1>!r8cUkdazwqbFIR+dVhP^FQhD2!H1+V?D@&bRn^}>e0d+Y+;5C<+2x|1I;EqS zx7nr+h(iIeVXz0W1nIcJbga)Kq;R}OzNl7HR&iRKv2g%p&jAczyA0Zx8Pyy>$-~!%s>LEK%2kTxC9d1E5pR5r zyDyAYhl^FxQ`E&3O`@t?lL-_!YY+8z0^4Ji%GgGhj>enXZ}DGlI}{RCDjm&*_DX8wp|GUt*G-JA4e5k zI!cvh3YMxWi2a4Gr!t%S-9GKMH^)y$HC=BIh8cKd)A3b`T8Zir%E(&M0;1V%rL|Ih z+gOasZW8XtzKptGYdC~8utQuHMWQPZB{I5XW0kF??ffmd7v98l@TU`#*$0z{#Gz!X zVI+{bip)@T6fKwCz3ruseNH&`dOEt~ru!Upb2#NnZNHXQo$(2qh;T~f zX`z~ux}Ex@U{^DSR@1k2I(8%HlAB$JpuWa&O3n)vOw_eALz$2nHE5LOdlpb`TU|6h zw%;97dr3mPs3hW?My5GYWu4Ko1(>mB3NoDwHSMurG_li-;k;&A9uviBqqE0WBMb_w z0hczG>}*)yLv`O%jQTDq6)37^rb(&^0R)yP1@#$x`rKlpHZ`}iqNt^T_{4~6Dg_j) z6z@|cSy`2LVWt;o!gNP?9lr}f(a5P&6u0rwy@IQEDDl!`$sz| zbcQxPENoiZmOA$B>xvZBYZp+8#dIEY{r;G{4P5MUs;4aG4U?x!Z){6WBW{stc#0yH ziIgc@+c3Jg76o6@_q{{U=GkkiF% zhf;FqZ{hv-#JDDk?P%&DsN|biAeloCbQ@gUY4BVa)T_>+vnbI}D_cN3Tz>E47?N{l zsZfZjiY#)Q^!YmYwk*R-7;bY)5fqT2cHgk{^~MhzeUJ}`RLdhw8f(Lu)b(b{0MqmB zt-g5X`1cT%);e(~-A1_rs%2e0d;Kxg)JenQj4%-y7p1c;#fUf2PX7R|IS**++P0}; z1Q50W=Tm(*8Fc+mt~z{p@1mg;MwYonJ5#gd1umrd?TeJvanwvXxlzwhZN=~0Ul_)m z$r|c2DYvEx1nxfS_sj12Ur&ZQoKr2Meh!u;8s)W9*z54~j*gp%M6{~&M*je5g>tc1 zwq?_Bci-ubRw<+u(PX$e?7$yA$Hw25He(F(#a6OK7|+Wr&1|H3@xP37&L1R_ny9Z* z)jF8al?R}x*Rb4eip^KVR;gLrVE}AZBTMWWZo475p_w^uN&27lG@OFV;Mob(Qej@|%O53Q7 zGrLGmSqNepA-`8k9ZmJybB{*hO~v5iki)~cHB~fWWaw87Vyq6jUdH2Nk6rdogNpLnzlw2cnVw^qKvFeT zz4YlU8GKmnjU)Iiea7_=o9xlF*^HJMyI}0i{3Kw6i`o`C{XI^p?kf|G1T8u!x*%A_TXDZhL^ zaCXCkd?27~Fo1|_V}$na+SuaYmDE%MNh%nabHt^Wwq>~QVn?Ps9xGS&E*Dc!9TAc? zDqPrRwx6CnI<`rtg3z!L85*TBN0}MeX7@&?f7cwoPH(2DP0@$KDQaNjUv8e2Oi+?k zPOQ0`U{?M2BjJA7=s1LF#c9+?u(~+Sl0|Fgz4h_#fPR?3qpGe-2`4}Ib7r)WNp+DO zn<-n7;Q7;EhAu|LjPg#_dP$7)N6BpZj-si)qtEAxHJoB8s+E%~I}01# zMf~FD;=GbkN|Gb`Glkw=iRVOC-p zl-S+H#qMl$xW^w|TT#w`wFb(@+V6|JGAhdFj-6^`N^@`%J%AhRe`joV$Hb4*q;ClP zonexhCYqrPbIY3YW@5*FoV|{k@3-a8ae&oaMi|U2ieC9izJ&D+@jALk6sz`Z>rWCB zGcY#Ke%2okr)*l_91gatpER7f(AX)GHv7x%u<2bc#Ow|XemrsR_GqzDx191Kikdhc zLluDPV1bFtnYGKNw$nntE-_6swe!6}Gsn%yBypo<76#rdPt;>`j#g1{nrW%HYDkqD zBe8X`Ql~R$cRFlH(E3|D*>IKUX}JZWCq~@q?+>4!TVrUdPDr%WnVlqXeU@2dt7xN+ zOq8*Kmrm_#Y<9)ESfOqbRt3#hEZs?(!I!ZXJ9>{e?6{W;f*KPl!4%DIQq#I$r@m9$ zZTt_I!hQum2jY;`)3}JAf}?>48I3vAkxTQ<@{PpimTe*A&G( z{6cB|(iS8SmAZoi8e0xWZPZ0*#i8jEq5=l4! zIXYh+cmDuTxQE)fT=X>*bo0})X6j&*K*6n;20HG#ulljw%FoD<#OSY=Lfa3HJlER_ zt{KJFqwVP>EmRP(r88ZlW(40Vo|d^)weAkya8``6JsvYtB`r-7qwlf z4z{AUo35^8P_jt*O8kb0=i^*vDsq%0OxBPnCn*88HrC!ho-(RrMs-p(1ZLN9@$H2c z+q73_MZ{V;RvLt!I;rPU(#9e=(a-v{EN^{@{Q#O6X5nu%&;*)5Ofofs$e?9y_v$&V z<$N76VW?>NY_7=h^(j`=8|X)l-%MDkYWbu801~JcN0Fmx$9A^bpHMW@#@Ke)R;d-? zg<__e8cUf9k7Q&;6WKuKbB#fZzY*>&hXVS;9{c(^gQ#rUQSm;-_ zF7u1V-+6gj%A{@cz~Ux@QkfsIF*a%RAa;(QRYn>5V!%nVJ^?;m*nstb$aZYd*IA`{PZmJSEm^O>Fuugz2W(!cao0Ct1Mh=bxD?%TC$ALaUf%>aiN_r^`%d z)Noogc?{J^pxIVDft{E5wDa*8+J>f{B>P0sWQ~3E{jJ{KxaVqkymQgJeU>s*g;sU3 zx5)nhGBH@(-ho(U;gp7zmMNDzCTQEuyBq9J()h;vFj+)_wFh9fKLRm+3Y$|$6U~_m zX4iA`#5j~oIZBACOFMKb$O8MlynTH!(HmWjc0pLMKoisZ{Bh7zOy&h(b4MV`0kO5a z{B$_x;F?}h&mb9}DILe}`D1s6%znitc$B9w2XT8Z!|UMuuuW)e=~99@@|Tdr+^nir z$z$BDw$STg>yCeka9JqorIbw=rYozX3p03ad$8Yc80ag5nkXtDXe3RUl1%~s09B5M zP5k%qhxXc7ID}bVS)z{o*mDKWq?WdAeFwu|OmpMA6kQq|GKQy#)Wb_afnSvDQrWMR zY8K<(HaOGcyfQj!&Jza>uBDCs$kIw&%$()SO9lr}KJ1K^2Qr=REl!%Ul9!iKk(k0w ze1%Mbmf@E+meVM{y4=`z$6Z6mpst3#w}{YE%~K5Y>T@xVGJx!?8NU!+f!_AGzB=HQ zSp6Ko2KIV+s=$R7wkwA@B<0Ghd$XreUd*2L_tU;Tc8Xw`g&lNNGsO&))dX5wBPy#6GZ4*|<5D-?*zEnC;8hd-mU@YJibXT! zD+GHMB&k2?xo)erY^!|;7`QspDI?q#<|T7$k=Wl75)S%ewKq06`EJ(>U^KUEIV^U@ z$qLC&QQF~5_8i7IaEX$`Y3Xe2VWQctEE>=O4XFlXi~Z@wn5$m%mafX1p#9O@~vG2m#; zpF@ac^~TX!bT)pY>x|hIM2(Yc;^R9eQKG(ITt^1W>xGxs6=YC6zPMs7g5~wX%j<_= z2MY$v>xGxs^1*1NfDwEmFM?$C!pZA`(9%ROus|(|0emY8K=S(F^v)7>c3i4YS=d{l~D zvD?lTcJqbB4NSfyw|qWu+niBXI^c-g;NpkOwTWiHm8`ftapoDDZy1+IwQNdAH?{F) zO~xHSQDKPZBWy=yP{iL2hQ1?*Ku;3}_^mxmbm$sO*sxJxPWb1g_L-uWi7Y6Rv{Hnp z4In`FRV;No3--U~iIYiN6_r2g7=}n`QfkGC6JYkC5NDjhiMsv$ph0`)ZY4X>6cH!~ijdCmLq^*NLYObeueYcNV_? z0P%`EKAL*IF9jqh=09k;-?O&&BZBY)!kn)J@Wee zG1U!5*p*Rv_WME6(Vf1Wj9p^_Tt9jYVd82kazq~`I*_attT$V-f$tD)r^9Rt zl_TNQ{{Uu4hGN-Uc5QEBPm6pzW0LmF$uxtLQaNgYvMS{Wr(MqMNg8;{bjER$oVcTW zl6+{+5LJ6!#2F!uIORY&tf1wMM&CaJx%r%Sd;^C=MI_W}1W>~2f*1Gm0$Vc?zNCFV z7_scbQbEA!sc2dwGLY3$fpQx5CpGoj!?u{vZW&Ki1M^;O9ENh)U61S!%eFdlN|hIi zDy)SY=Bb;AOp+8)k|>S3t@x}w?Qa9u7@SUuskoEYXK0aAol|3TV{jCD>tK9e7w9Bv zNBbO=1%hU1+eD6SNy~k89qo)sDeI-FlbbN7YLl5Ixm5ra)Z4H*Y;AH*p76#{R?Vd9 zHo@?ZXE<$rbxlotoVtkFpX_k3j1S?DH*>FVhMVJ+nu3~6AngzkJ4u%-%hJF3AJ-jU z6PA*bgw;{P@HnPWtC*7^mCso=Hqa|Ca5Ud?{>|{1c%3s#Q5;f8&F(O`LB819a^iEP z&C&<#-yNiqC7_z7r|oe88Ag<->C)@x9j!H0Jsb-ZO5tP~oQ;2R?u|g}2jObL7WsoKCEB-w7W`vg>RWLA8#U zeBPLjJ!8!rrN@j5l-KQpUlr;l>k%MLG8uncdTY1N-n&_vFRasER2D0a{0H|PZ-$V4*9v$tB)H2OW zH1bnR13ZsV^k|QsOvSRd^F#=04 z9U$$c_4sxkxS(i*)FKzm91sa?pcAn^m$Amb6Q$yOCc8Hg;l_$-Lxu%Lw;e=pZ+IX4 zg|xOZja-v+Z>Vb ziNLw0oIX||j#5AII{yGsjTc4B8sTZT`_t}mfvqsT9w z#B~kz{$I-zDS8u;QYxs;J%Kh-P0#hkRjH6v5SFu>k!|rQjFA=QMyD}79r0p1Fs!cT z#^B!Cj2c5p6Q`0BlY;$B#S!p)p5x7Y#!)ZyxCp@Nvh$zx+@ZEtb4y?4YaYC^*jM^+FMXImfF z1fdWKWD>>>a6b+4hU(dwCZ0N|k~w&n+2jfk%ubP1=M4QWFV*nA zxbzumDL8yjQ9V3T!(v!+^d9Io1J}i|%<*nL1eE^(W~ZQ{j-J^=#u!LG2T!G~@x|bu zC-$ub8I?{!hb`5PYd6pSF>Ib}nWV_-Mef=IVV7a@`ePj#lIo{cIJN}0N6ajzs^-HT zG+R_yULIOW6&wU7GM6^L!}qQ>_+@M{)fnPiLc^6SF}Nd5eKjBPfYUT`EwnD$fOh`c zc*F8VJ!o`T%18rc0N8oZ;vBsQ-KCM%wpwJ36o3O1Es^{kPMFE!aAe~343lMv*bkGWRWI$9RPKXK3-hqhoWPl5(k1bpRt6TQ>ZI>EBw97}a!A!BhsBQOQE;T{-wa)b ztDQ8lsB1@VqBLuZ>Gc@%FZ!t}$0an+QBp)?g@zXamGuDSDn`1Sw$`}5H?V(#=d*J+ zv~$Lc?S^=UU2$O)s@R*KIB8-p-%K?2J_dP>K)-xck%i*1ijb1@Kq{!{znC0KOkC00)!T4y$ZWE)dfNg$%fuHpFo(zPO%4 zNR}kM@evsdo41@2ILlwa+~P|}bnkz_X zwz>IXHjwP*J-+skK^nnJ#3zSvS|nx}!5L0v@vX(h$Xs&pv~`fpHDvXC&}|&GYRp+m zjJaDPhu0{zw(sK`i*YAzCsyesb2~80%VuE4z!P$y+V?m$L{if5u4IzNu9jembzg?K z^7Hvt_%+!q=O=24n)r#WNQ)efhsBQ6mM|jKs|Dii`3j=9vt$@ z^OHP@miDsSFzht!KA799c;cs(DQV@XKwJLl$1yo)W08T&V8_=}=N@$Fc_)m0=0jpl z^!2tja9I;iqGq|OE^!K#u5i~meB}&%;?C%Px zULj3V^vomt0WbWwKAyVcYKwqyMu0SxhNUD$XsRMmpf;aeh6Vh z6w;RqESeAn`nAz_8hEhnjwR+};?gf1qK+qu@i;hEcS@9cmvB^NIwkw~I$qxm@r_qc z2edVGbhPy=_H_V~szKkW$lvAu(c2ciruJG_j;gcmEzm6GlSg1|ZQud>7$>nbw6W6) zn94^o$kI#)rig_6^J(Ze#bI$#a=nf+Zd*E)%1? zf=}7Jn^DnIh(vgz7^#mzyE%3(8GBzu{vvIl?pMyWxcB|n6c16vgG)>T#G=R*(M9rw zP&!L5S9^`JkS|wPQSd$-^DR0_BOqHVkb#F$U*f&W9WwQOF@Z%%JMdZIsi%+aJuy?x ztC*GQch_BR*y+Ql?4C`TveMG82VAnTk=*5!6L(!L({7)xFURdN@OmYNoyyH8M2b3k zN1v`RXLC(Z)NqE7+bAGhu)d!Q>5H_yAihyvLY6EQB-7Ib(yfahE>4Nn)YtLWj(E}9 z9QX2A_p#pl<5+MwYk18pjVr@b9Bm~0vtu2tlV3Qw57;T`p`ncgQmY2vL-0MuEm5M@ zR83P&GCXwZ7IK?6@aysXuZ(%WNa~CiwtXRpk$fO;hsUUoIgujRqr_)04D6&ul;(BR zFPy`__QmE0DHgc!F_lv610^&|BAq0K`hGUPm-N#3q)Rv&m#X$ZkBBN%RPYMf(c%cU zNFUurH`B**Mn$#FfaJgGr2!m%lCd3LDd4lzqPA0J%b1?4+cK}7-G%#}F9Pu>+lR)o zNRx)A`!-eo0JdXttjbPbbzPM7-%W3>JdfHac-luF4XK(#9}kv83X^tKW-pjr+~y2e zUs9{NwkId?reNPkH^d^Am6{^)$YXEw6DzAPK0~Fi+=SO&HE8KauVT5%177tzBxJ5G){}Y(D6#1 zD@{o;XtKixD1i_ML;PEvGM`OHsm!O23FBEuGB*ayyWDoc=_(;vUMXObSlvo;(%FF` z+Gu<0{V__Mtvyj`V|;*YnjJgg+iJ^8MX^IFRfk56!jM$<9)x1VkgT%I+`X8bgQPET z02&SUwkkbaO*`@?Frz8V703(*pnYwNZtW!15=l5|CtUJ^wz0V+;vXs|S4K)BNm(Q@ z0?aN&+Q0$5@zB(9O1VO`%Rx$_n#Rno& zB=SVk0ce=pC^x>1w_r_;v2WW->N&XF&BN@`vZlF%U!()Jm$=lA%NOV*^kT;9%_WYk zx)Zg=6+=HQEa)3?ZE>Dt2`G?m4yu1qfz(t;#`)aGzM5MCfYKbsOxbytCg-HtQOq-GD9*EzOZ1BWGOaxY5AlXD}>mcq)XW8~vXotK!PXv=J} zT!D<5V7yMg7?pm`p{*enxER=>Wr9QZYN1a^b_A%#6IB{BeHt|s^?Z{gb+E#bjE$TO zqs{Ygd)wCM9CckhaMW_vcx6lI@#YKh8Gt{QJBnK6Sk2MGILo0R>!3K#toC|}dSW80 zFwY#NwjI{{S3sipN@2r;(B44VE*MhK;|U&i?=`VN%yqMDZ7<<{PeNE$<9! zNYNPsAQ>JqEx65vC2UW!K5n+;W&*|B|QyCNR-CcVVn!)zL>cK9KuJFT>^xRAIsMl zYOG}VRY;|$aPuTHb9393n1u+}8Lywx!0&70T7!<()p3(F6%xH{vNChyLZhkJkcn`5 zvtPHo-yC7BF`fw;MHG^&wtjIxd2mgKeU$dK{C3iX;Ng_yMa_Ds=Vs>i$zZ8%ZVm2t z(@a&A>)GwxE>1oF0Mn|J^&+CWomZREMrYBAE?@@T`(M5=eWv0q2v+0L8d|xd`!r%X z1AwjXJd3tfJC$pIRFl|m@LH}B!MI&SUv9Bw4Lv}YF%Ogz)$uK2d)!|f7ZF;7<5g7+ zQu9y>W?FTuVKd1ODOWnTO^IhV>bdFz-M%_g(3!_H^_*qJ1vsRVC8`-1L{MFsfPTa+ zg7lB#AB!H9!T5`Cx};iOEm_2+R?jUmNAAU-&beDD)Tjrmwwhy!q2Lu%amU2-q!DMI zni_Q>gmPS_Ym2a82nV?NVyCm5PJSir95mcYzOF-3#vvR|ts`9BK`e5RSc7AyNGD;5 zPMCfVp}04+d^?RJ3Tf0-AJA-xj52P;a-KXGtqI=S*n?XEutY zSmGIdaD2YFfkHRNrZfnxy>R(`a6m1DMequN<@LhL>w@8kz5t*^TMdGdY&HO(cvvPD z0OAh|1j4`^LE&JSSObW$rAtE^pm|PWb+=)Rg}pON zX=AfU!d$Iw>@K$aM4brj;{vYshJGk#q<&~eH+GP)*yhWrB>eCB>)Wacp><}JCm)cM5^v`nzn@d=Va5qyy@QZo!U7^#gRPFTt#8Q807@FyJ2Ul)`QF5SyraxB4zBO7QLC_lGN7ARDsqMOu712?sidq@z09UD>Qtd z8Mex}^bQLoaPT#b6v~VNPNu$d?^^x71J1bDJf#R!O*%(S?7bC4(bYVKxwNtW0NbIt z>N_#`cEuhc!xo%Ktq1g2@xvnM#!3@&>OPwS3vBP67niO$usn4+U+XqKL+$`>l1#h-9{Ur>I7k_o%FzSXQi{Bu5hE zjZKIr{{UNS{;Y8%TX(8luG=2l~J zd)oG}0~s@Mi41I#jE<-WOK+$2#qs6R6sK{cLQXCgpO-o2(}pCg>Ipmc^~E|$mZ(p; zew6_c4s5ZFdbi&C`rjEzSu3#y=sSgNaUou@p)9$y@2NQ5L8YN7Ni7;wbnOQc&nGM| zzQR3@yKjwtAyk#ov_*T2-{Y=1&K<=PTA~A#&HP>d2evh8kVL`ZA;asJHopUG zWi>0=aC24;P{uTb%a{|=O@>i_Pu{reV}{Vs(NY}IN7a^2ok{nP)Y}|8N@91p1<1*l zE^KrZb@NNZMI_R?qM%fcHNIsYO~Kb~4%n_5H^VL4KA#5ImIa&B3EfdkF#vkw(>aM_ z1KJ^32M>~_I(~VGg6Nv_W4}_e+gpq6w&VCtrB@MxmMLBHxrnHAjdL)*+F*4Ra7#dD zieT|{lJUOU;i6?t9wo&1wDMEbyR@%E%_&62f4`@Zn#-Fp=^ZX?%YR#ejz5XbEOU!W zl0{0%6fwSV@~8l_c(K#*TELFj?LDB1ij&$pt`AufQ&3kqk}88v$RnFhrERQKi{#TV z*25TFXNJ`9IOgI_L&K`5s=neXh^iV$+QP(wq%h1>i{J73>l6F5Wfkn?si$eh0;`*rPdQe9(yi zQJIGJ$0Loh(%GXGTX4F>uciVispJwy=c_Y~j<@{AG$O8pjqv)AXt~@@IOUMk8Ci2( z!{#IS#n@^>k#X-3am_tIsi7H}mDRSkaY& zMrjfpgsXv~n~!?eus(JM*V7L)l`Owx8F^6iIZj&U#OX* z@yc5>FP8*8`BM(>il53fzJ3H>t#{p(2rrINXMn zWMDnt!}Y~CkR+t8fE@rg!s)x4koW1*;}Td|Vp$jqmdXL#`O_MsTB1>kii9Y!-%Qs# z+ZN)bWsjXJ^4Bj&8kh7K(4lC8O31=BTOD@;`eCYPqZ4McOfBO;ahsdENRC_R$~A7H z)@u!wwYDUYG?3>G6dg~dEsFTQ%;Fe?ZGNE07!kI_X^B%6sOc(HE}gc+w?NohSXK+W zDR+~nO-cA->~2$e#GmE(bGcA8dG#m#>W1CXKWEFs8Zq>LC znC``yOQTrNS~=((Dychzjbxs3t`VP-4Z@RhHSK^+!ZXxHY2^kd(6#;CTc@Cs0E;fn zF08tPi){}^w+gB$)OQPJzl)6yHO~>214}y`sOypP$U?B!eLLUv+ZgafVTi~h1=CJh z*D&#K-uM-1sDhN3j#_76O1|iRAI}&xq{%dRoDVAHiDUaVe5lI6^)81`!|?STt${}E z17wzDfg@bYl(Oa;ZDEYsI{Jm@+3gb!pt^#5+v|&^rkX1`laTJJ)ts@%=E=jz?=o#4|DRs{!8n?AOxYvnH~ZvG|N>%~n=fA|Rk(0L+TOXx&R} zrsH3pBvy{0U6=sZCfz};u9jVO76onT_aOl!GxsAwk305Ko}Y=;K~+%V zp{e6&PY`%PZ-Qj?!{znBDg$BP3czeIT)0_qSWpbUxLJL0OJQ3M!hz-W!prM| zW%a_ya99J&>xgB=qZvD582~2OEI=~h0dCkXC6mSr82~Md5UyqeY(qdSFyN845F+O- zdojTgE#GWYR%O1ozAUV_UGWrZnk^`{AuE{EGDckZ2M`im6TQ4+F?iH6B+HydEG?1w zt6`egx5L*ERh4*$wCNE@;7JUw?GQzXyM_y!-5pyM)7Qqh^9~=!c)WaOuu_Z50FeEi zB4L#CI>?Lwxvbjjex3EyoLh@Q#yzR6RY|F9Vva`t0JhA^kEUgVTycz zj8x4PE7Nd#X!xT}t}7|wb}|(V&DEC8n1iOj{?9z6Z$#PG$?feTaEC~18R|1+5||$# zy4>Z`=Pk#*srV6(FRSCrCl{Kf8VOuEVN~pMOXB-!Yc9gp^L$$4l~rp&IyFoTmECgX z<(DP8%M)^S&8~=bw^g;{#}$T+Q|#!a&~=haXKUZ-+xzQ?nv~TtXw;a*?6nT0#;Mt1?Nuc`UB$n5co5WGT~ zx|#A&V_+I{;xbVJCa(2puJ%fHNBGpMu>&@YYF1MRABzjy%!uk<% zbw9&%pvOG3$@Y?uD24<~sDuSVr1$gcch?(~+)6{o=i%^FNRcR0m?*Na1dCjE7vBE> zkhPvA!+F(^MM@*Qk7+a8sdqO!-x|%GIML5TBpg}j%NBT=pvjSijGa~)t+(-i;s<nR*{pjIuqQB1^9#O zj;Dvu$)s=a_^nSLOhQHr&C1rjiPtTzcQ+QsBo4H-YMDe_=0Nj;5VJ8kRTlcLp7pjT z!NmB@bz~eCNfm^~KotqNAw{jP;`e`c$1BGBYqKrIHfC|^s*WLAk$sTMm9H~Wt22U5 z&2Myk4{q3zrAhdZ4@UK2GN5Jk&}c7zhkY@|aJtSRRbEO~PQ0L9Eg=dRoVU~C z`C{csuCA6I9W0#LgzYag-P{Y3d;kgh;V%`Yl4c1$&a!?b!{rp>YIKPqA-Ul59T}G_>F#ctxa7;O;S5&wSm4}8^|{J;x+F_AZtdkNZ*R& zpO&`8dagXm*vvd>n1eJaV%mh$9dX4cPNw{B6cNNE=V_(XgWnwyS}rJ@ak92!3n;cXcr|*78=S(~ z4olw|GE7cg9H9W(#>3&MKU`Uc87id`=Xa@-GnUVC-S2`*%UWfJk=~|K<*wTWJ7Z^o zBGIs`oO2m^qC(aUe&^Hm#%~Ob>Lzq?4c&B+$i2Y7e>l9+q%pCX8fhdKL7!#q(l*-@ zM$!2`uf${$7|$;zZTiK=CPlH%aVicW#5jy{$5%8o@i82@h`gJFt@7o&DItMxyVG-y z!)4zZD7XM z%mT1CvCO*aZ*jNLoRd83i+e<7drd_Ym1@6m(Y8|_WkbzUGL?;m#+X}IMy)U=#8 ziK|Ub3_;PUmzg5ArPtonG0c4~H0&sQL&EE6L{dyqiatS85NPsV#ZjYWQy$H4H`Bf| z+ll7RA)Qetx;$WwR4`$iKnKWtvCk>VI}(nJ*`g1X;w}P_bq#z3#F96@QQ9I?vivXb z#i?p1b!b*X6MJU1Vm7$+x%}}+IW=6piuBv{#&KmMJ3Z<`nF_7?TPPm`jVgHD=4O#e zJ;PWXG$Ysg;9Q8Os4=um% zV>V*jhS#f48eoh;FGWcwHB~4OWDC+VujX(`qLQBdIpnryHqZ|^4-Ak+Q<%0;R?K(P z8h>hqix*JF*;Ji}uhRsrIzxKV8fsQ0rIIdCPMo&)o6g@1N=fOMedJl4Mu2y}=x`_E ztu%Qu761?~b;V+n5(=`6pf!#qMYn88Ut>*H6|%%$*>aHhg0mGl2DjMhY&6P31(iy+ z;NN^%JVrGn#R6u%$+oz^=zq{SrF?-I0=JU8{#d!gp(5&9%x$IYPMCtu@<1JuG8wO# zQ!cvq+Y){vDTpsmaKhPv)Q;y8?W#h1(V;CQ(nFdU%e#~JQT~TqQEneo6-vC&yh?S^ zdP(#*!6D+b%!LedDA{_!$~<DG^davWZt~uF^2Co`4ej-f2T+%oDIc?Y=0*cz(#R8gZsBT8cPNEoa1#tn{d*v5;z z5RxNuSV~pF+TKPv>PO~GOP4~%>QoK;d%&ftH&IV=IZzCGCRczcSM=O+W{_-)o z`5&H`*rVbtE=qcuc%_aP9L5IfO}|WYlyjLv(@Q0zAm%NuTmJya#oiY*(NwfDg(&vQ zos2Sbi|B0_OK4wBZHsUSpB4dYX6+G%0y;C#Iy!e#<^;&f#Xbk(hwLvw!G<8m2M zqk4Abg89y>Etn6e)8&kKIE&52o;jyVkk`mci-x|(zL-h2sGmlCcQ5UdnnencfCEO^ zfVWNj>TUJHq>9pq&0xpzHlH6{6O4pPk&v%8LdTx_gi%wpjD#-AcP92a{B^@eP>V+MJCsXXGr82;zPjLiMxvIYq&&d^P!u#^ z^lACvoS3BHvMh#1g|z@!n}K^99kj%*kuoq1Om2+QNa_neNEwP)48H(#cJZ;cEYs90 z*{R~TVXBwSZNCZi*XP?5>2lS7+Y700b!~fC9nZ`2#hN5%l~9#HwpKQ={p*eFXR!YO z)4nUkYAPwv)+gEHiBvkmp)xUJWP3!4lu2bT*jE^-#z;3g6=DpopRK)xFUWh!;VC6+j1X=QYdH5X=fupc~7hQMlT zDQM#oRaC_S6JXLfP=2`M{iOEjQnOQVu#Rp20O>alqf#s^eLMPNgRkNoM~P3*tEhP! zwc6J717I<6g_%n#T^{0wITc-4G7)tk+#E@)MX}>N7upUb!KHSl7e}^e+~!99haQ9M z_qEjgT0T{2N?On1IwO1u@9Bi%(BqLaq{DROvv21TBG_z6pgl0*t%>1a3Mz3L`d%4C z^_8;-U_t?M3EyqCz<6gI;e1f#p|65xwfSM}wY})pzPgfaYYc8J#+>ox;v$`Rdqo?n1Xj-Xy7d58E}Cg?hA{Z0WS`=)%{;Yosmfeb zNDI1+R57{OTYKV#R}*^(k`xj-=^+6+>;NCj91d;E?H0wwtDT%QF}l-g5+iaKTaZ03 zV)#=GC;fQpG~Stye_Q<4p{Y1>crEHkK%h z%a-x~01lq_<*>(T9bJ3yw5EVGe6g1)Jx$!Pxb^RRW0lG)>@|!lqm=&u1gYU1Y8Q8f z7 zrEXs`otngj?hfN!jxml&zQ-l4n_k7yQqxOWRaZScuVsi>-pi?d5Aj$JudXT7arvjK zs;aL@Tt?qzKn7gRkSikj3K_LJYw9r4)6!A!!CZ$mOpK2N5;4r_)Cpn!qC9r>TxB%x zS;X3#hC>{%Q{-_X3ukQkoc!62mf2Kx#_^NmvY``Kg3vuRbnJ#U5@lpW*qqnU+TH$F z*Bwg;_;(7Ptyv9C!XrL_oWrMmw7pn@sN=x zR#k1rg2SbIY_`5MD^i}Hfz)zYYRS|iT5z)_PGKm*+iGsa>)Xh-I3H_0qLYc$a?+%=GNxFC_ul8%Y z#KJTprSyhIx80!8a{B1sQP>Q5Wd{$FiE+3o$}`2Ba{`;$cRKbP>xUMcx9C}A=^b~m zJOZMgmTog#TAG4rzT_KorRoGSgQc?#_4je7Eet$92TGnCtsKE!mRzNY9kZWw5LjvF z#x&;Q(?IgwP*j8*xZ;x_iEb^SBn`soW|` z8!o!o8xwDiG-+n3sEP`7dX7c&K^X$<_dSN!+w|WA;*^r`>Vz|xuF>eRlE7O+zY%Rf z#9J?kn6;6?B|b&#Mqpii(sx;_}kt5{^B4R=6a5A=r+cmV? z8<)gnRdveB2)*^kQHjd&XhO1adZ_q%PN+mrQ%2cRGn5s12fB49_D(r^-)iTE8Y-&g zs5JqeGf%@LM^0v}5>;VvYysB9Yq2C_(<Lo^}QijiSxAXqkXsW6lwJkhljFu%5>|Wqsx1iIuxY8-nNjd;A^YBpCn&ueXp(kr3p-l3$+ z3KTJ4d9x~v!skWS-SG+D z(HCUuWq5}w%&ITzfpeuXT)uT(7U$i>s^iHh%^NMow>JmjhKy2xM47{1MpK~vxND-9 zR$HckRFfo(Muc0wFUL_FROjsK;r{>?``h+$Qa7S$PORt!hL*$Ca>^);GLUb4`~16O zC%3XH*?t<+B!Q)~8-`Z4zh3_UJYTG-5XR9AWVFlJ`cvjyifu z^@1W@Bb9*aM^SRVMgE(2#yJvB(k5CfaQeToM3V;P#jjfu!0BW9j5ieah9`3b&{Nb? zmAHJQA9qjTHaAoB@q^YuTT>s~cy$6@4qv-a!595s*8c$83a)~^q_WGX~8qxEV01!$5%7FXZ?exW$qnbHI z#-wK&ST?%b9VVJA$IVscKIHWRe>`hbw2+lia1`Fza}uXw1~TI{GcItKWfyCA#o8GR z(#0DvRs&n?K)#3Rj3%s>M!6)EOEn}?nH95GCZ$gPmL9&i&!K_&t12m08Wty8`uE2F z02$%RXk)FWb4@a;seWaHh6i(hd--3+xI8v_YHAD2U7d9-8>smgKhFdmtpa*9INT2E zl`=%A?O^f;(Y{~3uo@{O07njDNd)Y1q9%@DjO@=AR{OJ;r>EZ6Pv6$34?|BTh%ye$ zM!&K8;&1Jt{syh*Qz%0XlReAc$Laj=dO0LzV@$5k80kvL+>Xi2rKbhCYbJQ_&WIW0j!5Q`NP%`$YXWls1@B|>IIBk@%O5G)HAYKV{vMsj(*?KpAz!ih zWUeccQ!|4h3|S4x8-D&6`h$Wj(Qv4~(KE{IGiG$kewRPLu0C$15mHA3!Vt`tT-LbF zn74iR?~hpaKifH~>z9U9hndO@lJuxm00VLHzBj`(-4z)gnTX_D>^_*KKM|#+Qq#>G zN)3s23I+h4(D0TmlD-$pY}s5JZLh;nFSfYqr|5i=G`U`wny68xF(>xJgGULGYPrM^ z1aU5AYm5B8cE=~hJ+|W2A%zri(8Jid%_9#x5I%tl|Oiu+eT z65w@IRD8NR`O}uOO2;Atqc(t>+V<1NF_c<2hD7@?c-IyG0O}uTYAex$QP78`qV5^L z`6TtZ8AqVUE9~`UXBpv@6TL=C>UzFqG^0*aue)Jwv>@tqCmk;f_Ir%IJT%nx{?8^= zR9M;O2lE3LslAH!flxtDRqXPr3kc)p*nEaQYcG%G&m^*O-Ku{SdziC$(SnaHQ@_of zj|2963|axmO+#-EV|#`X#hI=y8v*q zd=Y5FegRQ05J?;SIL4sn5ZA(iv?HV!W8mxSrYJYE{7J7YQP8x6TIRl<%i`U5&f~mD zMDx-^R~+%FmR5OX zB$j(-A3XpV$cKfa%MH%HnU351 z@wp{bd^%zFg-^7&(MuL)_zV7awwUMQs*;|NQ6k9|NSv9Z&6_R#-LG~%fZJ1zS{gcf zepOV$PFZkTNg~Yh6WrSN0C>JRawjHj80f1}TU?cE5kVTU_XxMB)ARcI#jXj%SBP9>dM6#lq;D661o^h?!_=Kk_SY(vYN@NJ zaxg_bbZplR)F7oTWtpS2O2b8=&w>*Sy)fYNftFmFLKJup}qcldSk2hK3ZBH z8nRYN8JbzSkswUtGLoot^|9ad#|KeOQCC=pDR-J;xe>Kn>#y&&3CDQtO+VS_;yk#b zQ5pf#R11%;=NU>(H5m5Hrz$V|b5~DM#b!B#l?!gP&=av6?WQ@78N{n;S3FZSG;%tY zlWVZd2g_54Q*lEDPclG~^w?{BzAfASab0+Hl{s0VYupIXUiR=j`NpwY*sk`^MK$#G zlS>6q<}{kT`Z{K{$+1v19qr@iQW$tI3=`JD71@=PGQLLI!!OTM=WIEqsgs4o9N4U4 z(FW>0BKlunUl_&W6-D?&FxkuBEx=P{_fM~HmCihv!AfqK&fnZxtm5(4N+x3|ffFus zW-I~h4ffX*rJf;7Vvb23Ne~FkjbNA6hMo4;PWTTGqN$oR<+(*bOA?nF`TX!nsp6Ji zP;PAE<&rkCr(u}wj;JWb()1Tb1w|l`GO8AI_kivDz976Q11WG6f&m$|K29ykQ57kA zbO6evi<6)@%BrX?#o5~TzK0!=a%HJ7{{Ul|W?+i`^^+(UKDvCd6rwWKS)yZacr#*r zDoL~Ra=DF8rF8&zzMe6!JdsCJBxt$m{p7Q;PTxjMM zfm23z%WwcWeNSyMI){#hW}^`x5-2xR_iulhI%$q}N2s1fR7)1nSllru8lKMQqp4}7 zXrQsp%$Qt{Bx&E>7T3poOGc_yptN+ARcSHkLptr?<`q7J7x=45Ny`E*#z1ylZ; zZ?Eq7R#uTigv7AbuPZMyZiO;~X!RHQ{{Splt>P%PCMHKRFHTYJ_}3Z2xoPShlPflB zfa2reeE$G!0y$#N%`3Z9IX4#2dfyJcnMvsTLkkW~@Yw4zC|7WLJ|@$Bx)hych{U1P zT@->FD-NN1`NyB}N~7$Ywcp`A#%wZ}_a?S(Z3TX4$y zT7f*RmH;AV6AO*4wuD~$Yug-8w){?_k>}x*$xr?s>?E2QY3#Xy7X;?FW!m2G^N4a$ z*__^vXNXqt4{W%E)io70JSMQlkkNso*?9qK2)x z{Ii)EoOP)8N!O=Ko%@Y2I5?eE2O4_1J|QSsK+e(wnA>7brsJgOab~(F<1NGLDXIR* zk`YZahRhkXyPx5@*pPJ4wlVsOU)d|w9F=s)vXGSXLKtQdvDpr*+r_XL=U=l(`AZDe z%;wg;^!%~daVlCVy`847Q54dwts63bcGw)djYR89B@=q%_&8)1=DSB z+X=cYG-pdNdpS@WOAgq2nn#3*N=T^SJXyCO`j4L2lBztSJew)Mjj=IFB)mNyCFY{L zGbmoWSwYu(exE#5(V}3Ima3yHXrlQUg7>$4X+&R!&{jZWk!0qoOBB&4V4+RyNzAvt zz-_tH7kGOWjYy+d-9iO)TV)y!qhWT?Yp&aGa`BqUB$lg)uyIo(1Zf5S@ku(fZH!^z1n6!qF;=3it5HC>H5r;mW&mY2)M^iGS%Q){rKn|zgC&BC>AvLr zu_Sou;%A0_Xv|9zH7C~p01Q}Kj#?FwvcOJkilXn|&NGv3vo_mcDrHNO;Tez%ec@Xh zZH$dj<~IP1#x2drc~N1JNIgtS8(-ix7-uod9DvM`_X;B*A3$+YREk;>{lp9Hf$<0?cexTetW1!*fYlT#`VzeJYe0uY1^) zT-dmf)3X6FT&i?eHY4)3xQK>08bch5PCxs6!b!0BTUMmrYLRDHIpsTh$wsw{{W^mOoT*|#VS6lpE8W&!M4Xwjxdc^EUr?@*0u1X zlr*`v&3!z0$6p&Si#A%WN@ZDMe22DHw%B@l)XyyQB!&9{puQJ9St`G0I>Hsb9P&c~lW z5~j~nP|}>kBQw~I2|o_@{@AM2tpdHJkdO8qbnV*#sHmK9vM5qUbOyw4u9qXdueQI- z8T=!NH4J8%>oSDHQ8h!{yEwt42;1Y(gGb*-%;ZAm-{nEJQ^iA~$5sd*yqt z&uktJASJ1iIcbo#ewQ}~{{U-#Sc#q~2}T6SGzFjD*8Ahp!Jau&X&JRZDx-SoSzJca zC>ND4m51;2z+$AJ2a_z)hPIOE0QAe>>x}|KE5^~JQ8koE0J^u<=NZ*BZ_ecB%_A;g z3Y(wpj+lIOCcp@wrItu%j7VGEAlO^Y@nAGi)8<5HvuuXP;(XvDnxzq0qzPft7UZ|X z7bu=UWV&?`yYKQoaZ)6$1!OHH+7O^_f36*412V*@rq}6^kLR`vJsZf2Qw)iAHpoG~ z-wZo&^G^yqHL=MP4#O>v!};OdeFZYB5b@l%x@-;b%8b_`U4rkFX24!RlQX1u15yp` zf~?gtNGbxVn{?Re@)yRN5jUpFGiSHYTp3x)UEag7d?BgodwdIA2&d@7kJUNmf( zUM&t&U`70P#HkGx(yXI`Cd#CH%(~+KcZ)MgK2 zRSHvDm0Sy1Q$k0K%o)G(IP|^_B&6UxR#c5{9t^1}1|IRgpVuB?#%X7cvZ_~#MunKM zb89nc-{NuS`7ue_Ix)Q@a}{OE0@o>h2>kFTrejKyiv(uNm%cP=;vBeCWpcv#LH7w` zzk{dgisVf^(9^g;BX1vEVvfkI9*nSr_8-~zWhNv^3)@Q$qJLXp3|5+sjpq!qOCl{Y z8w|wTC<5b7*VE26Dd0r*PlHELt(`9FpbWyyZK3r3Smo+nYZazic-EjXRR^Wx16;=1 z+e_kd?naoG+G(uQnfW=n(=&gUEwU<=7iMJy6$O}RP4okObt`yfQpW{FRa|a}+|~}+ z80EPZO-I*n$eV#f3rtxidYKpiC6`f^KsRfh0M^6T>vpuqQJ$bmYAN0$CnOu0%Ilg& z14RVbDAMP-ClHmDEok7lm0NKJnpPwvjB=aoFWbI0C?uPO(ald!3~VNfG&Z?x#`&$< z`hkdW`betelCknd3_uk{&>QG4e%s@vrIBOd<{nfv6^Rnmav?VB4bU_n?fSl&VN|Zy zLXnX4wA58gPr;U7wMjW^wyr@w^~vfY`Mi6#+>CT_y$VphL&Fp_l(7>6In|e`ORzfi z5`H}-`_>s;GMbi>jriVJZCZ0#t!8pfm2baS;@hNOQ;c+|tKwAw{?Q*NI`c_jNF?P^ z^j!t}d@)jdV`R2$%~p8a%~elG@kC?hBz8SU+mYm+-njF*cpSARSFGX`NjYM9Z6iA` zb9}16e9oI`j)Ib_{7;Hh&>G1jrk*^qIO!w?R?082(Z0BPxxUEcQ`7R3CTk0;x`HpS z!_?!JDoW(LWVLINlfu1^RF|JyEOJu-3i2O)Y(otgTGs8U8{?!(3O*U_1vsXF#^W%# ze8jcQ@2`XK+ZCxKrfE`fGl{GlHzaooeeU`Lr~`joUZ09VLU~CGrAtSB9Y|jQpXZKD z-cD5bEx-PZT=?2K?`b`xsE(#sRuHhg!mWTgZRw0Z@kMfpPaCFdD@XhBHsp?>*sd+@y==z(;gq0g~k2vbZ1fkZ<%^2s0g|b07j1=lI$02j@ zYZ5Jr^3}ma&r+ETk};8%<3W7}pS^L<*YOGJiy@FQsp%>${qa;Y)J%D$y1bli3?A8B zeU~_lpW->@j*b{rebX8cU-Pyr@akoiUh(rEb8t>k=LCkN(>_e(0if4>8O)}8#Gwms zkP8o|?_6%JDn&P{FHvQQ^^BGTGNrA1dVfuDN=nMED^`w_un+-PE?22V%N>2*oiFjk zpesWLcZx#np@T?$;ptQ!S)A9W*+e8TfL< zvOAEuO@+w){V*cl&UL16RHegTTxnA$G{_`5-9^Dr7ZsKa^Sn9Ln4hLCRKRHx6>)3F zm?x2obVFJ`)h5FIu~<|_B{B0y`+JO9#y_+ak1Y$bGy9B|jWa(`w@B`NF}a_kjsF0s z)e!U23hFg5EKMTS#LOmz!m(Vs0qO5r?7J4eJZtajX(peY&Q%K1$(JqIk)_BN)c&Mg z3*)f%zld=cqN(9rRP;3p|FJNmdGp8W}9o3y>tZ z7uf#%W0O0!VD{K4l}P6`tQT{&@tkFnH!Ya5*o{V>F=n90$p+jc=~HX{ zeQ};7TuphMYv@d{a!ku9TLG1oHyT>j3{Kw+pk){gbS0KmGKQ4^8r&T=wed=j1*uk9 zfFoNI`Fi}Zr6lZ(6vWQ%p@xK8_AutaysJ^$qZASRdsTNSd@|9r0wEg(Sqs3#ZNYR!!qzTGqLt^CITFi=G&MCMs;JacmWm~mlHh1fte}nkFsmMD@})^C=Td*u z^TWqc%i%R>f_WvFfX=O@y1n7w_w&;nc=lWsc0UP=nG%QhLmR2m;En$PTxeAwYC#J% zp^bD?(|iVr8lQ#6Tonl1%=_=4-?jx+9F>c9l!0PH1_w9ijNavB_Q)i3XuR0VriQ?q z_O=TvLsEbilavU|6bpZEjx$yv9Ba*}%BQu7wlA6DMlob@3!oX0@A-Get$Qh=bo@O& z%#RUbNhZuM@Wkp?nL@_$b0!IpoyCu(xAnlQs%hYW!x@>hwaVnozMJB-RP)m#GiF|5 zY(dp=2{*RIUduDrI>iuB08X2|j&GH)sab(+j8%Q?tJ@VSDxMX1l~kzwVBZu)Ov`p8 zmGn9cT7|6?qI3`lIrox2Y44k;5ABMwye(8xA(B6Jx-#G73H{purKsjDk%W5#wu8R? z@p36C;+@ahIlJYM*uQ{nh~rMhR9~c=NlKima>%5D;SQ&;Hub>cshYLi7L7)ALmp#g zH}U;2Bzl_G`yD&75~Z0M${%C%^NnbD614}~k|$#0DJJBrTUEE8-@_R=$N3Abm#Bm> z(@2jDkizQAEv_>CPoX>gan5^9!`6aG=7vK(JgfdWBqZ?@xCVodo?-X@l(jH(_xgM0>mGUyWwF^ovwmAk&P3EWe$Yfzl>@{PfEz= zAP2F{x9`p~C}9sUR${t=jl)R{EfuB8TT`X&j;R|xAkgsGolzs1TsQ=DkZinZ=6&w*_u7a=sH^Dm%a4Xx&3W`|;_Foc2ZfD$>+aq;N)L z$oYxQ=D_#C5e+3|$s;ie?7!~n{@2D=5iHX3QWuSvC~=`%?Qn0g#*@-cyfZtD(l7?( z^mOT~cR$w&(%beLPPuate}?!4MSIUwrN(zdl}TGL8)0zRnm2gj1HxdDUNMo|G8RyLXgBe28rEWG7w1?VBe+;PfY}Nnk>U7GGrxp z{3&2`#{Dr+tR31i7%iJ~@dJEw^oRouP0IBf_QvdR*3(KQH+Y9gU@Qg2zBrt;Lq(aZ zXG&0mp#kYdBKvnI7~-V0Op}mo%vGI^+W!E2X>m7HSC&xZD7J)vbkkqn*ub@*<-4-n z{$CHK7A2rv9+|_QI+TVo$g?U1W(%2iH=d7wmR`{>BiEss-tKfS(q=RJ|El0JM% zPVVut$YjZwTK>JU&_5M`gg}BfZk4{5_;~~kuZi(|hl3=eC$B~`i1dz0%RB-_Q~vtxEfW6r*hFFi{=c5-@k?_ro=`{iD8(s#-Sfg zKsiUK{q2XAV=Tg0^-#HWHns|5TH~46#=}h7ThkRyI>S)K-54n8H`5fF{{XT}G21aZ zfH!3pzospwSksx%N4yW>{V|@ma=ht{zY2q5aWW(>Oih$1_i-{-G+i=~h2Fw2b=Pmq z;=ECgc4d1E@R+B!MK2g_$I7U>_r>`4NjSjvn#|>S^AP9XXMemNoUt z-B$Q9#%b1vR%gmH!+V3R_0#wA#6%J@8J0I>8XFxyTxr!%)FjNNWT;dbl@W63Yk~*j zxVO8T*BSCTmFy-|mfEeYjUz2+O;G9~<^9`|%cBDO96VK#LX3zR58^wvDup?SVp;zH z(V!T)5fR1&s4eboa5UErZ6&ZrL%`ghWq7Qpj59no=00onZ;W0iB$af+ndzZOoE-9G z4CT9J8e?XK-Tjr~*(1?f41zIi-A5Q4sU}p9p0Uq6@|V6|mTM3Fb@}6uBU`g*M%qW6 z)v#LO67?YW51(9Vdof7`M;nP|8H05Nw&ypTPudDpgN!~%f+Hf>3)?qHu=?Xl8ae2v zhGk=Gbm?NL)H8l+!yIyFqLz)XYKfDB@VM#8P;(B0Yl{P>F(jpfh0)6gEi5-~f>Qxxwt%tA`48ocfAFelID*YHI>VawYgwD%J{VbKli1<> zP3|4cWlkSUXSh~ou~m*eP21v5-o5Y$sY`Kb_)JfDWFZ`@8?0zc6$isNYj-~>%UU6$ zSg7RX!X0ID$!B*4_5@!`iw(5KRTmWdGgj3iGSsY1lrK(FY&RQT{{WschGg`J=A|tj zhc6G|JR*jfrC4qVxR3^E7_Ek%0r3E18|`gXHC-1AHoNocBwzqobLFxXwo*X&^)bFF zKOUy3;q`4alR~mV%7J1&^FL6~n~*Zv>~3s*Ezj^?B-E4@@^kE3p;{Xq6hA}heQ%Tt zU%|M(Hj^mO;}P+St}ju`p=E?FQvE#()s;tJzr*s`8QUWnyxG0k)qm z`0e505pe1WxK9qp*ZEs z%C-Lhvzl!=7*!P@%o-&DSe^Iz;<^@+QU_Tca7us(7A>{AVU=1IV8|4z>Q4CdRZt{F zWGgEMAPa4p*1(uZy=cUbC%zVQcMhQD@7Q2rNfrt>^NK2oO7cCgYg@K0QOQsV2uU`! zWB6AUSb(H>wk%M{%+JzT>0k!99?&#t&%_HM4#2iu7^v3UAC4$PSY}{^vm5t4uyIK= z)n*ikD=Ow|_87BM!sVcb8jOKCmkq9?5g5g2BMLLBQORe7GDJ2Fi+nPs5m9+a&73)F zcJYYjSH9QnuE)2>6xt3=P0EmjiwshyqN42FdFf>UqZ5C?f35{tT3J#iWh$d8s9$%z zuipZWU$d)?1dc8o-uCc3U=onA-5&mfwh^H8i5k{sc2ZYkZuqeiik>JPfXKRn=e9D0 z#oVzub@}4-5CZ_16J;R@?VAmvPqo?A1=~T0OB&A;M(PSM?k+H=kz-OAfpBbFY;pWs zh;cp(9aOwI+P0oG4J{mk^3y98CDUT-;CNrA=*hZAo_k+WMBdWRL&P39SC~*#4|K+Q zhHU{IM2jBfjr{qvvZ}jAqeL2Qt~dRp<1$v&$0T#KqEr)I`ra(S-5Itz5q@HzHGm^;7=P6(XSg-W|0+7EE`$1v9SXg)aE3ZiQY)m3xd1f z2BZN~nl8ix(0h8|oI<54kY!07Q{Bz@N#AdV64Ro3W5*ei0Omisl1!p!xgmZU{?0U` zk~ktnnrwwrpbMU#QGez1#%(QRl#xb_9qs&E3|Fa=X&DG%Adqz1e}%l^IJsyky%*~1 zY2GvfSqs~(RA_H~kIxy>)TFWqmNkt*wfp?>XwdzYM6!j>t9-uo+Wwf&G0Sr>0@=Oc zusEow){25u5~7uZsEJw08tHslN?GE939TbTrfXlPTVk~G)F}?^7csa4Ohqb~L?RAA zW7JLb7<9_pMx@g~p%G1_Q*|%kzDXq+k86Q!=UoTW6Iz(+Y57u2rrQ@? zcCpx8V#3u)1T?I2O17{0Nzs7ZV^q}C$qn;F@nyP)({B3higED{Z9gtFaUwo-0GnH4KRh)lR?1Rl ztuswaR*)pkEJ=K=BL0}%p@;2Mv${-?mg#4enL%FttU=RFF^@?#T+s5wd1a95q-9nF z9>W^E7NO;(l9@-m_Et`{CjEgQEOKSKvpXRj6+}uAT)IlOcaBvNk>f%&^~61;;j1)D zA3BuOrl1KgD=EE!J0CwYjb0-|MGB%+mlX$4>6HUt@h~RC-S4T_71nwgsg_2bk`jTB zP_rpIYkhm%>#gsM<2Kro6|;+;1)`lJEt*iheuu^`Jcej9X1vO`41Y{h;*!ZX5Hd+s z4MR515p0X-E&&*wEX^IxOv`P(JLAwv(rnh7H28H~lG8mUQ)Y>jh~zi>zlY_GDi@MG zg^6HOCBs+)>+;5IElzClwUKRgYYlbk7%VkrI{A`cyja%iTK@o+F>$hVD)}d%tTUAy zgJ{{&6zgl){Jx_XxJ^->l4NI(tXV9Y=Ix-iC|2=)AH;x;SY3%*F;>b!vFaUdG@4o~=jp{{W0y=-0Gbrbr~6Sq@cHy^B~KI~)p5 z3=Fc=2{Q{{DQg`(lZ8sz)Q&bu;FZxir&%DKqC^&Da#!K-IGx{QF}NJ)m6;gj zP4b)dU|emZZYbQmq=9?p8~8TFcw5CJ(NkNTtC;2&0BBAn#5jz#DQMx98EmEnWkYqcjZQZxxP?pQZft4Ot2oo^=S*{}DMbk*0iRuV_~T}PkGh&n zg)NspfCK!_7DT8_y9W@F<(0*RI;#M?<2Q)ONb{C~GDy3y(Qo3`#>5o#&{ZKxBA1z^ z(T&3pdv9!I*T%-Sd0jF_sh}|A{^#S2aka>m*iH>zY2p$q%qLvOI=!uZKb|!>O-%CC z2Qw5{^D;fQxlz6JzMA8n;gw+2Wtm(CAO_ywyI}kVqIzy2Q3I5b1fx1hsxp?b{cnqS z;^gd7iRlr{(=4#_WXwS_I*j5we80cXa!~U5RueqR+PWC^%l_T*jl^dZ%H|c0QvT~l zaL2ux`;V?GaBBGH0+Md1+}ka+^a9_nt~&95kLHD}t-oK>4b96)5hU@&zQQ@-2ha!yMeUj$&nvRENrJt!-BQ@hIzOSj9Ak!AVf$ofP)?Vl9-> zC6LL&cyx&=4^33@2X)m|az4I`na})V9(klP0hoqinl#OPqsQfrk>;p}+2UtMGBrc0 zXS0l@V+Xj>#N!frI(Yu@yO4kQ!wk#t{{Wm?$rad15r`aw$srGK!hb9-AuN!kHcK+G z&>eNP^~5UbBBbHOMWeSuoYz0g9PMpWaS{<5DH>S+01b}#;?19wxT8#X?`-s%8Ipfv zxU8Jg#Jo9gGT6(~L-t%Ii@Qf;G0Q{c!%w zNC~QzPGic}R<-mUuj1tXSW><=&GEOP&U4|*UzRZ@d%`<_NFPOkz7KpBJ}qJSXiGdKlR3)TvJU`6IUrCvwkU_Rbu2i44*Q~HSn{Ily@!uB{PB*hQAZk#tn~=@5wj^!2cJ0UIG{3B z&;(q^CBaq$@UNZzz41eeaJ-x>O)4|2X>OSaQuZYH_4;EkAvsH5gC`c_qZUZa^*?C` zn^P$dB!P}a9xO)s+rBh7Jn+p}f>0Ix3g1n2?{59IwlQX=nhJzUbdjOT46YL_YTrK= z{Jt2w!Rekf%#Mn#ts>8I8~~Yyr_I+-QRf+`?1(LzwUA51_}v8@afs0mAm+DF(RTj; zXg|B+bu_%X+TIB%GD96Kr6QOM-AXds;-Kq|J{7|%xNi}Lu4s^@W5$6tF}YIN$Hv{Km?Gw3+7>9r(0Mq;CTZbG|4gcZaR->tBffWBcdb$*{`S` zceVXVzS!myiMmN zjiW+(uEm<;Pk)kxi@2}(&X)_?dgT>B}zlct>L`SzAGF^NeOH9 zS$7x8x6@!dHoV^z;<3uHM@r$ABWf@6Or*%kNUam^2ilKQ?hcS1wxVl8SVzZKR3qeMzMt)gr&hK$80dsE^a@bF0C1;sew?166FM+ z!|Q>yvM?54x3)B~&=AUE$(HY%#yXE=cr#ViM&ca#dfm4OHc{wF#swrcF77RqYmTSb z?k^t>l5r%QlR3U~uu*+IH~!d}JqqaR4-Af$d1?nJN&`8OfI4gz*YWx5ju+ZaFBcJz zK}rhJ!Uc;GGmG3lPLi$_`4iwaQn$vk;q-5TapypPX2B5KLd)N z$(KMw$s@=gLNEuF)v~ssyyDELDV}I$V#52{#@(ztU||IAq9wYsd#$y;I4rQV6!A$q z7l;E8pPRiuc8mg!;u2QFKW&ljMbPrO5A z8iC{GjHQx+Gu&zYyn~CfLq=ni%PvKaE3q+vF6Sud8I85SoN|8Baam%S+6g3ru9gc+ zP9n{g#1;$?XrwM>kx2JW$6RvM23{GN;i!_DcClg~BPskXe;NkYvtpkZpqjPKYRM&R zvR#;xtlG7S^%@?=+U;yl?$vDMoV^$l%&jc4Oi-4wVIE+v+h*6!`(rY?1Y+_69x!Yd zEtq=x<4&W8RIYgxWrbA8%yqYXx()U}LyS6#x`@VEn=u!-vA^es54qZ7R>D#qQZOxM zj1swxzvmhCay)|BNJP+d{>Cf{lu}v6^8iL=zthGlRMv?GQ65_xi<{-f(OW4km5z&) z=yw;u!xgoOxYrk8h|MTI_#X3i#3zap<0~o;U2$oeDS8i0P^1lz5tYraV0+;FrGxKe zm1Bv4D7kFS<4jPI!lK5e=sPcbMq?vQs*u3+s2gEXHD#Lih(@7h=1RuxZ^P+;Qav)W zeW1ARxiMJXi6q|r@a({WWeZ_#JL0(Nic!@XQgJdAEJUi10kPiQ@YMW8l@>Q_!`&H< zpm@btDCMXlAkSfY1E|D#A}WHDl9u$oCyaU$OQOwEM#t|Z3ii-t-{vt@BaK~_S0HvO zFNhXWqQKt+IHZbNFI2>o=^2hiV#}dh>#4w1oa)-H1ACEkgTtJ@LdMOeyMB08pf1wQ z4p&C$GH4h!gVO|-Rs>VL-)R9X0}Bv5V=`t?%^D7ncf^yJ$XOMb0cP)EiR0`}HtZ~t zOAGQ8$b@KBn@m}ynqC%Jl0Y8%+pzS(cr3Ba2uzBt5NxhP zd*}5Q#7=2GEQcht0+)(Tww~(Cn)$c6{uAkrmxk4v+IiYqcV&@)XzA~qt+lng{{Vb) z^?W@diJF-fKt{PF76<*l_APLk(IbUso#H0!w*&PjZ9ld-vO!8ViIsXMQ^NkpjIvTW?;xjAoj+%;N>5=>~V{0u<}zp6S`(u6;6(Z;k`x)6#SZ{eOAZ5AxSWe zmojDm5W~sE*?A#SV-9s;-s4{w*|OQA!=#Do+bm0z>f~S1I9lnPeTtrTIaAm4kq=kR^1;Ycry|IITc8EC_5t_rv4r5br zZTNB1a5+{;B+m-8WMzEP75Hsy_BiLv@yR1eGlMG=)CIpxZ+kW)k0&st<;nouF25g! zFE8;4bRBqfH8pcwr95gyt~4F=`C_#0#z|p~l2`*>4qTzX)r}q_Q7hMUv}$Ag7r7e? zX{IVvOr}#Cp^USIkRbO){{UO~?TljEE*4NPo*l8tN^DSj zAn^=@n~}BgdxfG(t4`{!`L3h^ea43P%|mb&_XoKc-r-aQQRZj4ksBym+%Oja99Bn2 zQv8}rRRoofmJ+PK^qH@=ABYyHSDEC`7#2W=`d`oV{qod!bh%} zV(Ret$u$s7%w^pi+TF%q>5V1%8!mAUDb9{4&TECXQRLz@HBwQoc3ldbw{3T|&(j%` zKQ2k3Y|H>x0R9&5Z%uH}Odde4!o$}ZC1?^mN?M2F`B??s4qM+*;}#}pf-=tQkxx;! z{{YVz9?#UYRRl)B3DK7J_fKQ_3_la7eo09x#E+j)G`G(kP|Z-L_KYPDyG8J5jBE!n zK{|g9EYa1&ASueoU-0f9;d8z@?hQPA)15P^*2Rdi{r;HInxZJwxJgi{Ety{5m>T1w z9Qnf85{puxHM~ScSCBP=bhefrq>nh%hDv&l94CxAhSJ8&LGjh~(Bq7nv8Sndoq%~8 zHf?^G+V*pa2rGFN1gvw5XB+xsk~w7=^7PGR546})WI1Gc1Xu3hpQZ%xiZ;zE>6@fw zz5f6_S*)V0RuIGlkuIv^Ox|_IEp1e^s6sd1sVetjr;+i;bhAb=yD^MgbZWU_9BMM6 zGTDv)06ZKCUIl-&#VEajkZv!r#Xb+jDd&YLD`Ht31C~d9*LA~IMk^|ENyJqG05U2Y zeS2dc+{RrN;YR&UX{X>Y$w=9)S0a`tH{eaKept!pN6l=p0#92p*C{@@r^M%uhuH`g zH_exb%%#q{^5e%b9}}7C6_Q2{PFn+^*TyiOM|w0^^lN)SRV9HlA&>&kmu<8I9FVDy zNLg=`n+$C6DzhzhRMJQZP_bLq+U<^cbs1 z5n?y+KYi=d$dr^ZQ}nXP>?}=#U5@_%Mn5l(Goz(g`Rh#tGCY}cNC#4?o0ERS`V3`v zqp>P9xUEcdCXK?ORf$w)+w>#y_@kNNG4t zG(@zrBx@KOlaPO0R-{FYqDw3@%o8HVBxfdKwg$xCOZeaEjWVWV7V3_liSWPw02R|n zDonLCafVn|P{fuir=Z-O?dgqAXFZ;dqlKCp;dqivq$sg$tPQm7qWw-O((?Fy1rBqW zp@b(qCc2E)^tNx)7X6g=jwj-B(#qK#HeKWw;*@ZKc_ z93^TDt{e$Pgea#eI$GqL00*39@Ln9#@u%Vynba(fATJ35S32j{-2_-I_6jggCBqwt zRZGU|W6e<^QA>2X{2b~) z+U=zJXW2_r|{!p`xXk>8V}WptDIkF}`biw)p;-yTbjSL}+R! zBoYLH5%RUKxH{PVJL`t#qZ?*Y(FNi0H3%^l5daw8*ZJGm6eo-BPFu$8g+Kz=$8l2< zl9FAWWKv5Tu4UH$0L^^$dS4v<1p(qBc*G?gWlW^p5Vs+~-^lIQcQ!n*@)KN{&(8MF zei})mA>?8s%VDjtVi*=`cV>}nukP!AjxE*E6{@O1He`*N5V79JPmiuCBu`e09B&{B zEHpafrB2nGr)8+E(M%WL&D_tW9Ot~v6_w9%ZOqK$73hN7lP!i58SY72Q7 zvmXtKdgii(T>*RFQg-c$Jv979)0ZegpRJ@BQBTJ9`r_HAqKbw@TA5@y8!WA5EZ>Kx zPysgY+~A9oNZTA+i9x-x*kw>`&W@Z9i~)059=BENPFsM5Rwf2_i`5h-c4p zs3O=kMF^NKRb`NLlET-(s^-oLWnFd6mtTel_NQofHy!Veg?*H)yBubokVMW28ZcWM z1MoP=s94eLjhoIB%+5gsgWm!=8)$wQxW=|xjcm0WM;eI`o9&eAi!xNz6=p?^0XDKA z2lBvZRn#=XE@FYTuxYBfprldqf~|;Fz40%yUu9^iC175}Mm^*6+v9`BOHT6GK4coP z@H~E)iK#ME$R(HWHWvI_;9qOCHzi|Fdog=zaQ4TxPHKgMaMZU#x@NvA$tz6xn%B2% zJIM0b5%2(QfsO7(#wjW(DlAj2J6oMAuD^tBf~71~O(Bk8xkdi-O+GlO8)afiwx3)g z#QJTU_Mcy*R z=5F}C2NX&uTs=IhTFk22tC8#b+ZfF@v}EnA7A9$=k`!u35yZJ8l2**8UwY$9{c)i* zQ@;pkr;JmqrBz!YBYU<{uAbMx)zd^xt&39{uhhQ6X%rb|MgGm_V~o8NqA%OcawFE4)g zQK!TA+ZxnUz?CyLZf`pGFJeAFmNBa3j(X{0r&7TG0Py@LiVlhaK=`CA;tLy3nutR0QtD%fA(G1qX)m7X?7$g_aK!`oipvy8qo zPYoo?NVL(@qbP5CM)-exPC3-LkqJ{XU_>Z7NEQQ4@zU_gf<=i zm<-nK`}2(cCB~(#m0||!g-9pJ1X|xbTBe#LrxKo6PNQR#b#_0VGp9<(0ZCE=$gbH$ zm$iqwENzQPT^x$Fbj9J29Idb7?fPRLawVvFBy86=xL{532yP@jeG1vmxY5BiW2;8D z5xL?5U`Hxt$_4h*`r@kc-zf?K*nxr>pkoWhpsJFkT--J9`}yLu<~4F6Bt}KlUvEqi zUV&>y%`A$Hj<1o_n+*Us4-|tWJm_6{ORFIo>)#o%RS;JD4K0lr*=2%M-!c$M&>tV2 zu%#BAg%$X1S&l`?pd+!@9VfIiqf_!QzQkgx z$~$n}MtAB&QpWzDv5h+Bzx_Pnb|e1))9N+z z(3rzn3h?TMxVy5C{B=4XrX1BF`XbI&h2(Rjjxv0EpU)YKAJYp z3x8}>%dN1|EhE!?l^MV3UlPxLs`0V^0QFe7v&BbFw3M*rl&QIjeOoWRubUJ7bi{p* z89(WjStSSk{l1GkmWrZnZbpW2CJKMLtg;Z_JM_*4BGJl4el~>6{A1LMj078Rr8ej9p zE+fOCq^gRdc_TwSrSlVPtFX6zk*CiOHDb|H@W$klB&CUYV2sD0bnE8dQafJ*;uV$E zF{@V))wL}gFoYlFMWZ`q9fipAqk7)5s}wpZaazJej`AK_^p*nl*K2m{F{{HkL~FzI z%8}$Uv5DvRdX8IxexgG3{{XoB^Xg~~JfCc=<}48q43E8u@GoP(!r0LEbC16oN$Ha5 z9WttdRGaEWfbvC${NoH!(`I445F zIfF{56-X)^C{cS@0HA#DjU?(j3o1|}Pe)THxzFoSp*exwg)Kxr6rlq;kob>#qziVi_Tlo-9_~FF7O)IGQ zbr%h%V#T3XRyiF{QD)TXuBPK-dxLCFIIhuY($U*ZRS^<5Ftmkpq&LcoYuUX(KP&I! z9)DFVA7iLU>DeJ?<%wMBWg2BWwVO7-4;b045Yd{5xPx>+sxwn2UUM7nd?;H59yGAM zx&AlBKHWndW67u-q>o`5jRKF)1m1|8sZq^OIcWfLPQRCISX#bS4^Xyex{l=k08d9zNGoaj}3Tf+A7M&QVUrl9Yk8)R`252sKml7>3y8xi^OM6AW>wVL6I%0!UpWa z$?=JCDr#ye5{{ZDc%V5Ik$_Qgav1k(9ey3LUYm}JT4^ApiaJV0MKUaRW+j;HeA}km zboyc(xWz%{q-G?5kR9#@Yh`7(djb6S!)HR4jB40j8Y-H>W~qK@wXVz9up1BQjaoTF zD@~s~S_0P9TW@#fJr3LBCayVVlt%8d8|5PXO{Uu)t}Sq?VHD*gd7&V6W{haQLoWUI z9+=BBP7LPBJ4WnsO0J2_PE@wYBNta7T-$ToYk9-XSn$)oET}CjNn^HBY`WXfZhtKX zbxl*#swBmEw;gf$zKx1Cl~;^dUoh>DJ~*3b=Sb2201b+=oIKJ6QrXJblGgS8_Q0w$ zQ?UVn47ouzy}u2;emJEB#(5SaHbH$e1F6Q5n%Q}782}e{)UosF-y8kWbX~Mj4IEme zG9tFeDX~4R`}ttTu(^vPWqV(!TE|=hq8TTXJaT4ZuUHlssXTK}C*8;u*G6D=`3-Tj zS0bXDdNrx)X(X#DRQE;DD{uWRjd^E+Dpi)6T=NlTky`mw9WwYg`eT@)r-q(#?8TUF zZbw(o79y#pfJ(|T7wTuWry6jtXG}RHHxuFyQJO(u(Tx;-F5jjyCg;^=&kNnU?cdO! z-+XH`32u34LpAf*^?vLyo#T!^Wzn^@+e>&DrJ$?q&4!R9DJhk;lHh+o-=6r==d4hy z%Lg>bZItG;UIzXAUlf>A@|Heqksv)RR`+lLJ^uiDV?vCRPE7I5kc%|2kMlLUwf-yp zu@bhd&P38`ep){imSD>!i_0XTP;|@u$Tr2AN{$mfG_`X_&Vs=tbClV2QJ4{->N?_s zPXusJ{{V3_pp!DRrLL!b%cp>J-uU7r+>m-(PzkxihAwKlCb=4QlkkyHQj!_gBsR?? zf!V%*3t&`|!7WQf@C>c)*}IK*##ST=Q*cN)>f@>_iDG8^O#LZlJB$t(xw3`ri9;hq ztjd6!j-t1=9obr7>@wW!qQejHKf!)FR1t)Ed0~&@Z3oK`mU>h#8bz*x{jfJ!qmwhp zg&VSKZ(Lj9oDM!LYYbJJ&X4*>RN?zHKBLG+^TNC(jFl~dB zR4*vjsGZC%Lw%p>pt_$5!klS5%^}%DWmKY2%0H{b}4!Yq}^c2x; zD_~e2pDQMoQp7MGdtg+812$G?R6AuCKM|%V$ssEG`=z2MwuN!=!aH(o_;MuB?sV`h0QCMJL`VcewP^9cKXI3Weh_a}mAh%*Vp^@$1wagY3n3~=Z;LPa`A#xdE5i} zV_vqpo`$L3C5?$@vSwz=FSYb<(Bm$8x|+I)>ZMS!ILmcYYkt2ot{xR6x6q)PL=5)? zW-g>;U{07V5mj`2;1xULG#knYHa+on3Z{luQdGD-#^V|_@Le4O%~@YmAx18-tuk2$fAy%uEW1BcuvdMiI zet0|8MzqpXykW^vk@IUA*8cz;Rfa;I;t}TwC$>^W$f1oNmZhFc>8^tlYUp5qtcWBQ z=_Ai!{l*@eE@HUVqzGF}lKO3m6=;o13(RI$9SW|Z-y7ce5>4z(wM9?`OGzE<=H+B! zZLYWT^T$zN!)W-zQp)cXW;-i(C;I;YE8~Qula%Z%a^GX;9fuCBq^Oc8rHeXPW;yL` zY!ak=5Q>>{h6FY4 zZE|s-kg?%YvOhVPs4Bqe-xMn9W1opi@Pd$Y2~{Jt@zBR9hk{gc-4z0>qDn=ZtG&Ex zaZ-~>1fNLeO0k$LSS|kmJZRI?h^Q(H6k<`8iSF4+0DUo(^-VTeT|n4?g1}==idiZ> zp5jH_I!fgNJ-_n&I}eUFTK+{S*+DvxM!9eJKh=rLo#j&fCruBZIIm9Gq*c%WZ@w%@ zvQ1QGEvLMtM!qmm>ty+CB(Pw{*0wZhW{qQDdI%Y>>tl?v%p@egP4?Rc41%4(exkY$ zC)X0yh}fv2fjA8nd5FbRDUouLNst1zkPgGBuD!;X&Z(V6Fo>NuxxxO?pV^uq?Ci#A z0;`+p(g&@F(-|_%B)J1`UH(|pB%_j76+%&KM5LEId2?9yBYZq6&1}F~bvk0OIR;>M z8k5@>NzD#mhV~ZMzno1_%T$IlA^s9_F!aWKL-OTh{t`v}>x&T(gqLe+dz19GC_MSu zo!6@Uu%jJ2@&Os#ZFN&lMZ0@*! z3X6>U8^LIrSB^<)>bY4{FlP$340{fft~mPOl=O)Z8Hkm$YCBjBe|N`YO;a@=v7XOI zPbrK|C2Gjl-EFAH2-Arbl0w9}z3ex|&B3IS+65PO`V?hmrzpg;Zn|I2n2dCn>kJ4| zE(zDZ2CFm@BgENAy_+3>3!+Lc5|h;A=S?ndqi|F!f%@Yq%|RL}M^Q_|%`g2UsEJDg z)k;Y!bh}5}8~~?3;>=8ru|!OnM(u5J>C@G;fAqGZr5eQ59IfDHRmYj6CZsmO z6coRH;_h}$2qb&Tx4vCGjr7|KHe{v66&coy?`x_mDME0WCU%A?3%i|517p8`-TdLW zXB7Vc4Owd=SB|NyB8&wq87C^U4Tk=wKy9Y9t3;Kx={(hUY`W)T)Gd9@&HgyeuB?I@ zkde7q+S$Q3CAIuNJux`m^eZ~LMCVjgRnIKXPK*9=1)bZg^EW>X-T=mr0N|}(PfFFS z(lnB^jT^BxQrVSNSMc2He=Xozrvxus9W;MtF;N0Db67Lw8vDOfb7S7xV{(FcKG#!s zM~)K8k&RiDslCng7t3$?Wf5h~oTx1`cW*&sf1ulcDX8XiUo@9ZcgB2fRCDC) zsKB{E4cwe;aH!-lNmC?on5-2^Bk=EQ_x%Al&xVxLJYf}@Q`#^|`gg{k2a0zFj0as8wv*c)h--6lSP=r1J#MG`YK5Y2s&DR_v_TeDA9Ie|#9DXd@dn=+c@ao}pdO-~ibCewaGQlZJ{QGmt`p zO|y5#5U;1s1X0N3up~-*V@{s7Ih$*=X7(MtV%!?pY8SAsj-hWL7uMtHhltHAOA-{w ztlbyf-(UH_T3FTcBw(yUfR ze*Q2Rky<$&6v(&I_xR#U(a4fHM@3zZQE74BNE@5{aG?8KGAA`N zD;xg+n0lA7Ha)M6m^iH^d~um-N=d6;#!IO8R_(2ieNXblD~`~qqnoPYbJ6gz89*MT z40a@jOK)*)LGW?SkgXNTvx99;JqOylSt|HURUu$;8mL)Bgk)ao6pJ0le%Rpt%%FvN z0x>^}9T+5>Z`k0-EC9-)M^r}dy|HtV0;#$ZHOu9&2_VQ-mGcW~RBMT(Zw*4o@&SEw zI_Yd_*xvn@A*rTFfRZqw2G+gK8hYv)ns??W-u@G8QK@Ah6$2?65CFfN1D4UL%$gD3 zOeF=_lzvGwLQ0j5ztk`KW3%DaRP`JrwKZ&<5;(r$L$Q%sM%MRL1$uJ}o9U(W$1lQo zWZX)3XrT=h06e*+R0_B5%tksI%1ZtvK~gw+(n~`ViCQ{v7m~K=Hy~@cCghxFn~P~N z$)f^FsW_c#NyHjSreL9&hz#lm<(TSzKA3JL3Pn`XLj%)B0yJvGlFQk(^QI#QEjeac zKx>dXwHS?EbJflqzHk=bcmTe?-x@2ubPKW8R*EE$6?ZL}jrF&~#swK_iC7S=aeJ_} zumH=Ii4B|Z*yu59>@!0Y4>#S%I+jvgYQAlX(i=!=o-||ja92wmY;hyRrd!?GQdZq( zKu?TDIjQ40c|!L+Y%_jXjAx$C07Xsp)8U0*BL2}6G?f$Qx`wub+F;C?@`j0w#P?fY z2d1ZrI(a3`b@FTmEpXx)^7IRx+~&2#j=i+;gymfWm2_mN%TPp%)HUkUY)Yg?NnDv` z1m4G|^u_exs?o_LvNDmH%Nm9xgKGhNV@SC=Z?AAgt%jO?4LdAF66Wf$0{6rHm@vs3 z27B+Yz#)8+DI()+Xh9ef9JT}-uDjrNiVaV~+Ui_85-b2izl>#KzXwmYK z*y=VIJrz7PFn`=k6HN=tU>k25;-?m)iK&+_EKW5hHNP-x++&-UDN`}KbjqB1YI)>W zr&&#a&h0pTZLrfBjW6CQQg3UwYn(z(VqG>HoIwqkd~wql)M(WzRB2Pk9E+Ls7u*eT zZ1DO(z`V{Jje_4d&lz;`d*O5g*Bc8gGpuGLOzWW~b@a9(R!qA#q2Q}eNNQ4|6BNkF znZ=YF9SOI?;f^52(N58};j)`*G{;}VP|FR8Wee1dr1Un|{rz#B#AxJMq^hflM2)Et z6|p_`#(3n@X^JkHm)1?3lKNQR8vHbw8bnaV$gwueKArJ|vYQ)=A0r!FHc3`QexYuh z_Bvwc(NgFq5~Y@wt?Az=U^5j<^nyDBh$D!j0G!6wDm4E9oL}~dM3qriBSd3+A+aH| z05=5wW41F>?+u2g`d_icMg6I;Pwg+#pZf{q<`s}>om(kS=i?Z4HS*0&u(KqHjneiv z{r>=LYtKR_r0JC*Qgg`9qBXX&c0PvK=44wpLFu*ai^oh$Y_|eN03qD9^+RlH(MInx zq#$J;_TF*Npi=jcGYf9IYug_s3;J z!=taDfq0cjf`UnvIpUo)j6wr2;twTE=lw=FtQP%)cDI}beX`-)KA4Ugm3eJu z6p=^6)6=Rj&VFrtT(*t6Jo*o0{h+Ln8a@fcWk8vU6wRl@OkV#0=+9_UEYk4igm|8K z;{O2h*kfe-Q^dG~u!DkANc^^F-hOoM%spMm{IE)T&uI$fhMG9-{{YEP!(xmNhehx? zBu!}NAK4BjU50uQVc&?;pV9D0y^P{+>;C|K!(&a2>s0Cg0FCj~LVd0?D>34-t9!%k z44t+XIK3wV_L^kR8*yUc8z4381(R`QWNKvLbo9c$i2tPXOMrn#_2_6OQY@(H4* zC=Sn10Y5M>t*)ZR`{?7}*bXewJYkT%hN7CJ5B~tgjmpnuDyled+2USQih)!bX~=DR z^mN-#IMA#A0Hxe&rh)0=ejgLD(TuD}^tfB&MsNCW#%GBmS$JGPAXZ?9T`YeGd=gGo z_WuCnmYKxI><1Px+C#jgbfwR?(;mGkfDV%&5d) z*$88IfALyE4aKg%&4xRu{{ZPUk;aO6)q=;%BvOu{Ykwc63lIG$MR3i>ovgvF_HklI zrhH9H{{WBvMAJC=_+>Z$08em=1*|}6g-ztm9#-aDXiI^m@y{P*=@FQ>7=#1Zv^szN z?0S-W0|jpppM*COWLh;w=A=LwGxb=mZ%h&Y0O>Up5!F;b7pjmnLo)Jg4plb&`r|xO zn@&<+CbNxFN0Ya*@y0_%#5wY@0RpUKG3+{IZSeJGc{s6Y1*z2)5H`e(`(v>G01x4u zJBUFIJk*w#VwWXI>IAD1W4C`?WXuPBB$UD|tjfWM-Zr{??Y=W}a+T3C$0gRy zQBaZp0MbB*CU3Nx3+w)7{{WUah8a1JVyZOIZ;sldgjG^|D-RE7OH?D~WQiHC)K1pD zwZ|^JCy7^9{f?fRLh5>kLJ0IX*!*#hJnt>Gx^@2m(6eE1s`iTXuqII9uJ#9mTcoLDw4NfbfnQ zBWgJQ&=r8@O(pWN(R9qZvGOhP*ruf2ksLE@<+yvv#AfC3B8f{(h#ZX?KsL4i0JbN_ z>!LF}F-Igq{@{4ka*V_RbU%xKjx>1RwKV)(Q_+2%qL|PqN9JtW0k-4a$Di>^ns7qL z&5`YUmN#vEF{`;xiKmgN(pAtoDv&Wtd+oMsk4?A5h>@z~R7oO7jzuW8&a!vA9fFH% z`y(EfnyR_}L)>N`Gv8T6q|GT zHN>s9YEbdoYQ80!oJlQ2Eu7M2>*f*wu+(Y)0OtL4_=RL*7z0znm1@r1!gCnfJFiLC zs91Nh`r|u*@ZKBj?*&TA)RJByT9#285X+#-pzm{kkjE)3jvJ3ml&v0rOI=w>T@2LZw2DSd zyOY}AmYC~biB&xTN#k|Q`J8Q+LGvChi+nr&pH@7{QquEa=VWOjMzm@-ENyK??XPTW zab6is#CVKKwbbyzcaBPEkyju9v3$eBz)0Oe)ONC4^p z{c*LxxE)no4(OT4HnETgaj&|&wY%GFYtzBQX+*2Sefd-ylU zL-yLGjDVg|vLdF#qMr#$zZL6X^QM`PaS*BmnPayLx_xLtBLBlj}Tx1RgYkz{&&Tx zWs>TOveR(%a}rMX42I>p*pAn*zkTtQLj*&J$qb8`BW|3@q2Dcr`}Z4Ld|jvFu+>ys zWOXZ}GiB4y(-NTO$1`PHBktrVzk{3iz8qYVb|l%4SyZ)@?@J>fWpMF2*+VO8EG=>U z@fr>i^wlXGs$V;hGTi=}{V)n?B5C=?Bw(yE#C&bP#~UKYmsTeYQXD7Q^5#Zjbx<#R zk$rteIv?7&qoOGzI=hc?7z%R_W#BSedu z%>OSzxYkJ|T5;-cAbMDN*GZB{Ex9x&`mPKPFl)|r&m2AqyUt`~F zCjEeZ8w69kQ%z9uM9c~<`J1`5{C{j}Q}Nj7sVew&JZ}h;vOJ;lX|Vox`FO^Bbw-Ag zSwo`C(-`9_y-{VcC(fjY47#^s0{GNz;~7c{UGz&=*+yz) zlB6X&rlavTP(Ei&T;aw(9VD+>2q|K!v8yvS;D`J^ZaqBUbo@SKnO;beMKT5DLr|HC z@CK*2?TcJTiE`nFI!O416!C(N9-xp@ww45bn6~fjEAVAjR0`Uro0O3kwbd_c`dMUO7+h{Q!AtQ5! zcokS|%enaBsU;I5)8uj(Y=c{jLRGXvUc%7PQ!_8xB$2PMi7#wMNZBh4a5iCl%X6q7 z92KeSD5;)&vK0o*0c|l4@r9NoNmEPM+k1A`6Zbu$lirSlhVUa<406>Vg-=pBmcac@ zv1^aOX{kw!QWk-F$dKD9wwZ0YzpnoPT%HS5WR&Nr3XVcBle*sBwmRSIjNTxg>? z(QH>oM>BpGjP07^U*(E*+-7>3$9V1|_d=3SPtR|LCtC$9i!AWer!cCSA$=GdbrIO> zt+ASfGF!OQ1Y)}ckno_9TKWuY(L%wJMwBc$)nxwwPBPH}V%me>8nBPE(j>($2^;&Y zJ${%c&@kLmSmolA6jv*zt$!cAJ{W~8UwC;z*{^lBx4@^WHFLa%6hit1L2GCL#-9X+ zX&8!OYKVg~D=x9=eNTW zsTB^!8QMV6u^AlR$G$2&OrG|K#x{gfLs8LsojJA+Z)2dnv9ftl&`%`AvjLG*0c_sC z3u6wAA2QzBo9Z{l^pl0*$Rmv;nV&1fGXmGxjWzjqIL>{Nw}zCvX^4u z^ld#(UwB-FE^G!mx`ar$Z9GxB32sL=JkEBvP%Uf!0JpftO&k+&>PMgK%RM_vsL1!R zzMk@scNpt^oc2zCYb*0oBT>;nO3f)#ky}fuT=gH)`r@#=ZbE6D4Mzl`;+!vl@%pBo zDW{@XL4uo~%yq~N?Jf+%v*LnM-}arZ%vU4bRN-HtlGHyTAp!|3SM z4J9UOUrv=<0k*np>IlUsxpiVVA1cVE)biUvPvCDtc0GTs;u6Rq)V#E}aGw|kvQ#z`)xq}&VcsK4Lj%nRo7P2@TlrzkDEM&uBZ*60D-6)-&_9xTw^yF;!`hGT%=rU6ilRf zJv!repVik0zwuuTOcFOI#c~W8sfU6p)!Ykz__6i4-aPt$}*I6a4XAD`J+eK(a;+nUIKvQf?Pk z-pBgm(OcQB3m~-g2u-&T#(sBIM*Q)T{>gAJv^OP^ISS>4f1m=sA=Y zS=OEc3mLN(zE&priOpr#w{5)OG1XRmr|h(}-+ibGlDw>>=3)S5ZmS#ojs0~K*zO|H zszX;z$^?atC(R~b7_m?6octq+C08~^jx=nsx)lVKVSfJr#g1GMcS?J`OmlU#OR>-l112@11>C+rhgMKP z9e^FNey4=-DWj?7I5FG&sSUl|j&09l>uh9IQdiK?M)hj#GNP+;$4cAN<#T;~;id7a znrwwN?9i*?9?#WF6jTYr>Rd%?$tIx-nXS_7O8Lyj#~G5*@b``mcLAZAYJ+#P6$$}t z&3wu<3VeQ;C4784h1JDb!rz-TqB&{{9$*=-?tyJZ&fTyMCs|7`{ln6Qby3ShayA_- zJB@L+MAH?)_5T2p&kv3YI*O*@d?{cis9IW8QWaz+jEo7!*GBg0&KqSAAF_W3qVgl?AjC3D{_$a3|?;A8U zhD8#TeR{0?%eTbYbnS7Br3Eg*r9e3Byc&~)$2>GNuQRCS-K26ayRzoXd#OJ?us#{> z1T|G3Y?h4umYtGG-bBn%byM;8w8e^*N?&K?tdet9WVy*s%NU8RV#i*hY~F8UrZaep zRdD|RW#gqZ?3EI+mS<46W-IQS4Xi%6+9@O^>!Yito}=0YdVpf2rw+v=e|sspxZK>> zYBKK2*nZ7CwB2KIPx{{U#=j*hZA^^Mu2 zbtfPyr!te<7kH%7w-7&Mqgbj9DZ8dn71+LKVm;=|AtS$UTmq6x`nsrTuJKaG9E_C^ z<;YjvD{FTQMecRQJ}Jbgp`;B(T8~>Udzl7nAS@A2t+JnvxU1MjQLj~5UrRM5Ee8jj zQ%3BU=8Vn=QKj2*6|OvAV|)vXad)8MziqGKJd-e5Sh6y|;%02jy4vA%I-g$EpY2O6 zJqHcqv<&f;Jnc=4oj)?Vo9KNpn*2+O!wQFLUQMJ$X&i+f_MaPC-fv^y6I9AiRBHP( zTLaAWl{3RN5HTK5U6*WWf>FJ)H)YQmUL(R7_gOa2VHoFn1>ethm;xv;>6fx3C1dCRj z=8EJ9bhQ#{zJ(cc^j2J(NS?Y zO@feW56wI;GSGDeTU*CK#BP51ITBS)7DNwnH196(;8$QkOdMK!=rs7oY z^2t{jS1eQ_u2OEj*Vn(p4+Iorv!5P4?9$-=!cp-GJhi+=qB-Rb@w7QwA(p|kw^vci z?+uO^f72L@tb>e5v$B$lGz%J$>cQJWFQ^Cg#mV^1Cl;ulmKvC#ryxKljvjNURu)u< zYqkDB>82&ay`tb;GH3koJQSn%6s*ew)WJ~?$EVnV% z*0{ckKWBV#d{>D??C`BIjoHI4M*FR{%YF3zAUDQ26MX~5nmMi*wC9K9MUS5|17b#i zb_Aaq;1X5DfeU@a$k{TKYi0*VI_^Gy3|Qc9^Ucp>j7Th@GVN{6yW?Yv@aL&@b!Qa{ z`I)+eVf!7u;5PK_jNFoyGZ!j3P9?)?xP^3&PcltP0Fj*&Dxkf!vX7_q#zdSpqB?Tq z0TqKQ7Pfnj!{_0S+Lo%lDV-sa7MWk)P}aFR+TVuv?cK4?akhcPav=|O$(A!SWIdY3UQGP8{o>9#YVrRB(C%?!c8%q<~U&eu6c zzblM&964&FqNQV45}-?TiIiq!VPbUk%WM3OF3S{fRHb}RQ7e$bT$zz$U;f@ex6;?X z->x(I?Maa2(ZtkJEOeQgvYtj$We7_a9!8oEjgBnvYK-)A(>qF$g)Gu42LN_k9R=Gi zw;T7iEKgU(tK*PHZ40&8QS2Ah{{X9Li*%f5B!6eE6fxT<4;%|2Vm);l-{FmACgIhN z^c?W9FAz%JAv0D;@re$0xhD3r8{GEBPaL7ChmK7YYCxJabSMI=#L5b{i({ha$1Kz^ z%~KrBQF78{_aheRPzO!UpD(WG+|zKFDe1)M>luhm1LSu?w--HtW8T$K8Y(^&MzY6O zP|Z^ti>k+^g~`fE7wx^hF-E9!DziEjj!U{(cV5`)wI^nsuyb|0l)hW^-}k-)E4-|^ zmna$xTOt_Xep@#%Yzpsv@dT14P>35gTXkFY#U=;>LNjXDUrZiiu}*?FFB>iGsJCo1 zEDGhy(h+m=7`l{ENl8&FNY5f7n}s$Edtc5Imi9X#M+9@lDmz997a5wz0*{?ZGE~6Y zsrRjzeLt=T1eD@SPK=-%SQ}dw;i*U^Eewjty0B%@kBfK0c7(ybbxF)!@<%V>0?2+? zQNu(zQ%=kSlb8*Fz~+yiIbjk)t@s7V9}HT8h;qblBvM39nTcB;TpCCc^i__dmW0B@ zxhyVp>GScxg*@yUOtNLt>_P91h4yx^)hrpH5xG-!dz^<{!uHMb#;p7arQz{M4ON;8hf*i2(H}I-l$G#Pak_?u^n} zNy*<{`r^!S7IH#s>4nMV%Gph|vBkPfxm{%I0N4xQY^Ts5Sd6g4ayx;(G%|*aFqOkc zV4cRBgQfpU-tw2TKsV`l>=sf682WAibR%_y;4oovIRP>TimJCcmDv?<4=hD zDZ%8YV^3P^GcaX9E~+hapw~@w{V;J?Sy@DsRh20eY)i#6%Whql-SRYBUc~kuFB8*f*I#fnSSCM^~d`7;Q!OJ76WhbLUhVVaUe(Iv1G|++)Q!Gx`Ifbl8O8CCk zzk3{LLs1MBvVE(F@c3yXV(?P}(wp3#;4+) zET=7&>wK%G9@)qzlO?lZ-B)Rg=#kV=6w*1oGG2HO4`eVa*7=9_m zYXw~E8iyAVM5>?zW4SgSMg1{zi+|KU7sBEc9?#RqTR-6tjIgP;_wVo+ygn+&E=BQG zM3dOwA5X&h-qh7Xw9&AY>BPBWRtEaLm5+ZPJXT+6CgQL!2liH&$3m}>t8$1!#ipt> zw|lmlYCSL|;Pw1+7vmn+aSlxcdY)m+8V?GibMV(0RsPqn_;h?Tg23s+uEI$egqENK zrf=aN>F?jhHc3V`9Stk&^r#`GKFs}^hH))DE%`3PszH5QxB9KVfL~kVDWfG>T;&_z z#=pO&EqfcqBL4sfhJsg!6;=uwRW4Ujbouta0UEH<=a#60#&0n8)8d40b+21$Chf44>CBXu-V}k`imdW6oHDXGSzU&DdN736o8ZR zYySZGSkp<=?gh_#+Ye}%d!qP)c*VuJ^yPmrSmG1#5m_5Y{vX3? zm6pel${*-*pRTyqYIP#p;15EF@U4$xF_gS`zJ{jGX*dNh4wUp)P{?hRNgkH*bN%s@ z-p+llqDP}x-l0PytgO9ib{1k3?doydr`n)gu+J(lfX6S>5Hd=v+{$`si+jbP3Qx^! ze>`IRStoI0=6UB8;QUHd`#kh<#8)YN%WiK`Bpq$s?Y-=AkHiy;)}(;bOkPI>oaZm7 zE8BledfUlCFjbz8bjmV=6uE`GWpC?(#}^D~xr*6_G;188P?)-7TZVm3q}+Pre!(GWMw${Th0^(G0OP!>ODux`^ zSp(*_)+^`ZiuE*nLY}&orb>BTV0(_8{{Vl_59%iA2}|VCgmJ3cBS#t~Ja9|*vQFT$ zJcPEpmN`w1GiqrhT8Tt~9iwD~Ku{iWy|cH?gIioiD()mBl2LfvRDGa9kdoSLb^cwk zTB4?LQq{F7$*5N5CPw$Q1OxE49hc54qR$gD@fv!1NceFH4WNyr7gjq1>87~Tt>QEZ z1!ihEC}dR0WCHBVa0=V2dwA1)WKwaqf!4CBV&P@>4?L`sJNYdRL@Mt zwx9t{Ez-IRopc*wlF*cgFIfCN=;4LwDJIIbk1fttChE*u?m6#vc{p6%?FV zVh)qHJl#i1=D))G;_nluYGV`zzM@d*8NqIrLGES0ZB4ODhq5fyBCatslfq+*O`VPP zJ-px34@`%>6ga?VmQzy9Wf^&HhfKHBV_%2YQd3Ou)U{GW8mXqIfU@(Mg_*MrPQ$&i ze9;~frfAlB^l0PfI90N-+g&#uu=DYFDXC+DrFh;#sWGQsxbilZZwJS%`&$CuhM~u3 zEmTw-Gl+ywl_UQ?{T-AVwA9ZVa35Q z@ZKQNYkbs&NgJI?f!h{1XBw=b;Y~wPA1(?~16AZUl~uBkr@n&U_?&g}`%dt~&ZV#B z0yHXfY1{c@Jd>tr2;PzAln~B<$nj-xn;Rf(+gmsBVMoL#lBTADww>h8%*7hxBV$sc zjzdgos)sWpD@7ybxLf<7wbI1my&V&Z^sI@lC14n;44N&hxwp`KF_V(pXA)`jHx`bj zDj2@bs}ab>kN`SVfvvyXyW<{Oc=>NfH!C|5NPMxCy@%r3$6nXJ%N_ka9X(|{sUdYb zFkYKKab~%;+hZxXR}HJ;W~+)-nTx{NK!h(KdYW zj3=1jkS@x=0H?6Vy!=i{YD+-`@m0llNfq*hTWit>uY78r8^dYLbuk%YlB2CzGP6i| zgjfJI2SK-<_|LDWd8AO1#u>V$WI3MtU#GwqusZ3jua1``IVKIKpfN37OQjz~3mhc5 z3Zpf(7q{-m4O7GD)nb}lkIcHhWz2J1$v>F-oI62M)tSE16b4gf0EX-sk-5d_!_7fa zHDbXkXJ?W{9ZGFr0r7u0Qpv`dJs7mtpqi>Ys7M4Wpy`b}<+<&DkLiv2TDpcD*m6uJ zj1no-wo3pF@3G&%d|-}Dv9+C6$5mDLjkdpxI9jOWSB_~Zj6i22P@666H|_Dpl1g2g zYPM*i%~w$*QdlmHkRtax9{T?KW1r&O`U)vyiU1**l!-&!#ec!3*UNv0p~j6z5}SoI ztg$t0Bn2j`5gF~lO`6p~DaAABfC;}PWpZ3g(Pag=7h30G!KU0T*x z^Vu>Bfn_@Vap)D$@N-B~iWH`ZDCV=0ZkNnK%)^XR{KN*Z8??| z%TZGt2cZSGVsr;UG#OU@bjI1?ZY@0`=N%N_p_VUas;i8#M$F#j+b{$@)O@e?$30JA z`LYKqt&i)D*NjO|Rl%gH;gqw|M3H5lLv}`E_!mt#H#f&W?4*=2amddRThe7b&XC`! zA3b)yBNj)(Q)~W$9?5XNA3VU!oVG@6u97vhvDeA4xj3%z)CQI~Scr4kgiX-Q3AVlm zlZ|TUnzE@41Oh4$#7D9TO@L<8QVqQP&JRVMC7wBBf=QbqsAajZAPlz90jJmFhtJy! zIoggNR|4mrnb)~2KR<>j^3H1w{A18KmjL1wMW&K?)(B#0IfXI?7dvIYa7DfzxaJdt z)KvAL3Nv(&EE|2T@Wo@yn%gNoY=sQ62!vKw*LO_7502yIfXx#tynRirnO9wWj9!>E zF<440avqk*Zd<*_(|hA0nx<%2ymA#c2LAv&RClxp>$pi2(1~gWRm+qYxgKwqPfy+O zc*Mph6--Js{^~o3z#5AM-06zb)l)|KH7#>uyW8c4`&eYmEE&mBX7n9R>yBz~bY|Or zj9F}bqmV_@XDki&u)Zl&$VFLo&@XZ@SuEU1@|&wkaBp*L0->FW47PmQfsUx7Rc5UV zW{n+Ca~X+iX<>XCS&KTP#D%xv(%7d*C=jABAQRsWJ6MCc^%#yjC9Q#J2RV?osypIJ z!Z6G%53hVsnkN-)8PS37+ZKv4$Cb`z8z0}#8Z=*MD@Z`hTH&<4v3H#9OolM=um;EZ zjAjQu=1j-SV_$$gu}yT2DHym4vOtoLkaajpHboicX;MJatBC;6vA=HE)`Cgu;YM(| zN&u|St5^$L&8=;}Om~z20Mq_C?M)nZ;q=r*N~|WDohkY(*XdOZ+S|4|t_%MFN2n;H zN8%htYT1-%7V$Ek=Ny+A{{X6$ z6FbAfDQqucEQ06%09-=D9^_JrI%;2KeV6ubF<)JhY2(-Jd_lyr4~6s_3s_uZ3ypu( z7-N;-;FPaEVSZ$y!~M!J$fpMOhuS*$t13*Dj;))MBWT;{ZM);Ij)Q~nnO1%=A~kyj z0+2fAPzHkJ*?t$rr&?VUk;}awwEorAq})Pj-kgzWmqb&4;qmK@nu?ESy@-#KkvNAH zxA_R&2!H;ge<7|jJ*W1kjaJe%H5_qp?i@}=iY8!R(WD;sha6MUEL9Lnl7|m-BWAuv z@O%FL7)v5$addPZ(Q)1<#^~8<5+|Bi{^&&_+BNM2xxok$rpPZ`vt^FAt~S@nyVuWSxM}{{RU3>+lPVI%-Kv z2T1_8g#LENXN!-FH`$9iIHWl&$5H8v5y@~!#TW#FFbTN>dvA*gaMl;swmQ+7YnnCG zX1AObZ)026Ji``ipWlHcwZJXj4%S~E$e`g6|}{P zIxK#;t05$t3*ZJ3Bo?*rgCwd&`(lP`ZguT~#NfAkcfbaOY^>(TTume~wq(%x2NczX ztj5Cy`r%dfJN9X%TFcW@5P$V3vBZrUx@V@7IQ|`o#$b_$k}yc7Wo*gP<6<$J#Ma>G zr91va<%ppnm9OeB7L7a~ow274a!#T;wF9t!-q>o21`5v?TK#|L60>iN^vZDe9hnUR z{u_)$+#OVr>x+yCCgTEhI%8C<%o0zLwm)1IYS4?lhsOai0#9rSqhNG8V4$->UN+lL zo)JXxn0$Y>GX#vUp}`WNjqGqBvdoaiMY3A}l9D#q4RBSc53Tk6aA3gq!=V|?L_2Tf z92F|Kggq%+E>YQ=F!~%^AxhkD;|-8l-p2{W4`pAroaD_%OCkOt9zuWhu>7z@te_8_ zsi#5(x*b>_kx}~MMkPD%dwHJji}X^P4bG;Pb$EE2Qh){0N_z%AtS^fu9w9Mg zrk0kWZloG{MeX0G{xOu);?~;$crHoNv75mXzNk)o$OtHT3wnhX<$@ni`5$@*6sj-@^n>6159z3fQXB-s>{v`RFqKc!!T7Whp@M zYVTlp;t?cN?kVq?7!^8ieOP{1#c%K_q2dtD#i^$>tv4{ampLkZ^av-IW}R_8(Awmr75hH$#nk!9i3@-fo!?zcX7A1i+> zVAOjP!fz}{Rxs8#m2)@3{qTK7@K+y$nvzPi;WYI0vGc`ri&6}oDFP5WN%YedsSPzm z0v;zEbrkf0ovkKZ?U{%+@s6US*m|H8@Y>30(Ub_&F}f(wAJ^-QX7(?Lz(jJ$78vE` zWf>5=+#4I}!=z|$fjFgX8-9*{8EKo1(@@nX*{Gufpy(Yz8aN*_t~P4@lAnpAOT#Lu zsVD>IMVdDam31~Z_j7G=+Zprw8(k!_Ni?VL@B9kg~+*E!O*yxhMMLiV@1P za`gWI@Mm^p%_@-ek4=)MHwl!>o3nJV0>s_5KTh}$EJ;h62;+`qV$G1-aizW&#hExn zwE|gbJ3aW@^f|c1qt;*)H8g4rQ>GZxdpr?^}aLFt)0xY59%&Hk} zm#bno`e4NKcvU|Sh5rD{ot>nR46-u?*!dZI`SixobOkyJIvOgaX=h4^(pdS65@{x^ zTQ8th#VI9PWAr0&{>iPEV ze05`06#h*i(rC+IG7>bg$5%~DQBlIFD`$zm&ewrrj1*R~jm`BZQb(oxrm|=!_CJWfFV2fa$pWTK30B?FCFTa55H>oEY*%vaAIhkacU{@o%ng zk;Z4Ulu^{nIi7**f&Hyt{iFMam)!m6*}yLrZZQnOQ~({~IyZ+i=E>wFHjt(x)X3J?InwcoY~#kEG3>WZ9N zR+^cB3XK~F1Mx4w{PE48AQeBvF}poVm|7&zl{v5Yw8ko{vg`=#aodelXuM|B)rJU{ z-MIr%+f8)EQ&uxF-zj66h~2Sb5fO-k7-<*{Sli?L@ZVw&Nno&ZSeTM}w@T#OY9ut=Hb`S(b1gs-p&u61{{Z8B zcib2LjKvOD;`~wMAZryW}M&#Kj@DQg3|Gt`6{3P0Jl%~Y5xGR)c*kZIPU2fRYAWZNd1@~sL<<*8#k=e0&vT|R zIE_~_Dy50lkXWh22H4*AW~O>-N#t3+%(5mz+JIF2v72sCb~vsxIytHm ztqk(c7!|XbRH*Uq^P z@zT+)tjGoA_0ayiW2u|ieg_gII#ZRD>{aAnIZ51@dl+SNXuq>HDzkCrHY-}|m*1jnSF*g3#c*^G5#{&d|uIJ@~Ah*QZ zVTK~g%8;hpc*UBS9-XqbqqBLyF2Gvi{+R59l$E0vsqC!it}Sd0p(5mN zPA!=3H?bHSbl&ZTNn0}u2fe)FNhwfN9XpIjfX3%p2RRHa6;8gV<~II5jk!Rs_g+ zlx)7}FZY%g@0;--&|={BhG~$)T}cIGXWk4lpRO%^uYlH=`Kt8NFSuk&f&T!I*T;Nw zzZPqzQlH7s%N=b}82ExgBA2q{nNj!tA#c=Rt-`3)m_01(43-&VWsv3v-T{fX%hw$Q zoEXmB`e%+*Hw47W*@5|seNHoL>A0M7g@P(99gV& zJ}rH;J+V1yzr;9V$4d!%g+i_t?9G=;0q_^cHSv6ZqspCv;oN5Qf{;!2NW%x_vFQ!3 zQ+;qnjrr={Mpk*8OP7}F_spWfmwv}FxBO!=VCDsqxswda)+7VDy|?XbDvly*XQo2gAyiZQwttb33ZXxjm@kJdRxYp7d{RQ8eFi+5~;}Afzy~1`u_lI0vd3% z>zR*IfVl<8JDdJrTw0ckabb@Yiw4=!yWL7RGR0PwNZ2r4OBK6j&{pYEL^kn;cvpaNUqH#qA!Z?GQI@i_#L@X29Mb)Iq| z9;2w=^2fhW@U9iXA<02SOGuW>c+e@gsoea|Fnyroe$UazJmR?_tW~~vfMC`da~EeH z?%VK?b;4Nvl-fA17ykf7sgk8+<2*&lV`Ykw3AURV7=QV{1CK-CzRBQUD0F`n?rc^C(jcrGtt~ov_?YA1@#G$BlL-=Fq7TZgpBS?~*>Fjw6hJ)mbi6hf@R_2YpUBC@3pyTV}R8J{9atwG5e+nD`5> z3uKtJ+;5C=r@XUCASYr?zMEjQUd&b3z2wiYe0p^Uv2?T$^Q&Zznl;pywee4gdw1;b z09KENKr3n&@t<^j{{W^JU6hKP7yg~}E6RZoYn}8Mzgfn8lJ-&(B&Zd23;zJe7Ng;g z2aS7e$338pgH*Ipu>SxeE}hTk^T#j73mP7{-C0~%n|kbQ3B-L=~$SY`TVdhA4|pfyjdvYm6U!rmmnif z>_xs`Tw>=b8Ysp+kg1}eQetWvcbj~u7zNybK+CDN*2dqn9>!EjSq*0rqe!XLhUGfj zH^5(SkJA^pZ?en4p<4bevbJb|m2aD{PzkyHoi)d8MI<%UX;bbgCn`&ooR6pIPizPu z$}hqRLr)q;u>qHH^zDk3bnwFJ=v=#Wv$K}^;=xpcBOfY0T7zcEl&JK-^2T&^HFK+q z*j6}ItQ<(hw~Yt{eK5%`D@QOXmU7wkWm9%<5kT;=uIw*8rDc zT!Cd8k$}or-|*W>2}fP4P{s>f|`V%EQnd+mzpa0QLD zu)$PWMxy@!92Nw_HeGkUun2AA2Qyg6#Vwh`bzlj^_4l%0f+6f9c1Ra~sA;YV_ z%)>KYCpzPHSfi?f#DWg0!?&(H>z9j?zv9llW{>3OiO>%l;u%T3we`WODa<;xWCs5##~km8o-0(97x8(&D*!8Dx~+eU_r%!D6uNv zuDC2iwZRGwzI@^gpq;cBkvX3&i1^|r7C!4Wuvq96k(Kor8B=R+NVfQ}q~A-1K5;CH zz>#eYw7?>pL^AKF?Y0GG7V(Qrxpo$?(-1L>k=qW0nOOiOfgXfnOmB5mYkcrW9__#< zvA%}`k}?}W2g3@6nJDFw2{S_N8-ed3vBsoc(buG9BuMJw*ohZ^rZLxC-n-#w{{V$b z`l!O8ofSV7;PZ@<$0Z+?uxS3Bx9kQDKL>)k27VtkG`s2tyYke1ZH`m~Cfv1Q-=_GS zN@JB?30f&vWgzPU9~B0Mi)~aYd()M;ik$ zTO%pHn&0QC!D8aI3&X`bsu-hXl&fCuZV&Vp#w~OGr!?{>Ev78S{tH}N*7x~a9wrz{ z+Mh?C2HU66WXh95hFMCcOCTFApF#2T#VWH;0Az)op;oek(%6h{@@0*dG9wxT-1s<* zijukp5yzbMGVV40*zb)mM%-&eQEXN=IY84wdT?rajW}*wMkA2*22s>AU-4i2;1XGE zku~HEeXV`|n1r#3K`6>lxz{ixTHUt;#w$#GLCPY{b1D&<`mbw#^uxwP^BBSdn4$%} z{Qm%KK)}-^vFAloV5^rlZ=dgM7LJMPY9odwN_PVJC7vI$ z)H!Kngv3NiA}H!Dt($T!`_mQbDPo!gbcth@U&0^V9m)EAFmX<2gO^~hlQr0HuKt+4 zU6zcd`x|n_I!LEb(Yu09_Ug5Gdyw8>ryP}7v8=901vL;Onnaz{WkV_rjBa( z=C77J<>yF3t^5J}?~a;>hR|@hxpWkC^oeU8OkqB@-xi}M*+{3*Un#i@;L4IKm8S^rE?{37Ljvr4IsD6J8%C0u01BRjBxq{EmKt*0p+pF@gMq= z!zs>MRCA1eHSC=lJU`eUW_WQ%kA*`ti>Q*P?_2)>!q9wx#{88O^pO4JkwX+? zYlR9iK;V=NQDyr? zgS2{&t~mZF{{U4hB+Rss#{leanX%{b($rKPa}sf>N$llCLu#ZCh6cic@egXapAlx} z)XgA0vsisGi%S(>70%9m+4)MnquZ<0>yJR7_AJOoXvrtFu5q^yu>SyM=F3j&Oy~U3 zH%xE-qF1|x;hNEM;I66;e}g*|Y&bs# z;1vAsDOnU_e1l8>05gtri~j)C8cHzK{05N+VEqls}^qa|HTvLb>;b?82T9WjeH5n}A| z#DF(T8w+~;4ucO!kg$~fprfwHshA(>^u%VQs94eC4q|-+1=YNbbU2<{*+~SWo^0sR zf;AuN*yC@GnCdtSNK3Stl&EJdeRchx%-yc~tv{>L$#$!n3u?nmj`)at~mb-*fM$7kRVwUAbFY+aS zzxBZ3iAzf`CYZ{hC7NfC}`*7 zl`$Y!6pGr%9=UYAwfPKszYgKlTt0~sI#mHzF1EkJ4@n;lpr=@=Dcpt8BZf95zJp96 z)omBr3^GQDb+VQLeJyi;mM5aSEAatGT@aG6RQ;AM0>KQKl=;q}*!=B_6jXppW*=<| zy(6CL#1D`+`Qiqy7kK1$>-Um15+OhN9+U943M(N>6n3a-=Rs_Y(SklCe!rFktQ(@w zHR_Ov=aQN`Wdy2&w}J=5d{L;GXp*L=&l1xhyogxmklR3R%q@Fr2Dp)tXyB4*sw6=p zmMc*vZ(iAL@Y~ZIPaWd$)dmY$JnY8YutwRcrg#(0?p2BpI$iI_drKB{@_d!|QxDT-pK+w89yI2KG12a&UkkvtGw<-LN-X z+c3EG#D$pM@0bIK0xf&4y6uLE6lhjGEV*?S*7()oHMR*1gq3ZNhW_}<2Koc3?l%4J zi3ti%m|QD;Ml#EZWRDhUj!rJo($&(6s7l-`k97FP6p;|+2*_7VZc)$AfEM@HM#X+7 zN?Jd(LNix5H#nb8C~Wu{T9G+gw40cfGXQ`1N}^ z0X$%h!0)~W*^ZfR$4lVO4xoY$oC%z4x*KjVBr745Ypwn`fkR?WgT2NGpfR!9_rw^e zO&ecbepo|D2_P=|ckPMh(!?8)@x-MVw+QQw1#t#gj8(T}* zV!8viKosj>aF@PIAI}I2>esOb!^R4ZL2%;d6hwrAFLk!Md)P8Pfc(kd2xXBNC60l; zF%rzJuJ`j}ffJOE9(!QLl=S8rZZOac7%|`f04v~GLkz;+Zad;`wzggGx}C6rPz{C1 z*Gy3;uglc*fGunG!#&j7MmMn2Tv&Zd*yRV(_!lozuD$da1d7cVbsf$8;tr)r8|$d? zi$vdBTEno!2TGou4iM-LQIwE$@r0z?uSEvlm?4RBk#Y&{MkB9)TgVtxH0<$ZE+djF zE6EpA6Rot<^u;+UUEpP42wU71*mkxjJlQ$PDwaOr1n=PQfg;8M=V!fz&;hQU@#e-S zJW$c|BXrDl@=w$B#F`S*Ml1;zT(-C#xTQT({iF_1WX+fh+T-JiIB6m+a1HEK9R>CM zEsZ#`{{SOTRI!Ibx3-!aY2W$caS*bjwvmE#1P#V3LXobgIMnDZ{PEIoUt#^B<13n* zgVb{Gb&^F0hvvjz<&8KhDvZ@wWK_MEM!Q^+*E{}LO*EAA7YvB%6&D~L7r(Ixan^9Z`d95ud~u0jijo!r=CFXv@B-{VEPL%eEEI4E zDPW2Szk(zRzd@!aB+*2-l0{MKacdXIloCAOhW`N3>IlF*SBlhBwe?6qKu3bc7Ou>nX~+*~ z#j(oQz$2_F5SYeoZ2FLLi{Iyem9ch?Bw$inQRU^IuB$RwcS3r z?LhyV-7+5Pi4i* zn$KqV8h_l@B+{?{032HUw8xe4k8gOl5@tziq!FLOgsS5XS)`Mwo0Ell&{xUnJV*Yh zG-cu7^l1X+CpKK~Z#Ed!De z%K@62MuyM@k|WoaFk0X4@BJ~8o9NX=BvPKDeEA}}LZZtOY`%xi4M#09!6VJ~hNx3; zk+1=m=xlr7EfX``4SZjG9VsD_p;wnRIx5+m*@-@bLHXfYAM{l-L?kRZgSJCsjS6Ls zqCG5xFYxc?_tO6W(-MP#yyzZOWKZHFPoBpeH3tT0Dbh8LnB~^zvGpVJ*BQ?wQE`K2 zESx@PM0He@Y0?`nZNb|A097l&}*?a^cYlpGl=myzT_4Qu_!=M z>E|5>v;N4(QWmbg1Djo7g@0V4*2iy8M^3pZBSeXa%&`S3a{0FQ!$_9?OmAm>j*o`P z&y=LHTIxvK&rP()M&;i$bk6SJ^)jbQ{zm@*y>VhHD5G%oGUR*ZOsIdJn4Hw_8;N45 zya!DAu1CVh^%!C*K|4nq#|kS*I(pGT`Q5*!GwNt1nrUUMmRRY|rZ^WVzS;mELEyfT zaDR8kl(ES-U)p7j6R60`@A$E?Z=J>sovQ+c<;slq(O} zp_W^mmNG7XQ`6K(#|wz@n0P!2^MgH9sw@PBkyp=C9Y13OGLSozGV_RMN;z%+Gggd)C|2Ol^-HnaW0w5#n=k37w?MUQG;%adq$p!vm(K zL2`?k!Pn30fl@%k>OMLT<&AhEVHmcbh#kV?sxhM$#T-fj=^AQmcEyE2qc&^$3`s!& zLD=F$q#Fy7ulv82D3WA!s3i-vtT*Alvvx zrvgxHJP!VGJF!!neY6{4h?-b8x;L;pe*XZrCz~p&UsW2~;{!%Hmi-`V6#kfSU57yg zUt5eJgE5vM>ua$|mnt8z;tVQk)n=5}$h8TjMCvmB}X>2}bxYtv2-opY% zETR49w|_V)5X@7?zg=)3VFMCL0D_}8%Mlh-&ubEGd*O#L*|at%@agG=V7ac=3^l+3 zOAO}OZKv;SBDscA7!iO60hO)>n_F*897+f+t+&&*08F>TD!DR7ByC$qAI}{YIQo0$ zWVV}&{{H}X$3??xIrN~L=1mRvBeBPs=i>hW`4QLS&;BgVt)?(c!|*n%;}n4{sT$=P zb{Od^DaB1WL+@^<*BsbZOzD)1X{pBk9)GC{eWN_k;_U^} zI^10A-wfG;s~cDy@z`KjkQ*C<0RA0u2;6~@wLc%_izE;BjkU#M2~xmmZ-E#=(IBJ) zwf4|pPnaF;>P`rkzGWi9+n=T+%%qW}&V*jW0Lo8oS8HqrEF_~pp2S}WuKil~2G_t? zT~35G`wSpK9gi`x_}1O9L@YEUF};De^}t6>wig%pVnZ*xe8+EGA(q3NmCLa2_^|nO zC0gSY^&pRU6Rx+#g_}(UkDLHmS2;;Gx27gQKJoZsxGGlu?T(k)-wZl^(NJ_dk-jMk z!nrGLz`h$zbLF+~m&a^NGL_o*`e9@@(6RVmOcp8{!Iis6EM6ITpI! z-!X~s&JkV3Yd`F$Dr!K`h@&!F<8Rj=K=8l%eeAai0L8+io=|Visyx&5ZjtgB=_5pn zF&t>9i?X1w9|4Xy;Q3&pcxMU!0HnNnSyozzsOX~%4W}YPN5OCT+Z}Ze{T$$s>%?lR zD+z4b6Yit_ZT|q_W6_HuimT4}y{YAHr#A-GBK4 zW`F&f?fK(hIc@&9;&`9^MWlcQq*j#L_c{TNH;RAM9wAc9B9KC!7gP1c(nGV?>NtfZ zDwdj}Gz-1k9MymQLE$u{tR<#l{21}+xV24IW@#Qn<=XhB@=r0gZ7{if1vAh%r~ON; zeJN2Q2e~+8wqRLLd(01fo|VuW-O$+D6>jA>JQKO@^ujj(O@6pW{+o?H0B zj)rN#79^hM9i1n#=HQe$vC&a`F_^F2=01Z9h|evPg4IJkJ!DV`o(B#iCfUAt>v(;9 zd{U9AW6d1W5er1(&bRVDxbz79oTq{wWm8280eiU^$$mZTw+NH%D^DF&T3jJi9V7kN znd6Jw1usaiPwZTESI-V}eNJ3zQ+q8z!P}o(T9GK*uc&$*Y;nhN@A{`$z@#p;kdbhR zF4*B~y{4?MB2r{*;E^P(b-{7;TzMr&uh;u+!8kpahSLg`u_fH-4wkq4V~yh9^(%_k zyT&ScBH!i1jtW|bb7@?&slBh#N5F52l0pM#E|(efJb=54G54-p z>xyPs1eu+~sMs6pfJD%kTyoT+i(mVU7?GPbjo4V`Yk}iyYlvkbJ=wK41HLt&kC_4< z;~0iSEtF{>-(J}0_;hM%mBQW0^No}H4Bzr8ak_L)A(dn-S}3z~X5pz!&0!Rh$D1vVqQP~)@q96iA>wh& zlSI)|RK$*=U}+m?XVdffVwlWc3c}{+1iMS+Q-wlYy z@yGIJx)BtP%?SPO;05K(n+g}*6in;8f#{I_lNMtO<8Lem7 z-?kb!)q_}f={Gkc2oWK^>Two(ciqGMfg|>M>Zc^|-NvVKE< z?S!WwL}w)T(%06<>4~y8EQ@Lh{r;F}M9>s#Sb@6r>1;^=2SD9AFaX?m-vVox_3GET z`QmnRO6&-|f`0vVzyyIgMgH+vYhi2Q*?^2@_x4bK;|Y~)q%!3vOx^VL?}oV+wujT@ zfMl6lmW^xcuIAWLl6%;l#%qi~5+XNKcK#2h7`VPcsW;l!C+G9PB2AfO50qq6^FA$& z9v?T^>eL1nJuiJU^YzATj2UxZ@YszAKfQ2x-EK)8488Qmc_6137F1hK(bil8j7}>} zlBFkKagCc!{{X+!7wD$v(y1q{PDUTUmJd-1R8zc7vkPOy#W#a4&iO@72Q6ZYm58zQ zwx5wip1E*AE%^RfML?@kC3y(OHE=5~dsTR;2K;2HA zyZ1O$J0x$FtS`3x@e;afGhAX!&6g{Km)E`$D7EfF``0^Q5(0DTTT$ZJWSN4H128|s z`_~e2miD#wzT@eL=LC#{P&7CF>4Y@wka8FuMTL#+i5F#KsbxC){{Y4-7LZ=ou8nkX(NgwZANRd9IQ`LJKYe?L4N%&9R>^f!E2@ zaX)Q%g{!$B;}EToTyJ1Q?`vTmArIOr*ToI_yCr<-A@gE%@)1vA?_P(i^C8?RS0nr|V>xgrT9~bQPs*WwdI7&A*r=K7m>SLAS z-}ODCMvjIUsgV1uZG3rcUlXi*YL;Q9Q<&p9DvZp{FHr|qBTWt={B1EFR%KMZ3<#NB0QnNgQrFO2o5MI~~9VbFYf{`+C*M6Dw^Iq`RR*vzu~HCq2l9{%Ybs;oLsTolb1qHmhGv*7ig|rwqR8?E53Lc@(nUdI+xIG zd_+QI=^`R^wq^@#UZ|(Bkie5oPPRFwj3F#^wwE8C14m8IstHiyk}Ra>lJBVPm*iE7=US5m<8M$<~Mm8J(+^JXE+{{RW} z^YYvQ>Zobgnj}RmatxQ({{So6{j|0^qr-R%6tTluSN5vqQPEFO5CMCFZ@&I5fm8c8 z!gz~vlmr>O$&_E^x%gwAP`7N_Go?ok)e}|90_KSv^%&$UZ>~2uPqOs2RT0Be#}b}Q zyulVrwx8-I-_O$?k3;OA1);RUnwCj>xka$~e>06R&?AM3L9h#SHa{bLAA~FUIa(e8 z!6|u2oKlWPC!}+uQ@@Mr{qd|lmf^J$bE(&o8tTQ(gPZSS3BH!bjpCh!M>X0s>0r|5 zMn3_lKeLN3Nd;{YwQ+$(!8Fpd5n^_^BL4s*iQV$m?KHc3Z^+7Ka1T5$s~0Cn7vIyEb*hG^3z+Bl(F&KPdJ@jBoRVEnWdAmk{F+; z+YgAWq_k}<9%&|#VmjmmWDDzjQm3a?m8wmCK@-`X&B;E!zIZ&wkA+h6>bX$GZGJv4 z_>MSkJMBwV&mvO9A%``&g2A1BIH==o>`qB^bevz?2;dS&OZSy3a%LoDD{b%mvBTF? z)>YIyyoWoTSeCvsq>@QggwJL+-`(`K4GbeMK+M2v_jm8>j+ntCCn7OXsFmndw&+SxMLd`I-QEP$aj>9^tWiz3400WGtgY&AHM(NA50 z`4fmLk}gG$jcxN7k^8j<`rj!wvE1+5wit;h0F(d$ZSHXv0E~((<5Cpwh^rH9pt-(c zY*zmOy)aQ^zeptQn{n&s4FMy5Va#+>-}+zrV2f)Lvh8d{lB`vVual+!0Drx3;>5FT z_RV5$K0m)WVjaj(%)_esDE@!G*nV$Ny?|Bz91E5~b8Oc(z6b#($o&@gzpelXDla0i zM$~lNY5TSsA_8PUK-7z2k!;o^70c3Z?|J@sGOfszi`{N5ai{Fz3?eO;OM`#Y1ZG=w z-!8?M$-v64Z{Tt)2af{}pEv~tvfu(>=dsJ8+}itL5|&~dUfO(o;hn-p5F3`;rw}24 zumwV!+b?gP7>OgHH&bH0yy7fZF#u{$=Y}rq;4XsOfHe6G0-&%4JKI1PLT~_@qcH(4 zMeVNV5NSFy8y8z1`W!^s?tSCI zV7Aqbt><5!8ztpp&6?uYTams00Jo+R0UT?VYXu!k+TXA2U;xpxz1S*}&6I{?Z$CfZ z%*gC>we27u#kKo?&H@@Z$5FY^5O1WVkE1vUV5vkh&&xAKSY|3OZ8D$V z&k#41^fiT+`u_mOubdg$;XvvGU3~Z300@wh2DQM~Qce8n``Zv{6%E-*0QHh|{@)ES zv}u81bD=iSpNHj#khEploo=I2K_GhH>3|V7>MDR{U~jFzu9$>nisrKyRu(7l-vrUz zu(iJr!|R4XQdic+wcB6U;eZW(6D~=NdDN_n@+?2K@wI%z9I{Oym1K|KLK{+Sbq7<9 zr6m#tEAFtkK5^rD`1sG4$=&11)fn7jp3)@2ZmrVVeKDRjX0f+{Y;;v{eWIF3@9!@D z4{UP8jO}}e2E(gse|&ZLIeEj2^kw8jjIDbn`WEW9$6PgzT|g&mUw=#^lp$dHj58KM z1^Qo2Hpg+wLPY~$4f~7*6>_iP?UVs;-@_JqZpS5<3zKi{fXR00WYb`93=v_tVAnel z-x6XF5YLpKHrEUB7Z<;B7@ywwk`e9(0FT3Awh+-3Rn2YA_Zy5s#%4CP@3rwWVz#xj z05cxnyJ3KB6!jgh4aa{|gfIlGZ(~QPuzrZr*Q!gLF3ekU-nv zgafpouvS+jYoNr|M?|{yEw00Fn8X!rnToR;*o@h}SH$#V(3frProOmfN-CV!VBjF{ zz42vTnOMeF{ttgqiYUd4xYuBBrVN7RTwd4d45V8C7Z8F0Q>ouWZRNKmRIO%2YJQ6>IHRUIyGk{Nw!pP>8?0>?`W%LXXPeS*`$2Teps&{tE4M0 zM|EdCM^XD2c-bAEW=P{LY{(6Q{6A+Ia(%spwW=tqR#!G@XV%-6?f%?X1>+=@W7U%E zG&r+gFf6RM&M%nuz*a)-%?)9778(+MIIhgxn=F}IKP^`?5G<^_t-pKXH9V(ab-vcP z>G@(j)tKf44$X6IJ|`FBG^R8TmxaFz3tLU^gt`(c#*xb+G;PZu*gLmHyzPs$vB47v zqpO?k0NjXdK(~C?7>!AgQ;KlvY3?MkMI}wUU$>{_gYb%nf}@*}$#Y;rh8lUeJ89zh znLoEit9mTY%X(-gc4-WylwCrFv9@nF_qFujQ-*>TX=IL#w94GIGLDmb=xwj%zsnnw zQU-XXq)KjFYnI?KMqJvRP49O1LfuB#YH9~b)0YiHrgdowM%p%qLvv>J{fs`US}iYw zo0V$0j)eeZTjk4?x6lk}Qt-uSp_*!kiDXRZtABU+wco$#j)q7eNTC#{8RGYt#1WUd z&8WVj+MRn~4_ql8S=a2&(Yo?tmIZFFo$a|gdicQdx1?&KjAIa|j4)?ceZsc({wp2L z_CA<-niX|-49vk-D_oP>{{YkZV#RM2;yg}{Hbyc$Y{`C9d9vm51=t??b{Ns%e#lnw zifolM@+r7vmRHDwQTQ|@TQJc0z@dGT<7P@pk|d`{A%0)&2=0fta%&ZKG4TE|f_?yTQZ3akf?yQ8CKRt$+Eky)Q;DahM8`>!f zYyPhzOO=u$bQkZ9;fv(W z$lBuG)lJ235>v+zzr5L+L+O6rbn%RsY37~IW3av7Z-xyG8HbpxfSlWf*m&PuXavpF zQOesxYmdts#ZeXjQXq_2D6#E(oLpG4I^+ZrI<&SNDJ{_K6KiEA_>f+pLkrt;Y*8bE zP?RmG{8?}O@gW!vbCYZ4(+-(P2UZrh@5UB;qX2U?&V*Xtp9}yvShGZS3ttUMG9N? zFi8>GFwSx|$8A3^Oe8V|)zM%f4A0F z520R`*6X0q;fQ?d@URMU70sgGf3L3CinAn(kp;k3y{ubueQ?Y^@R4f~sV7mU{y%39 zR!fuaf(F*o-k3uT8TSIn%okhcvBQy+i3Yk}>1{9)%pAMEbZe3bCpVAy!Z}+0@h5Sn zxMB=!V&$>wVk~X_J~(nESyTa>E!Q?+0lo&v!YquXN&S9by|E`&EXPD7{s0D_vD-~> z1&)bn4b6xf>(n*!aRy?A?#ios^=dEh?}(@z&;pgV_t;`Y6#f!UgUJ2=05gCCs3$Q7 z;={hD5h|iU`q_o;dksm%(WJ97y0E^43x4c0*-~VpY)P=b5XrD?x7@9>3xoXeCCpqEH(PZZ zUgzujU}i!NT`hZGT|T&DD)lsWwe<`7{C*f@iabNnARME6_!a8I=G}9ax{{1o(jN~k`|b# zARz}&INpPX`#DoX&S|8ls#O~!I9;sFioO0g=eI9rw2{yKuCA`5mN~gf-zw-16(0y_ zt&l6FMLQ8DPxAzJJ&l+RJ$|;uYJpW9OUGF?rHFr*8|pOEU&Vbj z7xXxaWl|iN)-`5iyB?Q6h>IJKuYX(_>1xLhGruKsHdS*ntG)aV{{SpPK_x{EI5DHR zc0;PM7duQmznEp6Vv%&s%bbKd=%AOKP@djQou^j?`&0? z?c+|6b=S#t#S_5uZX?f{WH}sys-Ts%?S_Ub&`Kh{RUKJ1u*auK#W*~PB`M%>g-og? zj&MV1zGX{(m&R(-K~wisEm0)WH{C#~mnhS?C%4NL^%_+|`e!EvB%&5c5c2PvAzQHQ zbAK#qQc#H0^;vf}>c5?_tvxkmC0{3rQq>|<46%%zM^ZH3*Z%-pcfLA41Hva>DHBuD zNR+Us6SXu;B!cX6mgcK!bm;(Z@WykOp+_3CkTf~nV^|C**0yT_n2Ul*#-%R>ktx3Y z%D!%#wq(m|>wn+R9j6)l1T~SpEj+bxNtwb&0z}aeFMq-;K0ht7&)0F7QkyLt=z>hc zlw--16MnO9vu(PpF_Us?qHo16i16MdQh4HqlnBF>5SLa)ZEQnj?c@(O0}`sM6!kR` zyt(;pp(}CSh}UmX=N#;_)U0MIbU80^m9H82`T3k}a9?8TxTzBeS{v)km5PP`0B*Uw ze|_N8;nfp6+CE&bD5_W7QV-) z*Y~D7E(7c}4FicQRw|O9Sqcz=zlz7cI$^?&WdMTt(Y9wbFy~rCPFZ;jwwE~uNbv+(Yt9YsW$80Z&l$6Fg7-lrF->FOhhMFEqO zuBf?f{{XGQ{p*TV)G^b;GdxQaO=9lSl~0Lp=5QV#6+(n0K+zFpkjh)=cQ`{eC0eqG zWoMmNVJ|IO{&ctLfu*G&NSvn4tB1J!^umrLL}_Gb(2?@fasa^KNn>dkn2@)-CR;vh z>!S@v#0~eubFUsP%_R<)s!f>dA zTnw)&6jlEK$3t=Owm90FxvM8KPgBfu_}@eF*BQLzW?Se^iVF=sI6O!i!O`3?=?H$i zZ;j&wjN1&Czb@$476nFM>w^fI3$aI31F~(0j3ABGP=-2c4e(%0cQ$hVTlxN2(4R!3 zP~b4oc^Z%2*gDD;x^z=*4}a%?bJ9cZWd}fY9lQ-N>g>gkuqAe3sQDXV(2FaVlvzka zeHibqCu_*JxJF6CzcQ zG28gH9q|i|B2cyqt&;kWOgt`$ASxYH0y6_(Jut*fKvqnd^#gJ}>>(AMI@QI=Hc~M= zSPN4Ly_3Q*>92E97|_qXqHWl0jqODH6H7q{nvfC>wy z;5Lp1x9{iva6Vz@D9A~*$=3ECzSw99SetUqn)!CM{V)FjJK(leR&-!g_Sl_#{{UPF z$X$Z8hzfT2Uic!nKQA+-GKNw#xAofy2_&Qv0^BL;u+rZgSPml$0`m)Wf-ZkNHmKLl zao*&xz5P4ud^#p)S2hG(4FJo40)PrL1FikjrSTDFe*)e9Bm3ZcDN)w!56=%6$e`R8 zx4aj>(*OizC>2!aJ6PyGxQQSf?h1~^-@9QnfzW|%003Wm{+Nqt)D#xb3+r$&07RN5 zV!4P3W0T-S3I2TpL+|ux4TJd@)lh>DU5_V*ruEAP9l*Q*HP34 ze7MSANc6H!c*@BR7t(Skx5R?fbv!hvsh$9h=mUv>EUn{D(?b}Qgiw$+h z&pAas_Iin0IT<2oCTM!IBU<|F>#xUbOete1D{?iqz+dM z0Riku11-t=?~OYn@I<#u+!8_lBdFTeI243tYn&+5Y!3ebKi#oB#gr2E2Yc*w!?p9-Ne143mL-%hXsvvQ zC4n0351;LU=0fk30lm~6*MAqp7U2868U8)~7>dRe5C9`FZAORb-vAd1#(>C3Wxr3( z_zaAN)TlNl#Ms<-?ef6mMp1PvRgeC^3=@_tEL4;i)9~N~8%7z5hZoIoPyBc|V!&k} z*~kDBsQUcy2-L1prGdUQUG z62!7b5re(S@!N0N#aey|RRojE1gjt-=@>UTZVzp~cmakuZn>2z01bA`w)mT4g+{t& z$r>_6PP{fMT#<7S<_~awSKDuf*b^xG47sF)k(4R9dvD&>^#1^iSy`&9XyBe2INc&} zuPVcxvkvaox5Ku(VMadCwJT62k-!=-3LDW_n-2c~rYgpfo|D5Q@)wCR8;8q%f7S8t z^unT{iCiFZN3taDC{F}&Kq}0sp{#c(nX3$NVUzkJAb<8x10@Vqlp=z2^Ze#;YbIh>-pOU znv%9g&7V3dhhA?|o{-Iy9me|%O(3kDWtLuI3$t8%s1DjKh5P}h$YNXkmqiCw5wpTp zXo$+r1(i>O+TORr<(frDD$8IMiwj$@x2XE#qu}X1KM_k)EX=LSRH%fw4W{55V_t44 zUg{*`G<-c_jet;*A~3gYR{ia3;u{|goV^t+Tu!PsmN^OH?S!ExvHhscnsuv*ppEP!04R`U2yA+-aohAa^|`{mm9OG@2pHz* zYLarMUmJ_*ZNIKM%70}zTp2#yQ&?oN`?RNJL+PruzD@JTLkAF}rj051dWPkN42c;f z6!&9bKb|Qn2GLK2`ya!2bVf;o%kL74A+YoA{{UQSnM@IKsUZ^Fh0D{D$H*t+zx>o# zxR(;*%=HZtQF8K#HE`$ni+no^`r~?+hQ&u7T1=3&zXU)5@WZcxG-tm6YR6e>bF5$$ z9xwdyc+4bc21b>X*nn<7d*E_HOomx06_-G( zad14G)*nlp0!*Z|v@#seSgzvPg3ZhUzIV3xyH5kh8lG&7pM)C*9={Ap>SrMlBbHd& z%0xirx8gaNW&JU5v%?;g$j15yn&kdiNhUp+?p z9kDqZTtkU}gqB|fTIV&gk6Vw9xZXIZ&B%~(BVAOr?8e5|?|;wECX`Z0 z0L+RHQ6!CjdSH~W!emzWnUeM@H6DEb04!ff6D)ypWHvV!7}Y8>urbq^E;$q6i%6dh$ai{LsbO4eyc9BXOg*p?UxIKs0 z(*_PBjM(2nkb$<{u@S2|Ih`0Aclr;m6GmDxr$|cYP{;N@xDW`15_J+m8XIZ1k%;GG zCRB_OZ+qSV{CnZ!9aaG(1nF_F$JYfaa_Xf+uBQ8G+YCfdsmhmPa_{rsZ>A=WS`WYh z>AtzYdSS+S22P;XxjB37t{@2nTcJ}xOACJXz#Asz+cJf^o7h|eeE$H(7zJ#}lmbSV z7c6W}{{S!3=9#2Zcap(c_RKAA*EanzB?*y(u>;Wi*Z_rtmWe}x#_UD(^SAHoiIh_D zsIV6xYkU1an8QZMS3Heix74k#x6|w21dUou+4FWFu2GnJU_dfQkvdr2n*RXX_k0zp z!bWcSoSoOV^4kc2HAc!?u4rTeg^AYR z1N|{O6)ZF^_RdH;{`AC3@{6(5wTm_O!Wc$Tkl1A>xz~SO3PW{WUdn7#kIS*Q&k3I^ zWY94eWIe{+uZr?W#N|VvK6cae*Yd&GglC;(KnYW9#RNzHNO# z7-(*c%##Nvs@EdkqV~ilc-7dYiBs;_n>VS`0Le(85?GJ`79~kP^M_ma4R6BDt^EFf zrnrj+Kv-PgQK8rM(|j#6Dp&%8Ev!Ym+kZ?52?Yl$XKc4(Y`MJJ_xS!_QXvI7aZ8p$ z-A-4iw|<`%z!{6k6ON6RruC#5XcWH@cGDuh?t!!WdAb)JR5kEZIhy zk4>;P0qm&SY{c#^1<&us2xU_*Nih%(T?NkfBlrEQOyI;M3z_nTQkvzxzDHsE*?}U& z%lCpy0$4T9QRBbmgQ^CCJg%Ux-Pl^dUfOm#e!Z~B8I@H~THRL$$NFMpGa@ih24GtH z4^VIjl%(Wl)ZNDa0FcuXPM}I9hNi=Fh=cb_9@=+dugkW*u%nMNn;U?qD;t~X@c#b* z%?%5dq2tM-sQ@L9oj;Z)$W@6eV{D}^exwWv*{0?!Br7ei*zdRWK5-NwLKRXF{{RyJ z0s8uWcwks-G?6p(i+34<_WqbkghqiPW;zlrZr|Gon<;#R5oRLfmi}G);3JrtI8-e{WF{X4}HPyIcS-;D=Yw7zKx~AiAsK!6Dvq;cXM=F5JAZrf5i+-wp zxY`>30LDIV$Xs&C9;PR7Mn4yXH4`z)UM9_(ZTI+g#z6&$y4;4nw9wcleA1D?D;!x~R6S zJb~cgfU88#0;u?(`NJc!5(>K?!*WHp{`m9`P+$Z{>gikSfA5E2#E=xIEquej@A+ax zmv&b!2{y1gozHFjU`!FSWn!!^W?$+1?}i8&WJbz_X}LDK`hY){Cc&6Ce83UDw|Ie)q(ogoLzjbc|#tHIq#{;z2^$owKPM8(-ya-`5c= zt^fwbwHNGreEv9oUo-^EmijXb3+jL44#I|a05IGR&7eL#F(xD-x@9DRY^P6$>!uMb z73t1|17_RvKA3{2xI=c!VlDlCm`n(?VI)$+DDF4dp7y|5NRc-Hg2V>P{mu_@l}*!A zVXx(<#{qO?xylTEfCl4VpRN$d#M7RksIbp*>DUZ4xoey*j1E$MJKqOV12^53TUgi& zZhn{mEcuK{m;JD#P ze(!{!$0~+P#rT20^tKQlbp&;j#LSW95%m{R2XnQJ&+Cfu#aO~e=PF5@m0${%Yw88N z>)yb5#f7IiRia?BX8@*&Zu)<3>4Q0pL~KG#=l=k=r^uV@`Ta4%ogEY;ma(CZl?6vI z54U?zPn7b|oZQO`w^h!zzn_knrwtU-sdgOfgJ4RMplNcz z{+QXK;FH5q6QV^KTeeZ7=-sVtbQ-pvov|}%cE`cKigkQCs*KfF*HfBEq;@N2C5_IT z>-1CGY#WB2dOLDvASlf=YOYxC)vo@#>y4^D9L-2lpmOCB9Z-T;_U-Qf09#@_LWO6g z>v&MTxs6cGuaZKMeFvxOjQQS;lqei@^9e$tNJ}UtK}5IAa-7Y+pWDv1nwmOlue9+R znPmv}SnRevLgvJcJLnI?6sl{Wf(-D@QB_ruV~QA}Xu}Ko8-N#O7yg9dzRz)5y11%p ze$fl6C`jX5voDRmmy9(DFmg*k5UW= zOx&!^;r`6QLOF3PF@_m(LZAWjC-?bdO{yq3b0R#FwC|$CokzyQLFZgFk29f^025 zAJe`s)9}iP;9*l!1w27=v|=-_t=Wg@ab_5#S)NvvBt{fQ0jqM-3A#Hcl z$JYz{0;{Z4(`9<9OCp7iUv=Bi3+cb8^u?g*Pa8Yev!iY#BG&Lb;1v|yUaCSPtWt~a z0S(1@U9;TD^&s{Rz}sE zvC0Np-@Y7UC)k^c=s!1!D!Wc+GSn5Uijtsr?s*|uLloGcdHr~s)?c* zuj)?P@A>09iu+wXT#pqCh!HP&5<;&2Nw?{)IiTu*FD=+xNY!$K-?-aP80dy08BEjS zTyKchz@n~hlsU&OLX6%{wbC^Tx_FMU`Ts&67CE8tilc{`ba&RFK%TK(<{pChO~k$|4YRWF*`GY(Fd& zAdbvrjdLA#{J-ZEO^FaiHd|b{8Jkb(g2!n9E;DIsk6!qnDFi?wk+1P<`@RNawe(P` zw;++#uHK(t7yxvUO^6aWZO6TTUjCRN3dpHv1b}QWaqu6$_z;v#NKbTIU2HW!QG}o@ zZ7$1frL$^RZu*VCJutv5cD$BjYxZk}_;$lFF)#(~A+~LM+e|chrrAt;TVLO9*k&RX z05WE8I%)kd2%6j~geplEIYF?~_xWO6#W8ieg>A_?{{XjqS5UULsM}`Le1^ZL^1(pJ z3N~dVD+NW{#uyIaWQ>pvt<`cmd;@Qf?`%xEtVYM7PEY_EUjev{nRAjz^LuGwvHY<- z4@ec zMrXCbz3->X_w~e77h-`guK9>3UmkYC7-)bD%67fZRnzyb6_H|QUAznV{IMM)h?Ocr zUqClD@G!zqU5W2~7!hr?{{W9T08y|cGFiyYcPHNTAC~vT`OBN4OB z;D;b;03Qzcn>bR|V{ZX8`P)n(iCJ#y2T?Z5mgd*^U?$Qgd&s8Qfw5cZY`$=tEsx#3 z?hcy#Mgnb>oV!_n6KFn1H^YDLfdOJN2t2|Rf;xb))DG6bUE*dTkh7?4sE4h0wf#Q0 zW|Bo#WlokILB)w5_~?Io;o}#M$EiYe^y+rM^4ku?Fn*MD1V^Y={v9{5_~JwSfY#30 z_5j=0PwnRpb1sr5V%iV}Vn=U=B8z3VNf$n@*BX64eK-JkSjP`kIa1`X%%BVH@xo^+ z6dPHZ<%d>Y{Z{&6E3zs>kSI}o7U$qKw)g#WyO47= z!N|9_%el9lIwA;$bN7mT*c~h_h~|<=2#r8?BHlFv^cvgtY#CLQuw4*XGPYsl?eM}H z0%VXx?x=3MfCsj!`t6 z(&6RILuS7IKcW2evjXBYVk9Fo=IZZlkEd@;5VEPvtzuI~0>qz~^KCFMvdJRykOpsc zowfqQf2h;8Bb>BW<+v_v!&7}tfN$3Tm~7byURhG#hq?LaHudp|FwW}i3KA?weY7U~ zepbNUjEt(fJZCA|`+okob;@9D=opI-3fSqd$Gz}|MHr-Tj!G~$kf0}TiMGA}0P?|u z@|l1jf$p5zjXUk%3|&YB+$DhrCH^aNKYyZ$WHS{A09zYeTgmUH1OvJ-%p0Xzz=3@= z)AAj@xMXE`zY8^sEyk;-@9BtVc)$+Vb=|XQ&8_Sj=gx=zBQpdB?<(DfOQAa7QDO7` z_+UIz0}&~91m?B#0B@!a$bnTA1E9W}j8%?v{#BibxN~AYJJ@2#Ju74GgWBMa`3C@k zQmQOcLRY6X?eW1BlG=+P>DU43@xZ8^6{IS~PHXf4Z}Gv97VoW&y{)Iu0BF+SPDJvD zY}ugzo9lIL&;G|71;%lkHpgI2IqnR_IEr|aGI!TZ+wJ&9Iv0$W&PTeW4y<^7a!WHk z4;|bFk*^KZ>)4HP&Q`|DTQaS)5_Dm3M*jfM^2bLhJc13yt+DmS9~V-UNaaPOKn;%M zAL(o!1i0m|kn$D6$`&rYAX?g!wfvk7rOs`xqgOx0w#Rf)z45lW&R|{)-9}Gnpu`8bJH3YVUU!U{DG5}l$&2qQSPs2ZxjBL|ps$aFr0`kV9c&%}-x-KlfdVBBY zjb|Bd7fT{X$mF(Q1Z%3C*Vt*bwcppzm_@8Xu(pwKk~<%nE_&O)fM{vULP{D|*} zvc*RO3deMOgb{qDukT*}08l?G>yBnlJH%@wb`^-kgOz!Cj`t$RU!K@>rfEyO!GkHz z^EzsSuogea4>&%ZebP=v^7Ct#y2v`#Y3*E$siL9D<*YG>mFlU4mW9-rPd%nb^t7*HnQct- zW^mnEG&Ze)3h=z6)`)6C{}wuo`(|SL>eX9`fF0*1jbTiZ_i8FD=Q-UV<-%3GRXnI(L1t#N{tje`9{WyyX#eDv?znGweZ_G1u{YTy3*{{i&UqdxTJHd8#y2Wp1P=N?OUv0b;H^RLay_XGcz(DBS++BEYX&CxKVGCd6MzzPG(R zY@Enw&LG3E(`BgKqo-ZiW-1J!; zZ9Z241H)yNxX0f2#^&gsw+Q=M6e@_b3}#3)Downd z5PJ4P2r!eYxRQ#`pJ@Bzl#6A?sS{&sHeP+6f+EmYFb=L>et7xjW-s7lX_eZZjD!3@ zM6>TKBDmGu|H`Cg@}aCfoyAT2>k6q4WO-;ODAw87+p=JO2K?l8`ztNkShb7GWhJK~ zA`nxjL=F5*J6g&uGP74{^r|>U?Vk0W@6hKBH^$w8 z&4!VhhU<7GLfPaX2B*D%NBu2$2#?bQGKgs90)4}(iH|gx;&N|=E)n#LPd(S{YK1{F8S`cLN>df;X7&*MDNY=q`+fzVcYlrjy~X%HQC|IIIAdKYchR z>Qk7Kqz6wQph(I+vD8#)m0P`-XS=OyKLP$!;Z5V!9>{3v#fXK)U$~aF_m!?}Hu>wA zL0Xs-Xq?%cE^fwk2~*vSHBy)E%gl}^&Le4H5nN&{PO=s~Cqg+u%!W_MSGo}ExYb-f zeyN}Zak7%}Exr9qV1Fg=eFQuzJYg!A>|?MwNb+?5E}|Vs{ei>+*Zlncmm!9%jm5Ux zU#ZCbr6+kmLYtE+6oy^zei|bER1Tp8y`241WvSa`v&UGnhLHL#`&3K%b~hB|4B{XeTrQ&5`Tf#uA8$1#2&w;)2QV^U-Tv zFaN&*rnuC~HS_grKFb)d);0Udx>h=JE4`OB)viyp13`9Utd+w{Tpk=<0Qf~`9!Ti? z#wSKlp799>7~{q%Q;RVy2|C)Al~VrXdFzm-a-#47PEIP`8wY4=k~-2|x4!-#Ad7@U z;CIzBryx!{a^CY*-2Auy+F@d^#orRQmbXnV)XVk>Hso2T7v+#ZFbxoD^4}IqBGc zbOx!MczRWwVGf7$!83kx3kw1IQAT3>=%po+69$#T<=};nwuUhj+mt#go>P@2J;$ze zX*ht3x#1Oezl*+y<5(bG&Raa$bwS%gOOLaWU3U5$9D$(U9nh^6eod^yKIWde#}0=0 zuZ7b>;kNT-n4nVtP6G+dKfqJUClmgGktF3cI-rYraw)R?HSUG{^vnFJ*!3_HNw5o! zm}5lC63iR(k|9ad#n`ZOU1mM;ye9uW_4 zw`TRx@iAI^uh}~(mA}B|pJDhC^~#3gV=nAsZN>BF{{ThOulsOS0r{KA@w(}n&bYqh zEmNU$XfJVNs`(1oG;ARF^5!RYY15Wyvu8KOIZg_-ey|$}X-nb#0BQ8+RjLQ!#@hIz z9im-TolCcquoM`^D~pExioV?YPe%N|k>iME32>K3OXt(0SjFbFpJm)C@s%l$R_>1G#tN{a*T=9EZ0qXiZf#mE>JY7$Vofz*5H^2#ik(I7{cJUvrAA0j}uvF;R}4G`lqnfeexq>r5G-* z4bNpl9ke7LrWFKIVSJWxd2~J6pzDoYP|%~2Wz*%$^rI?^ptnf` z798;cUGtto(Db&c6(_Tg{)D@qp`DP*BLDQ*8P=P6TKPA}0qJ|9{p*n;DPN?`xkNP? z*DW&)K27e_e1H+XrkYx>rW4=*@NE7i^1_&1uad&z&icnGtH7XT-mMy+)@!=9*A~;? zsCXqE7%x{=Zs+PMrEi^6w_kXqatF4LT6V?tt$p}5PIGN;ZEgK5ybmhC57jT$x~9H@ zf;0U2xw9Zza@@pG1ReR2FIvf5zXz|cXiXlY7xyUe- zdx}NtPl&@<7qhp{@}1iSgsR{r7qecj44VzgaQ}Y0N>t3>MVE-#`SmoTuwHh^c1r3N zg*Z>b+79C$W-;lU`j#d`)E0c`6zMIgj9oWLlla2(oA~S-uerH}Nacc#Ml*u~IkuP9 zl@#A?YdvCwr7)Z@OVI{rPWy(eH8)m75}65&mVOz~yD}+()d;;GN67OjI3*K*Fd*7~ zW`drLqdzXC<~<|iDdc8rSWPvzT;<;XM5JOdVrXcEZpd|ZOtwq(8nZ>7jL;L*IlV6O z4AXY-iow>>nccy|0k%Rmp>#y9U-d)t_AsLPi_4KrFWz6q6SFlXPy_-(pstbdUz&S$-{LzMb`9H)ZAdK(*w6T#*i7cr`uO+uhlL_>rL`33Df4_<;rsHxH3v}*njkYayM z$EE3_X6m1UC5YV)>#^9rQexlW27esJr6r620(Y~I^JMt&HuZEvIF zYGKg{b@Uxh+KdeBT_VryYbB`^&vyu5ewH6C|LZe%bfAltOfc4J3N7jv>dpZ;^_sV^ z8tloid1$?GJ?zxT{+TzBJ#x|O>%}pOl>S}n)V?*PVgGvilkLN=cRg{Gt3Yg(z`nU~ z#=Daj8Ej+{gbdTuqcRSv7`BCFacpQBD4Si{Y0Z8J20;&Ok>Z){OUG|o%pjKVyPB}S zd-uy+4T%=%r|3r=m^3ilJ{}}z5S%B_r2mE1l&qH{N$IAtOB!%bw9JukwD3xP`!xMV z%B*-s)ev!*PmD&XC2>#sZ=FBLC(*@5mxZQiSZ`k=?D5b$B&U_bKC(~n?BkkHpKSuEU=6+KD8`68{xit3$E z<&qbiccHaVohoyd1BrFV=j7#!x1w(^>;Jnl1wb0Yim`+_fc3v|=85lk?DC9yZxei{ zbIMmQzM}}9-SmN!FX&6MNk}>}%I||}T-ogTmh4-3V%L7t2^W{ddEMg!9f;fIN`rl& zfWzMrz{6A>YKqie5(yedkF|}z`M|ymsvY5>UcpjkrEs!+5^S8A=Oi^JO@3Qz5!n}G z75QiC%SaRROT)BYwMnwuwO^htK%tvy}ntp!TCpo z35qBt#D6xn>!Shn>EF}vDCPmjWibi%c9W?3(ee-v)LDdYUv52beR$ac>97*;VJkmcl6Er?`!iC`aZ#Sp@3-^=SIRut#`Rfd#d0pwTBbE` z?rkv1fxOX5g)rh&ojRDQP#V9YJjH2*&w;17<$3W*XZ@U8AH4XP-BZ6);GjtocM;_@ z2u2^Pgg}6SI2<}mah|QSxG8XZ`=rr>IBL^eyaMAUrdg0U`uhW1mLZ=_ze|+eV5c44 z?{kkLV_Bf{JeqCxsivkq`0mqked>wLNlCAf`&Nj>`&I|$Ja~MNY{tw-`ZcR>?dRu7 z1LgFIUXyh_isCE&LYuv5I4P#62Xp;O$O9S9UK6Pw{M+2tXX7U7<`Rymx<;IlYwcgd zx#Vh@Y+ee}Z8YPLPM+L5iGHDHchgy)Jat_>gx_H_r9ZdGbB2;Z->OBqC}Hv_;cdgR za5R8O?iRybs!kNcL3%k5aJMn0{&IW474#9Jzvi1|RR^B<@X(*Zj5xVqN239N+$=DKm3p z>+OFhC7*u|y&A8i;BQXNoq}x~DW@+ws55|HEz}Dm`*2@){LDp+(in_t1{BT9G(CN0y7$3 znJDCO0&sRtI5oU$cg7<#2z@>*SV3_{n6nOXa|1j-4TfU)kT|)C;sKHtQO70y4=x*aytTvLw!DN#%$K}6O(uv zE?Kh@Qk@+=_v;a7gmxh|f6{;}drO`KZ@pxgAS6yz7R@DN_%#vsK1eEl%ore@^Y!;R zQc=fu{DpB7Lpig918?r`oYn)K*ogEO*%Z9pT3p{Y&x_0 zF1&ghX(cxo$u70OrgRR3)%M(VMQ+#2^-Y~5@>lyiIKD6W@$nbs?L4qh}zZ1gUF&CqBT0Ak~By zDpx$sN2lK_SlLRNOBQ63G?8oL0_QgkTAVR(HFsH7YVzExDch9(64)ZPr^old)Ac{; zWi!qG)HM{Mg<@CD>hI8WMz8da{ucB}OrPuM{YTW~dR)3US7Cpdoy0z}IrFL(;uTpX zz@VL{N-t(Pa1Dh?PwT84cm|ZJuMy^#NWJJjNv+RPo5rh2vZ>eQg;wupS!ejAeU|PF z;0dgKp43l1w!#>Cff^c@YqXFE`Xk>n{0B;3zmQRKe4Kb_|z>BstNoK7(-2>qcFoBXWTSC+tveiw=RK3pFbd> zeMT)w^^jG|{X7K;tF>#n0M?|*B~KOxmrl{x^;>4ep2t$#oqFTk2^+L5MVvy|G1^8h zgOk=;`4usr41Dl7oo5&`3Q6|w^KA5-*u*0y!BVMA%(pA&bnuD;#o$x8ew*?pTEBrs zD3mtq(&+8_lU*?*wgD*;8VxQ6z{77x!I$V~tm0O5D?7Ze`j}6GF6qFg(s1=;5K~G=`wIIdZ5IZ;+k?xehph?m?wd@!O3`cFFu(fm{280&(Zr@CYrBw~ z@$^FY>dQTB*w`(rf@2&>I@dR;ly_7f0pUKa*c8u2UCcUJ@NN~ zpw`5BhM$xWXd+qnG5z^ZpKR}czi`4bZer65P+_C2ShxQLS$@xu5s5!*`^IZ5*Mp0o;AuhI!7!} zx8mOa040v1a{-(|?1QnSt)u%%9e}aS0_&P7p(QwAX-aR*_rQ=Bs5lZ@F>8@?0_;ZYrf3`Z=TWKsNfhQB4$?CWshj_`>50x2>aEC zy)dy7i5=5QRZn9j5%gZcZlAI+<(pX+jZNM6ps;i_6u@9kk|gaE>Q(sfH^C`Q! zT4VTz1LR}_q=swg?KsV1yXHQ%OOAGj{tqZ0X^hHcn*vbONt{X-A63qZ?V}Xo&{6qr zJU7&ukcy)4oe%u}>gdIxtaD^v=MziDmgW*Yft> z=p}M)|Cg#oOd*s_mTPy`z5o7=q?LWV;M)DqqQeS^$c1bw+t2`W-{_i%6cO9}_PV@y z{QJ@ptPvba!SS{1lG!R{k=Ud5as{yUe zau==W3$&{s3I=O%$6IcSOIow?+Da)uYo@3o=6oCa65@1RVjB7N-wm^pOuO2A+@IO8 zlSeXu!kv3Ggj09!Uc73uuq1Mo;hJa7^0@BEF(#u!f5Y2YsL0!(1@#a1@G~n9lqWCk zG;nQkj${>qu!P!Zbw(a&)543qRnXR`=cMe@o^Lc|UUPc*cwqizSXKQ^+@H-dA7V5Y zEzwZe6I{#}+h13l?K)2S35tW>kiYXt)2jS*>Wus2l^zy-kicswj0Jy*hHk^K7f#*4tnp{kI>@XVIET z)6y;fRphG*$IYughC4@14#})U~EK}KrJ<(*aQ z$e@x%#71f#Vz?C%zo!^DlAZnWileOGiL8^*uM2S3*nDaigI3#iJ`9Rc*)&&jFp9SxW zyf_v1*zlwo(Emn7VJ3aNektQzTBEW9#OdVNVVS`z&MaB1xMjf7*5g@*1U=CD2gq*s~HdIMkE87dT;BX<<%l&avEk z9)xJy&#wHtJ40f%w{I?;nnTw)5|%o+yhc&mfkjQLq<$7$~)qP5RN z1P|--$f!<>z-4D{B-Kig%_f@7S1nFIAy32U z)@*m(qi!n7l2OETFzePcto!ak=>s`dzI@HFmZlSF<^@ac9}(DYY##PH6b237g_SsD zyK(i;c$rxn86_jh+MC}`gPJQ&;D0g2zsXs6*iWor9_dWidBOw78!3i-G`0rUd*cRx zeFrSMJVRN^IrHVjs!tHF^k@GA$S5WKYxX|GBkIO9);6kWsl-{07!8Ji9+nE(D+ zE$wpc3a?Fpf1K+?V8v=X4Xhxp92(8uE@A zaO0q^P>8EKFh?ZN)*C|%YrS_k)9wzC8z?d{GFoHi^`vDa-Gze@NYfbva!id=1w zxiU+cm}Y}Bb&`8Srept_R?vsx-fN&j=G7#=wrRDyhaE(NpT*KJ;m!79rlj%<20K=q zG;ZN44cxBwK2`}Rm5v3)bk>vlZ!JO*p(5v8>?u4KTwx{Yaq~RW>Y8`yMWq4~HbK8P zE8H)Kd9sN7=AXL|(dB!@NApIwo*9afxGM|$FY$HZmVKWHU_J^&!Q$bvC+x?h_7u;G ztvF)}oC|aCv+{lYOcDcmIX%+Onv05bbeTPyr@pz$;2rf{-LTenOiCuH%LtZGnd*N3 zZvxonrOP{oh#-3dHQq10#jte|1@KKt6gAi9Dy!*+8CWkUx^SW+mUP8^8jt-8fS9u5 zXfrYhHgn$W4)LdMR$Vghor$Ko94~b2CM@b--qrQMa8>-AxH!ajz5jrQ0WwefCTIpO z&DgYJqizmR=ns1|&%V8$JM47ucb}7L<0OxhS%qx`Bc_S8m!-1O3bNiYw#tH9+hn$e zTjP18N^o4Lz>8zT*FEkplGwyk>2NV2jv-!8%7|8C4%`g#0AUA$X{zky6+f;}mx#rr zUZ2pG4y3{T4T>ZWNH`;b?Gt&A5sCm_Y726>N-qh#ReZRDk~>rm<0jsvff;XP4Y*$Z zoy>s+%@ls1vr?ZbGRTRUj<kTYF<-gRgctpZK`{C@#bHana%@6Bf z|BgnClBLp5I|I$X$S7)rDxiKP&DJBQ2;p_oPQg#nGh{I)0qR|x5LZs&Ag+2A9n3LW?>)+G0!Br8bNolC8Pj~1vF-wIv~c}k{m=4uabq_zgDqwTIw?{9vp;lD^e z`NYxqd?`}-p{;eJ!woFzwA*T-qLtm?jB@tgK$NwEX-JMz8&?0b2|?7I+DQ8AQdhf} zrg)M=`@Gh%ABB>zd&Dwn&LY=3K31fQ@JraPw0acF?C}{n9Ev#W=tHX~{UOu;tqhL2!6p?a; zQPsL?O4DD=6yH6|`uPDdc^I$X`fO7NsdJq3=h@UBC6_G%h^Uj%Ah4C3coz|M_YeV0 z?QE`R4NXA|_|sa)|3vK~yk>|Pq%v6{vsinA5mn0%-OPhB<3(2De|}kL+DrzVW0K$d z37j(cbIWwQ8rMmEEi_*{=N>gv8~x?~hRR1ROrRXFjF@zOQQoeSc}0G$ZK?Pt8>&ig z)19PgolyrJwb$3^p#n&9h&FZ%y{;g!&GveUtU(w(sfx3C&b-zU5XzCII)WLz+ z-1;||8crJFxO-~qDS3`I=TY}~xUUm$nN3Jp1b9pd`=f;BlJ2iZ+;COyXX8c%^TSKl zu2}~%usFu-O<%UGc1mwwV-D03r89-<7mL{;YiEZ*?8(#LJ1ymfHcGp;L4&O_s0o2( zN*ke-)+>gCL&VAd0OV0x^wzazYx^oK-};}|4hr=ReflKu0>U)4YH6n&wGG2$an!C% zV6lgj%oQG^>>08*{^ou@XEWogNuOA2JVZnyly01;{1TESv`foJzX>6>p58|2h&P0% zeCJysj;*9!GCGLwB*y7q`4e@sHo7VQR9Ju3Rjr_GOy5O{+&}b@_lf}~Wps5`5QV9v zq`Ujb{|>)nqBP5)$E-Un*KWb9J@Ci->&szgA~y5zk|bkcbGWp8`5_dDbKqvhhH)yh zdAO|~tRHVviU+?X(HPDLtL@@LF+T+3=Jwzj52acWo@rm0eUbCO$0w-zNjzm4NJS+L z=!3O=d)jf9qBUK|DKNVl62(7_?iKG=R%!TuaDxXe5fWVeq2hMl5r9p8phQ>WK^ zf5H}|K%FrQldTA9G>UWN301(ftPhHkC-;*J?0*2m!kpJ~ecoi#xc}rs5Ru)NXdpFFJ$*)KE6C-$gr`*d2}WXb zLkT##C2kGoxLz`j?>$krcK4(oX3xxh>200}FIT!@`UZADzDxCN_!wt)1uJongKHO$ zZ}$wj(Q;8f^FkQ>1&|j}F7EjDd7Gpv-XHYcIeh(Z3!l>3!olL22>!x4a=gRV39Kb# z!lUtQ$@LFQ5IliNm;051c!_vc3HJpfo)g|rK=8%iA?&76qWoEUtAIT6-oF?&TV2hv zF8sUGyWK1URh3Gxfy|QKBXS|*1rcGeWBDS}a7z!ScO1-O-ZLo#y);kvDyfSOyE|QX zOpV){h#Bk9p6yxnC-*NY|8)^?FB`Ab)vZCkJiVIH+;mXS+0)I7lPB6Gn7Sq%grCdF z_iS^A@$j$m0vXS{6u#+w5wSFK=(myUOXaQ@LaGq+kX;a;1OU)y?f!K9A_Pf9A?%W- zo7)BW6M(~Vf|1gYT@TX(Q#gfwdh7w^12MyW^>S9ltvUK|lpWaZ2*36IK?F`sDh{{Y zcIZ@_up%>_@hc1~-N+ttkJoBdYs49xuRF`{V8#@4FASE;bLdE_?%hu7JFpRz-`yif zH70cQDK~%sovCPv3DPa_;>QS#TspQ=*jv?ph%fhIMHO`;YWyPwJ(4X^I6Hr$EYib zLyYNc(+^q}qHcbF;L3Oq!`&#dil<%A8^e5=fH8qCIR?u{)Zc5w?j_yE&xG-jW!boP zZNKmPH>qcb*~)Y)@&0PUex#C;1m5vkWt=s7~OWVQx z+3Qi+hl1->S9(>s@_MK_&Yz8I-tB**5+Hw9;$pk8KSL3s=Mq}V&j-RG8(m(``!;HC zov}-23R)r{w?RlXCHd_|xzsGDm@zTWeZOcUdnBPvBQ(YE6Qli}@}~uWx$z;dl*QF= z(mvSd8-86*0gD&ICtfGzhcUoCker*^P6qea4DhpkyODWY~g+U__3^ z0*9t=)~N1k^yQ>rP1@8S(Ap#JLMz5n10bXpX)$ zpnWjuNd!taW!vxSQuJn0!6pk8^>`$$%TU-T?KBroY}*6fRuLs|%Lp*h|C&>=QTR^y znb*VTdnW;AH_zFrW7lhZ9sFAqd;hl#%oouRmogb$4hwO}J|~-DR~r+Zox1 zOYmIfHfZEbn%YuMyez_3LAv6Ug@+s;WWDTieh=wrpe=eOmkIdBk-jX{d3*eKlHY!! z*0hN{EsGM{ziPI5zvF-{7Y@dz>sb$$gYZxXNe>utvWK1Rt-IhUbPBCT` zKq~TapXbh_1q1vkr{sQ*on`Z$N_vL{v#N=L-fWxYN)u8LzABJw@se5c0wC>eY5_TwH@TepMyB_6= zoBx~3CDxzV6}inQbE+>HlDO#R8qh?%;?*F1yQPtk>Exx`F(u@TA!=@}p-A-8=UzIP zagel1pH-rwc>y?Y&7Xn9_tZ-Q!hjQen!{bOJE`1 zEE(kb-|eqOja)31ck4EB1{39|=v605$v>;xzNWXIw0rSwed4LGKCIVhY7e+}(4Hfo z%0YxX8uQ8KG#xl7qb=mcm;vlJiN!T3wCs3o`69l8moAY-J6!;_mBYCAc(-NP3_AZW z?q`Xh+pGu%euSGRYAhSz?N+b)i0=_R_DzcQ&WB?!MMgaQ=hPP{T6%>eRoG#^i)nQsm@+dBs6MwOih*o@S?U>l z@hecYBd=+8eugRdExmX>>)8XG&S4RxG7^w6%Fi)tlo`m{wxBBM2;$4?WaBEGO|aJs z>_DqXkJY)%In#L5rbki3KRqQQsS>mZGTu#7ldp&xg^P@ZDm`l@mS|H{?V@JDHF1o( zMqi1_exV_vCy%4sYwuu1VE;-c%Kefj`iEftWapXD#-MNf;wyjhjTEj#hIQ7~Yb6DD zI5{QVvR-3NvS&ZFa$yI2;K5h+`*cP?rDqKl2NG6Ei!^E-?7%1d(w^b(V%SNYc=aR9 zFnRGOP@Bt#J}|J)fAil+Ps`bp`uW&m5+DCq>zscxowP0N0&TDV44uT*#$|$f^-<#a zO;R~RR+%rd^l@tTm9&}7^6A}k$biE$^~!jziZ?@TGGao`e+M5Td=oND>$B$T87<)U z*TC~7eXT(wl@-N8aqg7ORljd<&n5V63Y$eLBX?JRcH}QQM>LWpWK;_y z|1G+2t;l0BO=fB6T*Uh`uTVy#`tA2$Q zyYsOUWId2u$;e3jfZMLhm&854YTHU>SvEhYfC5Z)34n{JsZP8+5Vf%v-uu|PGX6F4 zo5L-Qn`6Su9f}uPu=do&RW^OWL<)SJMA3FHmW{Q9Uj6$hBF|>$_ z<;j0TMB)U?^u)VzR_BL^_$N${Ue-RwOVRGgHpABCrq@Mwy?J-HMPxQ~AP#QFd)gfo zs?93@%+76=%18iq0Cc$!R`x2UqV2OiIgO_(U4uDAzbt}+P7F8NljvPJPl`pkNDC#b zyuD5>PZYHu61Q?23F_oNV!IfP1l_ssA(tiy^1%ULbc(fUaCN8U1Br$(p3c;FW&=AN z4pja}SnKJ+P^2B|8YAZ9uk%~hO9;p2Nnm^@t;~8eQsy5d*tn9Xy3u_kwf8S!S^j@d4*UEX)8J6%abm%37!tX3WKr)Dl5+bDEoZPbO`Xq+;GyPl9AX(7bM_QW*LR{r{bHO1r*1L-*!FM;e8MNZ~Smv`8ajwpeJ;~u~_YvVv31YtE zHOxK{$WUQPUa$LSt+)cI00HC1xXKHr{;QjV{{dtrtMoJHx+If@j>13+A&9bT*>{w5 zTRLTQSYvNNWX{11kE)oZg&cbjy?iZ6U#ZR-fb>aw7fr%p^>T?u?Rq+~M<@~_$1r;E zqmp~SBVf6MZ++l(o^HK#n52zS89vK(Hn+xUhi-Zcov;4{LPELJm#K81nM6&*Hdo3E zn4nCKoe$$jpRcOLW*ROLNMI2M(_|TM?y+N0<|k)=Dx0Vel79PjWOf`fstmV50ktBk6kl*~5FXl6Jy{_{E%n^^#AkuHTSh8Ie zKh(g}End&2pTZqxW7l2S_WXsjn(Gk%MKAd*P^*eA(ORTJ`LGlJ46q)YuZN5PDrdwg zK5{@TY$YPK(2&9QEu3jP{=Vu>(;$){hB)0*L|y%uRkiWA94>W-A#d2=iNT;|_j<_K zZ%pn&iDX@qV7?bw-IlJh;$Py9DsfG6br6Y};9KI8vWFAx?3q_dp!Fghae8uF75z4k zIMM;2-{nOGJJI~8VtG^jb2n>d1uq{3G@&{E2FRHW>f}ve{afT7-LX>fI|GN2-~Xhk zsF~r9|JA=IG~X11YS~wIcS$?jOc+Wp>WMC|-Ox$AUtaV3tNLe(h>)SJLSCy}45xwL zl_+xg?omzhpgnBwyBxTOvH%=O}uC~k4_ltN|tPEhl7MG>bU$L``@0@Wbt%;0R;f zoN!@Zq&DRw(@>KoW+%jWxQ2>=NgE9sKYUZ|?fx_esmVr1kY%J)dycETYVdGH+<)>z zwBD4~8@mY%s;$K-@gCgE46C=lZ^02$XTZ^9!|lTs-h|>$w#qz~1A8N4Y=B}glPBuO zr^vIp1r{rRx|ONnLOyw~^T+V*imMNTi*uC@+|$^l%bjhdzEPD=<@fRt_Iozq&)g*v z5}jY*AzwWudmf{0D7kW${&fX_Q0}#JJuKki&l_A&Q?g_vks>)39m^GxMX+RBJ1nhp zP_w40Sc>KaIxp$*%0%U?L`>9gOTQpfnNkC|o(L=sler3j3A z^tq0TJB#cPc5Mv9Z==`Q3#7}qMV&$)^PB;Ko|2asTLZw*%%l+IuS|N03W!!jNGA}K zyzFeM1cfD;dRPBK{Snn|T`fw#v{s32@d0x@2ixlm;fvA7u!JC&aM^J_k?7d1O7$Q_ zj(h_F8|GzNPJs;TaZ&33h8T{rIidu!Vt4Gv{|DG{%%wvJRSSLG#UDYNw3U#MTjl;B zf+9kFz;R88Qck9C2vg{Epm|TT2Kz2rx5xE=pwyb`Zpv_YFLjnZ+AnO z_Zv*cKm2_YY*|f^NW{m??JabFvxWbWIiLZUG@G=2KF0lwF)K-i+3AV|rpXXl`Ki7aU7BpAnjAwhfy61a*cMwfYBUE z%K@f}Ynaapiiohb0qi!v%7y6N8*Y`v7B+E^zC98Xt!+5D3Z*s^I>E~99vt)o)fj~6 zVu@l~^Uc9(p%0T|9h4bkt+xqrZ#Vxy?(RHVACoUa2A=T94p)Ox!XoUiD(_Sn2yC$5+F50Y|s#Asdf`TIE5(zChB zvlnpKfVs?tpV}REs1F9STSuQnXWje!jyhIfmXtB-neO$M_oC<)*;vwIF{k%PxQxN;4SBmxkzP4%q+cmF%Ua$KfA9$sqkIV(dhI;NhOpntXpvGzYEjCWrMwh9rnHvi&R0 zGwvDk6wo!Whga3F;@@!+yI_qe-Hx@&TD1gol+5LT#y>@D>5sR4nW=1dSYwu)xxBn} zjM0ZoFR^>Bm9Ux$IYu+057Q|GLH_t4PH5j;%eE2ne2h9)5abTl#jEa_I(EE=l1^uX zPwE@J<<)H5*565;q7438QZyv`O9$oc-s#z3dpra#k@Y#piHW+(eb-9JqYuW3I(CL~ za!fU{ynP)+gbbP{f0mT&m0haqXlCUy@Y2=uI2i7wN~9=rmjRG``Sm-WrU^q5NUbRk zuDW!XD)5r$-PXs(0Nj;)XS9P+y4^NO+BX%7-N1~JT}NM<``|lwC^ya9sQ|#LSz9dB zK3sLM1+ronix&%_XcXOTfl0&TCnqn5M(|y{A%abTG1M*ac!Q_Uz8axUWR>3!{jTHf zX&w+)mqX?*u`?yMnL~^3qwE!~`-VglCh{Xu@5sR|pR0JOaJ zFHfMkMUi1RcFytt=TR>0rc}O3S2AXh2;!?VTtflK^ZcfW^7`@~gTL<~Jeb2VJ|cp^ zXTsa^t+two6pAHGI-6grD`~;Dh;JH$?ETuP&`B`BQ8S{FblIj(Hskl!6^2%|Ff{^* z*@aM)R;CMw&|=$)M6 z#;+atIzXO-%DIohOK{c-AYGnTfkv6WgqV}%HB#@x?d^~SP3G&u3?m&<7UX3geDZm& z)i+6eWl^!&Z%xFv*q1jBMxx@>xn|j+o&l~0gU2ncUa-t|fCEpx8KL474ynjeIP?k? z?vT2?$DO7S>#H?(TzL}J%aqQPB>Qy~s}H3z$ZObgEzJzQX#XX^9h88VU5F3zX`)-uYwD90og)d;;TPS(M9HtD#)c;w#dhRvaOen!E};8j5nco`Id| zWkL`HMXEZl{2%&#qOgnHhimi_fY58^8P|*6Qp+NsbxAmk>%gyJi9+o8+d%ytK;q8p zp39S<9ylg`;9afYLYz*XUU`^c{?<>{Doa)qYx`#8y>?+`2js6cyWr z7L7>%Zl}1VcRMc@2eao3gj>o%~gjO zgK$g!T`K;2_)G7`mCBhy4v1I-RIT}(e`iHnHN%{_LYYrL380=%#6)+^=SEei(9VvZaB0KcgXesL7{xT!2q>A0= zv4+alw@f3Cb&Yk_oT4H##@zHrUe2*xMpWVjJKByVrbe^>uONWZz2Rcced!-Jaon=P zW~@+#$uc}UmDBLoaQRZ?f}8oHq$kTkiZvM{=i1`Wvnw2$DTuS)kk5R*{dWwDP>`b9 z?44O)btSh!i|fO{2_9)&?(zRm#~8*7g@s1>in7<|>4MlB6|;RMld zS2))8>S)9QuAS+)u*v})&iz=TvV>zF5?BYI{UjVn^Oh{gOJsA~`rr)xoL@##R{LWI z-nf5^wPg9E=>j_eZFStAo(LW=oVi^U^5$cp zP(4S&+v&ap1V&J>gbBxs=Ue9M*9IlQ$9{_Xn)_r7ObG>;BtD-*^+ z7AP11e}oaC8l6AB9zstn&lI|jwLl3Ume%}-%!3BDrxLsmaqbP+FKcP7?Y*_o;x9C@ zEr3N-O)Nth7bqL{8VxRc;F42};nF0^NeVPld)$kQ*nD@x)I%$?5Xj(xb-qyc>Kbdk zzh8y{7ips_Ox=0LTay0vx@>>1d_0jCWOs`?-pDO`4Zp6~Burop2z=}f^W^#b4%mc? z87iZsKTe}Y+*`%;^MB6(enHPFs3Zq20b2|HL~CvK)9a0YXC0-Axn03A)eNC+(m7~< zQcuqqRc`ALI=EHJ0&d!kPwC@LNXFN*fnEyrytg$UhC}=bYaDQXpufV-pBw##%CtsT zz0s^SAg|8-{uv2_^Egq8mfPrL+s-iYw zCTHfU3v8;|SnIvi>-_iSs#qm`QY!M|4#4-dj=jBmdGn6CAs}4R+nU<24RE?_KYj0x zM~x|ii&R)5JD!46{w=oef1W)b(FR=rWoK65_VQ_Q=d#BHzuY5z8g?br5 zV{n;^6$4w2!?o@C;uA&^U%VHEgIMNkC?5}(>FI|JB9SDHtYcn~=yW9fLHcR%81|^( zu=12#tCuMN*n(Qe)SmjBHTIe0&86-Ro-W@Z{jn#UgjpRdWF%!aZBMQ62_Q)2%)m%2 z*>%5;_ty6B;|&01F46LlE*n=u3is1(FTTEiHnS8{nNa{1>Gk^W`_}`M^1^^~3-pC7 z2x01c53UO#Hb@IHi8{1f8|Zf(umBklmlkN&+x{Kz-1h$18r@bjzg_Gsz#OMrY1{f@ zRWAx7qNHaa1K-er`~B^Plqs1aMvs-~wVQ%=FD3Z$R<@Esr0tZh0M{k#mNQRIV z_ab7ga-`jC2f*Q@j4UEV0dpZG*b(OX{&+}dEtoV37?pW`@l}@DydNJdO;oFhCubnB zVl!p$vD?3>^}(W}T#Fo{O9OtA#@(-_y)+n|FbNwoE<(QO%d1@J?`%F8LkAlzQ>I#j zo82cZ$!{0;PWIov3=z4Xc#9!l#(UrCabdUR-vC5;Dix8U1#f0)Mz+%5mJZV{URynb z1!66iPg{1w0%42Hhb&^*Z`Y7-q5S)K`Qj5KJf|cfU_oq*4VTmR-wh)xsLDAi0cCR6 zBHHPww|)HKBS$C;F)mdxDEdRsKds=R7-r$`B6|1 zrM|v@m(LJJ2+VlsFmH$sH` zJ&wb@xB1%>4K3`PPBZwZfE*goof>3`Dt zTK3Zq9&?r1s*BG{Y3PN2M!i-b7Vp2)`vfco10+$nImBZ%g|y#afckteNTo5x z#!~CkZi^e=HP-$#I(}Ef@*?FFj$p$^PFU4Og8S+9I71m}!W)=~XZH|j1-?E0J-tov zvRPIpnI>j^QAO-_)4}(@V+IKxLu-e&Y^j**r$|2@+h}`YtuA=}@u7?@(S)sj+I!w_ zeemc-h$CYfv%3cd$PY<-3yXQ}`E6`Xn50U%&Ruuek9z>!u*De1&2h_C7dhQ;`HSCO z{9<&^Br{CrOzUf@A+Ms|{{SQU-~tO1naYdhO9D?;{ylX3u=M%mr99cB47x69Lg(J+ zDed|%^*8A&Xx*%mh_%2L1`?XJ6a z8hvpI)oI(9vC3W0bO!X-Z95I|If~1sf5Vi3!zuJWpCi5Sh6+r*PaIZfOphi|M%{n} zk**-?JWimcl}5QnOt#SL_3hgh0z6QV%8FE-24kDxH`n*B0nJrpvUHMd&Q7=ZUiP-2 ze|#|wPVV`PQnY1Qh5<$Gpd;P={P5v~fdbSAQb6}LOYSUeFSpm`RNWFH9&$4f92O?S zRT>Y_TI1n}7DT9E(?}d<>Ka^arHS7GdtTu0wZ^!ZZ~JzZIh2_)WzNOG z-{KVC(%%d+{ijvDZW7Fy@2do zq?v4?h*RWS$+f#*#swWY3Zw9W_FkGzC%Hgs_mo|;6>9{w&zE}X7$dJa(nH&aeg}SvPRcrhP2Lp^0NL8+JHiB|I`0 zYc51)Hn9NPaBXdW=MjlgI(ePvm9u4uT-X-2z4ZQjdf_x}9!_uF$)uJDZU&yZZ*9Ab zDe2y5+CcRPR>}j@wS}$kHes&Xp88+`<5h|^A8MMO5_)t5*jvc;KeMHjesc0<1*N!E zKmfSPJ>b52jlD4if&nYAhBFRu8rHjftzo~6N=%|M(wxhl%b9^8t?wT_{QBSm3slkb zV?ge*45)6m()q1zZKv+`!@LNLhVC2?t@nTozs1;of6osLt36gs>LTe8*}xlWey8*G z(18Rsa*VcNm<+3OqkVhqd-*Q!z<_qEpj_4A2G0z{I{GnPd`87lfEl-T9X z+THFigaE*(sDa~)n6aTI>Zo+rO>=58leO=0gVaU@nc{@IFTZr!;`y}kVf)-|_IPQT z>ZOq)E!AlB{{Zk*e}4EhQbjZo$s5NQIl5BodxLY;)vzu7wg6{}N|>conUZE55_`%R z=t%U}(EV`m2}B635C-PrH5S_7{w>X}FW%eO;Eywy9Sf)}t@o&3!_JQ6>bX~kgP3ljjeyDd@{(g zp=``$h%2?NaeI(K7r40|dyE1Iqz=5tVwsB~z@qNGh3ss0@%drU24~8wl__*0!NC?? z4xx|hZP@t3#uzMYW6TY;zF^C!AI$#l8GxgN#mIRLg`aHKD}RQ^PwR-Ol|x7&<_y6H zB%M20eKy07)nMhY@WE#7YS2JpR zpF8Pcz9iFyfz@S3d)eZl_#ZY3OTPZ>Owwo~_d0yMD%_dD&b*53e`HmWb1ENBK*IZI|L zJevb3A#` z0x8Ui5mr^x_^-F6uk|+JpSPn8m@U|`QL_#I0H>dZHr6s_c|ib$ z$N;$mTm61rv5m)KVNnU?p^ulA<-gVXYmVR3HNIl?vgYvq~{=J&be=w zzmHw<^aq$q2NMU(h>p3mR{ZzBgYol(h%O&J+}IM<_pe|tw|%hO(=SY7!7Y{48y@yP zx_0%%9fPc7NtIM+IkzKAk?ZvHh6LoERm99TupNv9RG4$s~C*23}A0NN( zg3UB$H5q_cIkP+HH1Y?V>w*xm$988xIT3G(ltR6mS${Q?##@8GC z4xbD~vk+G5p?WS90zcEPgZJ}K4rMxJ4lk97zL&PYFJDYCmP09r?#`CXKqQ|&d-uXa zB@k$qNJGgWb8<5%2gv$szvY3)AZ0n(nV7N_Ru>u_K3^R%G77Rdmhqp)k!VQ#N55^p zLldS#>hZWn2UR7H(BEO>02SGag-FRLz!fK`t+vg%?Sr(esmqbMg?d0$Z8YD0!++OI z4S*I1;T3=?far&{h3)h|rVvO&UO-BNn4vZnBVcdv!bk+RnF?LZ#0;fa-)~<}TtJa4 zqr1lzP^YYw%shU3_rt=$VJLx119BOf+V==c4*Nxg=<{#)RZWF|{ySz~Le9WJ*%zn%vb^PjNdC0eepRewMD2xmOUkuE2g_$zP~-N03##|Byl)*C*F~PY{Tcb zd`?-HExInxn;|*_ZIs)^x7S^~#v~FW5V@rc6@n1Ob-v#$3!MZ^AVd~#^3Co)gz1N3 z9v~Sc&g{iBI#|D<(0y;)4;p}mJhAGc#@7Q+ujzYkaDXiycbWQMM$*9Az!A3E{{UPO z^(!2V>Or|T(`#PLJv@Cd06Ayokj$4R#Q>Ku({rw#Gy~&_vzB2bWz-f3z> z>+6GN5K6&8j2y@TTTKAld?=+^o#c~0F4_R# z?B4fbM$es85Awil z_tYJBJ^uiE;28{4Brhj1ln2cnn!`bqjX#HfhAc%%$sDJV6v>sjd4MQ$Z=lS7zic!i z{`4Ej5wi@u!`)B!^WzpIjzFrZ9m9^0MTh+9i3A9xKw=imb4i@~Z|kq`SP7+yRe21K z6x<>*gSOVTzbpeoOHr8$WF%WIfT{deAD88bM!A&bX348NxfRd| zx)|Ax_qO}x9lLtqz^Y^^ot#)OWdqOyn*ELbXM15-6N)>sWQ-$#U2=@Y&z(JgOJJ!9 zgkP7HA2wr{4Bmsry5f0U1&TLUgHBP@ABZOaQ8Iy}5u_jk zp**{dNGH&CKM&0pHwQW9TG|D+U9Ji3>G8vdW{;Af5F@xZ*7xoCVzhEeATWo$@0#}) z(%byKZ~*cLjYJHF$VcAgCo#9>rS&KJVbR2JKQLXG=E^i66Q|{UaW`=BC?qo9Q*yh2 z-H(B;z0L;{mQf~WvWsP1RdurV>fG;yFm-Xr!RLWc$e?J&tOuLlL%Ft_eQZT&<;n<- zRUjcI>Uwn_*x~_SEzsn(h-X~gtZn+@QfH`axdSD}VlGOPVsed-pZU>&Ifvc#xmgGb zx#Rx;R+iU&0PlS;A$ZlKF7hC*vuujc#fZ=s|m zUy^0aBSEk#6%G4a^V83aAQn|uK#3AVBWD2LF!FNV{kvcD#c8UeXqg10Tx*nz=x_Ls z#OtU74`^gYb0MAm&=Wv^5x%$gM*gE*AR=j_HPF_yie5fgJOS$D5!Ov$oB)gL{veJ6jLU=93{75r+H0d$1&)!{9r2 z#FLp2NW@{0g2=9H3mcB2SlZuC-Y`B$R6l*0(Q|a6j5ffHH?_9k`I{K(VjvgJ!XN(K zvV*0F7W4eK!C{cSA+yG27Z-3rTN~})x!V`XgC{WZi{)SDPyaEH-?$RqbPYYintyxB$5&#(rFsthuu;c~yej zO)Ph{w)5in4LYEif}GECK?>blX?^$oHT7Z3=BY^C!zlzKWmViA?b}^Gdtz-PM8#rK z7{$}lSH5AO+imvO<%S@F1ci*HBC&QhFYf7Wz__>r;jXxA8RrrNgvF|cbp-i0BKjSD z4sV_l69Wb;hD((V03yH+`d;2g(+U=n8_gSqN7er7#I>~^r__Uk&;>hv;)uWpQZoj= zfS(rp?lD1Mxo3z> ztPf0?WKnfG_P37x{{S!npCpi$cv&P-AQ@Od$ERD8z*u^W+I>zhy^S&*nnKya+K_+NYGA5UCZY2ijH^$I!z1W=^z0nlI1{{V%4_+Sob zz+`oFc-Jd2dzD*UvGq3_TTd8s8fI1q;I^6@6V-Bjek1VuoIGz&9EUSTLb1zfEp2Vs zTHueMJ%%1pB-E+PXR!uD8Pto^gHQf0HKVTdR;;WU{1Cq->XkhKqmT(LPcp2 zP|0^?%V$#?UiVvTrTl673{F=@rV7lg_Ri(wIxoGTJ8PgHA2^TNinL}*XNV-X%;XH~ z+QTuocGlQnOgyhvxmi`MvRqog4RzMv8=IYRA|#ayKQyLA4&hCeZKyUI8z14{(?LsV zCurr7BXqV|a^=vCd+VSZZ~EDWLjh=*Sf6kYcy$W`b_3&mw7?`n)~YjS%!)fGBH4OD z*y;Sd>w?b-yro)3P%^lUZWl{y@cv&~v0pIz$r0pl^2Ws6fv>{fy{r|6Ae8epqF@eY zhU!w@{N2+Xds$OCnK=FCrv z?{YWA+CY&*8)QV2-01^BYi3imu}*md6)ZE87EpyylVO)q7vu5qrY%w-%^E_Ep<~OO zxCok)YuxLvWB9hhKw7^td17co^jtRC^*ihP@rca{H+LkbDCWMawX8c0@S2>|!J279 z41lOBp}Fq1^dC)d@Pt&GN~uEwZ{+YALwUCjsC=RZl#bhE~kEw0r+4BCR)U(=SgCmwuyq}ZEg_?wNjL&GsP8y856`e+aoA0LDUmN&tv&EU_SB;#&kj*$L&tf{5 zX0g=wyAAt`d`>KrCo?Hvz>o5yQ+%V{J^NqY!Vxfv?(Ra*PUCu^{Mnxjlfs zB_AzTMCD~H8#7#ZH^0Ny`&(TwIGv7s;1&EjlX0bvzDBqZP?g}-$yq|6EILoX9X~JG zk%^>6D>S9LK*~Q|E_CgNrxKzxjWI8MOLW;ux1T~VNnIJQbCqn!a}XBaO>OIef(IOd zkx=IZh3IVF={Gv|`h9i4EhRDo%e+~2If=E7K1DjXZ=jXpNb!jqbn4 zzrzKKPExy)8Ogjt<1pMF*0*gwI2}T{jR1aI=RbnvFLk}`*zbtW86+Y%jfntfBQl}4 zljITg!U`-i6^zJ}TPZgwdk)&$Z}`G=QnECLFw8A*2_naBKVuLsRUA92hBjvkbq4#7 zI(8lYcz9+LDGmz81%k+?`futyX|9+6%MB!%l2Fz{#a}-|Er}N=Z(VR1GJ;+CQZ`1; z=egK?cE0}rivUMwlPpo#+gz$axWE3l{JUY~iHl_=G&>EL>!!l{pEzHEjWwopR!GWR z5XFGD#^1dMoHE2rXsS_UR=FyzW!F)cU(*ti%#OxIR?Td~GLz!x*F$gbf}@Xk2R9tV zh@oX~H^0DrFz75}BfBJF3}}MHDfig^qto)h9hD%OH&{tga@uEK8+<=@!}B8M#LC1w zAABh3(`{{G^7?lgws{%I0*@3^|)LV05fWplkYXGs|GUhDV z4Xt6`{{Wx&YK5l|-66QjZ0@5bKC9Rm~r1m%cFlY-9=@Lrqc+hI7p_E_AYksG;E5l0DO)4X=Hu-hAE#Mms2le=z z9-Odo)0QuI64q80&}qGhC%4BB%M}u^1i}wbK-oYxAlu>Tg21mL$(eIySlD$gT)7&+ z*pq#1N9X4SSaUVRIe-Hr$j3H@#dPhbt_>MQGNQ#%8m*1hEGc+mBMp62VI(%t_6G6rwz^lteQnC%rw00n!bl4BA$BaqLam5$i43;a9 z4Y$95Hs8=5!vv>QyM4&CYySYsclBa^SY3e{c$1e5vRw>molScKL_Y8ag0H@ExUl^wgpR}v;kz)!L9Kmns06YFz zb_K3;nHY%kEw603viki;d_={~l*X>N{6zA>>G^hytXUy< zR|ljZ_d(m?`?dfL95n_kz#d~gt!*;=eCzsRylYg%xl|ol-2#J{+-0#h+_ImL!J}xT zY{oem6@}UFt`|+J~Se*`lojmE|#HEe_SnDi&*HBf3vX)bRt?j3A+fR-o zlAAF^Im0rLUqPN0EHi%=me}^dj7+m6a-n3(2TL6RBoShC8r$VzfDs5U zonmGx6pZ|!x@HFLd+qvZ=Gb{NMN!OEF3mq zxmqJ@lX3WOr(thHi9iuqqC&CdaLHyF^J{gw>8-o`uuue5$n7h-r!6fL{s1=L*G=&R zWn__-t0^uQF|%c1_`ln0`s{HOl%gceuI8f5UF2-X-mn?9@3xoMOggg%DH46pFpGph z!!Emx4z|?#Z-50M0sv#DT#Up48|h{QZ*48T?`^C#I2+3xeNjdh$Sk@Nx}3+;-1{KrWPDKfAupthbu+fU22jub?sE^`FE@2_IL z?YHcK(*zk|1|?Y1>=mv;++BO?uIJ7ScVtK>W*S*b7R#qr_WuB!Rr|cHktA{*e)2G5 zAYWSnuI0akYu^H}3v`VE1yu)2mwRSyZeE+ZCGo+z3{^qKx547AT2AdW?>zG zMHbi{M}cb%#snn>Bb1UQ{u_i-=t7?UKD%KpOw{n4`C}|KR&azi%rD(?mi#;7(>_{x z3@s*SzfI5KVyAESeDAgp{Q-ee5p3_AHf~|exoz0e| z`}V#f9zzdG0*pcwZl&Kvzpc0VVM1ACjLFPpbj@%GWi~d``Gax^zyY~rRSA(qP1TSy zSerGiVe;R#jjk{=ENsn9D*+(0U7LTvckVPh_a7V?p@s%pnDk|`D!69Xd*(WUztnnR znHooMRm4_S0@v-;a!tYS+w-;)0BG_nIZ2VDh~-PJQax>dhTc9nva<4vT33`PZsm!~ z>93DL`Cw-)D2^mR9^9+C{85}#3-sk{=$6|D`{{Wu&U?nv(!wj;n zc-&?v6cVE=9q+b>#-4;>p{nG>&Rvb$q?J8}nt^`nuci?JqjK}Iy4y3K!+&=B*zL8i zrn_KDv8<1AH#W*tf^^$o%f_bLU`PueYG|H0(uR$gh!3l5UDv9KoEi{DLl(@aWwc;cic^w%qLbYPv%Yae#N_aec5 z7zBlo)6DLQpvoUVNzf7iwf4XE!J(dIP>+?=z2$UYc$?egI=pMAi~tsC)x(1guI`G= zE-&X#!Zx>UG`=ms(UPN?8!Clh0rm9s17GilLk&4vh?X*BjI(9TSTiG9-oG2~@xYHi zGs)EDZlUv7UtK}mZTr^=q?vS5>XE*Ron_X?>MVb@AtOf6g;aMr@{a63g!JjB^X_ng z1XG%kQ8U8jGOUZPW2oJ(FR1u7;TnV*cT^5oAS5(VB;%T4vluTvEaFCk?BMf z=Q483lt}|CJ+2nw-_IHT&>(ITD>#oTx;39;)G?_sMWvX{m_`({72d;J;*S#&rw6F! z2O8dd=8f1ef8G^F|>hKK1CMgtbIgS+#NQ@)uYF3yJ;R} zL78<7*}(vL3+vwZ`r)C?6hJw>$8o7YA%E@l!zDtojwMaQIOad9Q$Rn01^E+G&r*_)+{#*TUC!nSj>?wMKT5?8?IAxr+s$Ye<#iiq9GAg%u#jJ9-aQ1cEC`iisnMu3D8T@4!7^Q zzpsoDV^GdiQm-z?Hx8eD&{!=ZONievG|JNh3q9 zgG=b%ecVPyWQE8rASxAxUY*7DAo#WWYA=DL$s9}eX>LeklIOktyW9DU0AWL6IF(=S z{4|y=sI`F_jW@wdG?|(e1TLz~bY;G$^TV^Uv7I!5S%t$3e9m2d9=hS2#|=WWNgykx zMN$vVZ-1}lfdL5%w_LFpp(~xj3tW-mx40d*!=@@{Z;_}#-nUV^I`^Xy9IKTGCAFpSnc7v{{YP5fX69*TnOy8Z?rv$7Pg&; z?{DdWYyu$?7H4(5WHVe2uEOW%e;RkgJc%e|EP^|dtz&rh1Gbm8_tOJNAb2kmNhR#8 z>2}I(rO5bf4}VP!GnA_PIu(qr-*sVN2^MX8UjP-2p@=HW8e9Z-zfG;Z`;GMV7_h8j zs7Rw`AUSNeRZ=_kX1<#4a5BZ(Sm0>N=jv_pwXd!J0QK>2js%MFLWCoN63>>_9kXQ` z?c3qs1pq@-(ln14PG&+BsUdycEPL&1{{Uf##w3cMNE}HiD#!@X9dswYwi&Z& zuJ_pfxHT}7MiMV7OYB1C-%p=VzPsS4sIjF$3i57m?y75hYi(|D%#lg=D6o?DD(a_8 z4OB0EJMKJT3>;H1s(8dG9ubt;fDh=x#OcMq8Bu{s?ux2E`o zL^DW_6`DJci56C3*4I(*TebV(>l5T&UWG^&=DTLo)Li!XUk^efOFIXV(cM{vo0cq3 z#{2E9x4zgS!}rO}d8Ae9zQ)2Ho0v{sqwDd#AD_z`yHoB20VchjfxI@|=&8jGBzUgMfY?%uvexBT#Q zEdsoTSzLrD3c7_~F3XnVZ$6lWQ7Ck_V=~aY6j* zOL)@=0V#$$hcmQMqcGLUR=$LQd+&eViTWI8jGzZWpQ*OYY<0ilK8MoSl0q1RG$|Q2 zVkF#d0q^`@L4^npD#9`uBquDE_1NaQ0Qa@NR~KLcM|MKF0WNjULCe*DITA4oBlBedF_4`Rlo4U3+g}7=dB!MNLfa{k z?!`vBY&F+y_qG6euT3OUFpx)fQ=A3^r(yhC>)Qo@5UVpf!I6Ya5GjwSFQVUHhWqb= zvkJ;qhF6o6q#`P1(CMYL7To->HHH}ClQXPo85w|V%K1geAH*&P*KAy3GC8M>g0g2W zSX~ZXblTPSRv{o@16c42Y7u5`G$UxxbO(g{OyM8A4U0m=>EV_l6;~yJvlGcw!r(l4&!W0#05LRoQH^65d=~db_w%U3OhdAm<5##mw#s8R*nT0Q+w=3^2`W^$ z2whYE0GFg3fqw`Gwt#Kh=ZQ3LWmc(7jLO9L8T2U;EW{g)euqQ3 z!C*UvhGP=_+uJfci(|dlaD8q1;HSRHHo>_TEHb!Ei?aj(Hvh^Q5KD&6ie?`BIJ$qmR(Ge_5N{b|cff+fB(s%4{`GJ5%ScsuoE>Iw;WzYeAFR&f= z)3zWKq_sZlW(uSj!l=_PQT4W)opiRrA-8BE&rCEHEHkbHx#`(FYAw9A^EVrfE*#5%~tjNR><-PCxu`g~rwhM`y`(pa)( zZmiZ9BTEk2ZSw;WE==N>R2htx>5@WnjXdVl<%mM&TBT$e(1Hj^?)GDv=EQgMG`QEe z06JM|z=|}P*Qo-P2W7Rg-ujKlfrSeyNDOvg$0%c$nd(5=F%oou#%y)@u#M{>DyrL z(#0Y}BlJdWt^WYqTmB_o{{VkF?<|Q(k*mlR3Dz|XMxB8c*}H9Rt~88s#I;p9rdA}5 zYIP=8xZ7O1cl`#K0Jx0Iu0cr|0lT9Qdj9|)UC--)tBBxe40&7~K)JJDY{Mw@w%?W_ zwm>;gnkFRk8N&u$OD=C7zJmus^3Vcjg5k0o6R6hvk@7ogZ=u5x9FH_SvRok{m_*9N zpW)4=$o=XrM&an5~<6PLoj5MHTrfY{a3iqdD9Tg zYS9%>EVG=&h(HwTK<-Gj{M+H87*jJK3}ocO0;!N(mSxdxbAM7icNWCu&cU80R6Szy z1tEpcS6A;$0!I_Z%I%PQ=!ynmr@DOKFYfqDdnY;|p?Zv@5TTB_k71@(*ZJT9ppnuC zdEs`JCC<&GSqa|c0owiVjVP*S1rsUdmnPD54;?n&ay0SZ6=}-?g+zn{b|Jc!=KlbS z;M-gLd}Bg7RpexIc^R_3x_ga(E&Pu+upki?n%(1cEPyXTvD6K04bP_jm>zVIu3i!g zGb{CE>`lP~>O6e#TCPOYK_MlJu<6ZlAhG^e8~t!Xq8oBcERkz;bE9~-f2O+ObTYbB zNt-iFj#OAZ$V{hZxhG$z=yAX7`w6M4V#$<8Hd5>?SY%UuMw{>S$1SOJ{571-y+r4<5MU{X)Kt9UeFHvu>J(j+7Rq zr-~boz_~+r{&)G{*I5fC!OBKpPtO2ZBnq+#6_k*o>!+d9`(TGg1(8=x)PfE^esOEF z(t}=zR5Z-d#|}{(j8;a>K?20-(no7{-w>&%Pw?sDRLZ=j3zXP_Y*;L;nM&qX)1`*r z8{(W5W@f9Ulo2!n&Ye9I%r&(JW(j&l+eBmcP&o4?*Jt3Isgs41&ZAq_?kax`FxaVS;2uk0SErW$IF+KtGE1 z1J9q&A6l8?1`x!N$nh%kvw@kBO|9Eq_rpr3nxJzeEuxWNe}{AX@oXd_Qxu>vdu1ig zVQg$zl~jN_EyM1gJ&Z4K{( zG*T&KY?1&Dx3z}1I{ZF33Py7{GG~;qIbO?LZmaxiLxEuT0Uw_XGMR`=ml+3x~wxpey zx4chpnD1*GOb8+&+QQ&wFpQ(CasBXe$^lTuAjnj!IJ&UeK|eq3h@oK@F&MfiDuoy| zhP_8kyIcPN!PMXcAsR5{q-D{QIY0{)VSfAg!j;T$$k`&6A}+7Zu?xR$_t#5&aPb6= zB#a;|t9-0jr^in}3u&>?;!*|?#^g(y-6}=cDE=K6LPq21fC^BQhMgpJhQz1@*g5qe z5`1^~?SewN>Ewfw>k?);za!%XNQ8Z8(aEB$ zV2wy^PM-x^0)L=jOvcKrW?2qo3Z#OA@SQZ&SlZSd@N-UJn<7M~C7S9$%5CeZ-E{B< zD$|7Lu$h?=Mr~9bO|&_5C({0IMkX2R8WgwP+;bZFg6J-`+<&+J2mzr7BCJe9D&}*T zowg?S15w-g;hL|NQrS@?jOG9py_oIN3G@9h+2@hN0TL@p`8I_Z9~gzn})D!5H%-G!{LAe zvqqO%1zZygc`)k(@@d zu{kp2&OqMxzt`iwCnU4cnFE}l>m}Tm3!%CG9X>nZ0v@8JX^$e$ETCp}3IGgszo&n% z&ks>KkT3}FGJpXJ+`D(RyzQ=;lYNdQnmTX2f?9VB`EoB#=HK~w>^``R zk(l$MWoEWx8o9FrVgb3$Z##EBFgif+^A|adSdi8Qvi|_I-2C*uxAg!P1M1;(Zmg)u zVS8?DE%JnVGrK)#k1J9=zRj0xss&ao2nI0`bMwsW9TdjqKL+t&k_nsv)EJgJZg zZPMpk_#Q_4Vsgd}Z{2;NP>aam``LE+Sa$yaRwij0IH7fSkyIBb?Wk+pYk#{o+gn&2E%e*dc}R~q%Pcu$W>&l;vVY}ZNk2{fFe#>%MiM%_RvAkc zEQ+=Tci3L%U2t*|l1XHRIoH=NURk}b_^wInU#=JsmW)ADBNe$IE{Yf)tfJbR{8w$h zBzPkQO91Z~Dn_QmQb-2=rrLdV5u*r_a@_z~q{fNj^I)6UE6R?tVGAU+{u)F5aTe;U$rCn_N$p-BE8cwMe<=GO6m z)G=re-9;j)>DN}c+Qfo>zIDOrsM<G934i+7VDC?b=V$$bQ9a{IZq z0PDEy+uKbHVx|JMd99qP+a%0bXu9Y$usYn1*dIB>vMe`Lf5cc2w9FvvHdY(E@vULAqc6nFpW;9-coztzWV8dp%X`qic8ETWCgDw$`<$Ezw^@- zUMG|_GBw27^MHN3W?*#NzMB0B46)^w9!nxWMq3L%V{I>PtJ^`RuA{4kVa?4&G2E1m zl=k0CoB7+g-q?MCH8M)w5yk|BhUR4oz-U(27uwzM$D2msVT#dZ&zWNPwJTx(9(-Kl zx=7*(p`jaoCR-04!p8siQ|` zXAH+7U|m+-@4lnC^XqEr@kuy>osubJy4q#aHm6cAzP-J0qp4bGWNBR@gpr$?>(j1^ zKNq?-I^fe&7!q>wW-dyPBLMe62)|pM&9yq)V}Ssqvu2E*VGOFGI|XL-8*6XU_P(Gi zF^!*+lLiG`#&uina_VpSb!qB!Xv{~Xh{QohHun5SsFek8;|)m+e`tP7hGqvKSrxKe zYjqYD><^20zyWFOVP}OB7*Uk+w7J)DsMl*>*T$g?jJceliWDq*uVosI?tGu?dld~k z(y>75(q_7sV$ETGkayVc@cFTxnhIkD8O;%noL~?f&8G>8=1Pvjr(4BJs8BG{_88)9+p*7-rbg|DyD`fYFntZ~PbA&yx}ffxfR4er^l7-?&FCovwloFX!oSo0xGSy@L- z?rr{@yML>;m=JZ58bK_oWD3#}y}Vxcu+WQJW9f*)A%ZZOm4gjTt{4?I9sN6gm;_l= zrxNwPLd|9%0ec>-tEIHlVYhrK+7MXgk2!q^Ae^Gwu>SzZ!TwlzBn?PpT+4OO)Cki4 zeA`=I+H5gVfDV&}5pvuHK^ag*#q!&8WdK^%&GN%QTcL_F>q{UnBL-~QIL^NRC1*F3qA{$k)_m{rX_59zyaRUC3r{kRQt)3rpGPM#-sFPsMKs6_jMFk~NJT zCK=nSRci&Y^djG$4EBr`&upUQm}!diCZa+1r-Vc#MY1!8BjIk}y*9+h*mv0P>8{vlv$T%U^9$Pl0D89tdydxl?dJvJ5s7OmA;}t^YpE!Oh_hc_ z=UuP=02R_86`_rpRX}|5SoL1ryNx#dw8z&$+*3SBX|xwK1=BQ$BT~7PF;jg_y06@R zUq&>GC1_S+9Z*{+0asqu)OW}rNbjKe zZSLZP85ncbCo%HB_{4*3T z)M?{UuBW-ng10X%%+nQ8s!i?7I@{na-^ZLZBE5=E(nZ!my}>rHBHCYFzajHn$r?D> zVgwV^x%L}s4{h}FFl6N=KQWnynAqmb-HyMg`r)9;faiNEl2w2fI_NG9_P^zZ02;|y zR!2Ze0hA$I4BMT2>Gb)und#P8(32t(f;A@D!+X8_kFU!TEM%0+1PhsOo%0@}fvoxaXk=7KN_9O z_>DlEPYflaP{&nuAm42W_MG5B3vb)uef@C~(jqlLD(mk8vD{@RYySWim-_j@ zfPq8IiC%Z)$Ttm;1t))I=35Tq-q%md025hb%PY&&iZa}E+>!$C`X2`h z1cBr!$W?o4GLlX7E$Dk`w~bB^hB#>=ib?Xu0A+9rSP$VF?nwD!!p5^^jU-sgmT27(0&4c^$fWzZY&O4(oDp7USm8)!GDhlL7{DFIw_9p5f&T1Q zo;9q6qDPUPhyyc%d{}GT+x~RHjaci~!A!dPkQZP$wtS)!y zBX1wmz8Pwz`!h!^)=bAUL@%4pqqon`%G6R%$|&&KNe#qgfXX!h_O*i@H$FGSrllEd zYEZ05OR5~Zt?Vt}7VT|D7!55*SThk6iDfG->^Aa$t;ja-qAw&$lPX^^W{whWTIvYQ8Ly!2rLDf6m%b$&kIi;2N@YD@GcnTVOZPjR-Odmc;Ds}) zq%QH_shp9m^6D+N+WOn!IbfXB%N*s3u28I=@K81$hTonn)JAy?BlA&NTKUygK(>cV z-_qC9HWVSCjwCgCK(=t97cKKPnroo*-wkvGazrD0UPC3uc|RMC$hX8FneH?s5*d(* zBUN1iR3^{WYkGLUj`(8;keOp-LQ>Cn8dz<6`VQy$;xb7qMv9jzrzk+9O+oFw@PGo# z82i8bbt`1HwgUT&jll;|f0hWe?txZg%}CRs0U2~%4Tjr(coggeLE;5jx@?l@NbC)) zK9}5JaIAGuWtb`%KJ}$_yC$E~{%?IPg<(a*UyptC-1)HbR)<|}|$SnAr`d_dIs#3W{T(d2_ms^?iwtl#b)hg`$raPdG` zr2hbGgupW!HpJ!FH*;Zc`N1VZ$smOhV@U0uPLX2Tug3WvPJOWlJgb_fF)Uk8(aI zGB%oM-;h|c8^#a;sk;wP#55QvMbNQR%&xbRWqnM2H@c0>blh6j@1~wB%#axgC`BvW z+2S2Le_r5P*1ni5t5Z%9p*TQlVUnp~ zUWt^dtb;d8bhU~4>)?zV-dK?l(_{|KskODtY;H9@{{Wz$nIgrOR{Jz=S-HuP!P85g z{{Y{{86*+NoTDI?{UadkP4qf;)c4ErzyX*kj6m@jl0bUpizsFHvywDYKL9K#3Y*O*415Yu?(*INgkMLmWh0mb$IR zoxp9a^Vd^`1$50VGN1vTW321YP};zaZb=_r$6Pv7OAOTWAkZTRWzS_h5n|o{0MdUD z&|<-mL>@&|ch8z5d-W~%T-LTDR>Ld^UzDW^#xh)uhFqfH9aP@O)YzOZgR%;F^)o!m zr7fP)47sd4TVb)aj+^3QH?%SdBakYX?CNumim|q9`QKaVp-Q=iStD0Ojb7ZOxl#OD zYyF3O6Ygb%$s}t$4A*Ba8z{RK7uP7h#Qy+X2naN>naUK5GNBQ(WX&gF288&zA6y&l z5=kkFNbe}VQtG#FByM-_<1Q(=R^kaAGQh>-9NKsY0Zy08wfd}Wpd<~iixMz_qh`t$ zHCDBQ-09S}xar$%G#lRxD6=V8r$k8rMSB*JNDRPf@Z0mgmlv%lEy{SyBZOuEH(~LrsJgTxxeMExP%Z!DVO}XxkEM4R12$hbnSbtpDaz~WTcBhkl{IbMU^Hu4G|4L(6uQUtGlI0@-qcP3`)64GIH7GGh+UGBQfn4yc{G-)njO zaaHQrOAR{H!8DoL`3!B;7+&`HFw)p9Pd1!0(e=fc79iUwI%U@2YueZf{{Y)c(31S7 z0WT%4M~uf)(z=WG^wa`UREVo3U$hnjw+|9X*rihXB@1e z*+Knt8;e}p*hmM>6t1$!vPU(qo831Cz*uVCzfVjiJgYDXAtV;eg{(tgUf^lBp!vz8 z$gp#ngMphmn?79UQ>T5u;}vQoiWFYreJ`4fVb{4`!;8UI-sw^I1tYxnaG}o$}QYyiE^ZFc?rF(V#W+SfK6 z`mrX8CQ`CSt_i)0++PqpxW;0N2E^MgK7F&(Ksc^-;Z<)Fx;nujS6kd!PS~}TQ~-b| z8z|Dl8QfXfVu}b@bE+j&06s&O`JCSO_ebvdzQ6@JPK#^bQEwP^q#n*kilUAoTozVI zzsyo^uTHvl{&>ueA_p>9|qWMVcw z^cq}Se)uVLa_Sf<4C`#8M(=G0b8HCm z(paRGlG>fJ$XLjk{0)7SLGBoWlCtxyULf`%4v z^!g8X`CAC04HS~9^3*b1w&LCHKRvEC!D5S@KQc#qS#w?PbiIiA4L_~$C`@d*k=j)! z@Rd-zYw*+!F&H5Rc~3S*b_d_i1-1aG15H0X02#rGbC4IzItFo`_U+?u&lUM>^p8+p z&cgA=PPt2KZo~KURT9e_@rcquj~fimfk05-5$86ZezA(881l79Qge*Frq#dOxdUB| z{x|@ltkJ_FKP;gmmVM%+TeBaPzvBtzYD8RxqIO)@15mcvbkOW~w!VW3dBr;k9u!w9 zQZ=(2r*mVbgErr>R-HqIk*5)opagvh({eW?>T-_w04vB=7m`GGNZbJ#(=?k7_w>|} zsl=hHQ#u!CG9Shcp7rhtZ3n~F*c9+2u-r)?4blsYnV48;%m+@O{{Z8NrCgOU$($gT zBoX9A1X}hMBL2JnxGV$87HOD?SuQlmC5g6~hs^fV^1N8{WF=O}w3fE4lvI z1P&oU~cr`qSlH;!R7G{%krlaCX z&EH|Z_ykNdAHQ^v-;$f=>;}gAA5;8+ho|JTqbd-Jr=g1Kd+TjUAFtuWjS57O)FLSp zHjEg8r%`YT@vgpb3WynLSV#iEEIno0%CZQF1 zozG*G->|p*oGLnLW2RPnW-esPqT#x)ZjrXVy)?mLOm=yxmKh{7^)QnlR&DMEnw`Bp zdtuuqW#=M56qhHNYw!O6uZw(j!^{;K(70AfLp{}s-`&>zwZvtbHK$}|D$A=3{{V-7 z{6Vn#_qG9#B}^!)ib#xgv!To{Z3zVG$3v&{#b=3X&^YGCEul7EVP*aufCL||4H9$Y z5-iIpBPUw`Lu+C*8+<=Z4pfRcO+11(LaP4&c<83*TbrBZ^tRs|CNgZ7RTWRnU<#Ws zAcMIjPJ;UU#w@G?phSW4I_45P&2~Mm&8h58o_#RX(5aEcY_c9=u;u0;4%&-+b~rUL zm869!xp{ACT&b|v;jZ1l_+SE?Ld+$DngSOEn5z)#Ko&lu&idliBtq9SMB*cmmpO}_ zjjmSb_3eqwW&2{ItZ43As^N<$Zwf;wx39wkl1^-KqGUO3lOP}g=*pvO{{YUo7!q1* zz_Y4GW4X-n0957BoZH(^Pty}JskQKP57@;uQS>t336<1A7^(R(QYg|~|pN=a;(jC=0g;pCDrRKiNid+2h48Kd>Gj@gczYw{{urIuOKJff#6fF2`e1KqyXwwjNh zi~vql6^tg%tt6IbWhUSqMZg!<NQgG|5qG1p=6*RjQDTr;v&My6M>KoDG7+lKF_eR{DWRI0M`b4mcq_bZp)(#&md zUpnoE1X3D!fk(>4R_sx)eKuSDb+E-)X?Z!On1JkW%L~vKeE{D}osa2*%S{A1p}t_q zH7Rnp8Xff-4;%ck8P%C$5vURbWk|A?JLUq!kWTHUx?k4-46xo2c2JWk2mQ7z+i0ft zI{6s4C8wocP>C5-I3N&m-$7x0K9;v_m4u?6k%c@7Qwp|3jzFl-eBD43eMzzP16?sR zRQp#Wmb0T9mIp(7mL2nU@9`JCzy`6$G>4Zum`G*jqk;v9YY;7C)3`e3`kf7Ko zu~xWIxE@7-HYfOq?|?%{l^NU$`r_^Z;2FEebleedBF*ZEd9mrtje{9LISBVfx_^a-o$y{{Q9m+Bd1NmwjCQ!{E9XYjT|O4I@W6Vh z%{WkkH)REGgc}jnYhKy|rTia;DznKP^G_?NAc(~5NI9-`7Sltmx4o~v4HZ1CAb5<0 z+W!E03j$b;HyV4^x1sZa-IZC`2-Sk*eAaZf!usEH`xpS5)ER1Gw30D}T>aVq053si z9yePZcRJ!S%CXk-ish7zBr$<~1&Oxgp4Y!`fZ!l<9Zu=YnBzKY(i55gm%7ocfLtKCj^J#nD))wuq9bUI0HkK zBvaPJGUm3I^}bP|@rnD?P_;bHf>V{4xzg=!+WFZ0J7TNfHb^T2Fo6-xBgUn=ZgVS0ySHmuM*8ed+xEqYB#-XGNtCGS5y^bJk(%2N!*lT%tRo;5 zd1;8TWOh~Ry4-bK+?@yMYu^)g&l2QI22zB^K(|TFZ;%`BZ;=AWSxr88m01aFtXy9E z=t#Ft-`@={*@1ZD0pcXc%7K9<=WOsc0bIe|C7 zoo(N~0N7q|s8m!h9LQBw9H?V!j>EpXZ?-AbxQe4RXO}CdFkP-yfj6+Q)2s6x&G1QD zD3&;L0@91~Ba=gQxHcPh9yImESrE@Oe`%1+DW6-WQr8~!w!ginrk${ci)dWB$`dhY z^V!Urbmi0z_P>3Pd~|-zW;_Zkvn!nMc6iPGhaiK z-LL76v)RH=1&EeLIpjS9O(2D33D*Wfp7y0IR+%tfp8aD}2RO`Z|Hwk$?EX z*5tOIJO(vIsi^}}`DDHJ(=Y!3n}(%og^x{o7I-;MEyn0=Ai*b&-t*-qOwqs_1J z*B?*dzwkuze1%yUMhJ2qbZTzdKyF=^QdoXoaL||_c1-Z8s0E29As}?$-SzG@xV8kc zAF`L3meIM5kc~(BmcS0y@9WzWiB&_zaTskym#@%V5Ih`q7<4LrN=+n@%MZWJV;%nh zFm=~|>)5ohM;z?(5{Orphn97?Y}Pv8-rCrx%PU8nA&w~nU86lYR{Euehq3AKac(qr zh*CU?hB2l^InY4v-?U^ItYVfmMLqs}Afl`I=HI>VfdMOX8<&|#WkYanlIQH2gt&SHt`(NiLv&cZ&T zFV*|G+T#kOMNEp3a->N$A(4R=7Rt&6y9?Nzx5Q%tDh6bU8a9(Mglxk>)v)jJ>~H|l zy98p&NdT4(#je-ePTq9w+YFJT30C>kU3%`I=Dx#Er`Js}Fd7pp!!li)MN#gpwF(RPk_9pxs+mR1cer9d7QQt49kB@=%u?rwsc&~n zgtn~29_RPA9W?;}GBTUE0H_Rn72EsZuO#bH9KtYMw%b^2ek-r4H?Gk;I5*EhX;CP_u1qHUn<<-Mj2`n;}<{MN-G6{w_~V_7~Rw01p_d z_Ei!z&cKeSm|sG4(!`s3_EUxc4E4&e<%p{ymgXC~IrPi8wf_K_#hlFQ^2|hK&ADr+ zJ&wBT{jatju9;jQIpyWsIRQ{Va7zy4ZMSbYubE5%IZZs|-IQsRZgtyD1%S2y4IqY| zW-_D=GPYGQsI%r8FQC)6t`w8H#}vjWc}$CShzl)+yy$oQ_rUrjXU!ZJ5!tMk3^lcn zX6YBx3P*`3;Y_kfh#C4xIggUo8fklOaF`;*sK0h5sCyIliz8$tj4r?{?P;o}x&pkaf9`-9S~*wXi$iMn3lbfZ{N-%bKQqhD2q% zyB3T$O_*p8jm`ihIqYOceq!^tQU{BsCJqUN?-$H|tVPA<@_zgb zTAiWF&rz90n4$+NbshBAe%j#-8c6R>SVwjReaTB`O^vPC_tVbUEU`r$DuV%#G0T;T zuv@piea34quDAecKFqZIwEH%E;lk(dsUJb(;5NY@ms|`b2!LxGZyN8dmrkSS&X_cO&|nV06;Q zOH7R6LU|U*d zF{vU!8!lAxj0Nqdx-}-m{t@!c2$bzuHF9tOln=o2+Ho#Un?V? zmO3eHro&K2$nT8U>KI7RRIn?fvo|U-Tw6nH0tJY-{ztmo00Cr@h0Ln_wpGl$%iDbb z41Miy{{Wdiv12_vg%Ol6Cde3NLv_A;X1VNk^cakWNg_#{Cq<=-`l)wLP|KQr84 z3QUogXXg~k6hk1${U8Fv@f#lAPo@9_(F!GzqDa~p)rT=80zwD+cK3z-HNj!5COK)~ zl1VvAt9YK|Uc|6qI&FVXO|_L=ut5}y8$9u-vH&?kF?BtTmmkBmzIjV(5Gi2%8} zU4~y$-$QQxJKz8nA}XqwvZS#nH|3^crzpQj^K0*I_Z^EAoU1bCc(uzXEJg-Vmf-&Y zw<&?Mi_}@sxlb^0DA%M|M z+fPB?(-4-8B$_<*>tzN=fZuStldjj->5CD?A|pX7JeiquvHUO9ri9x0Pj3FWC@iZN zIx{4aO7c3hG+EHF@JgMna@q}hd@n~(Oa&u!n6rk??gn+u{5$3K({qT5Qu3!&gqf1& z+_Ja0zl+=VY(?XdktbZKB&nTDnQo1jxFb~{jW6KohJk~5qO6ddlROMz~mKR=D> znUNcnD%BMuI4Bvd)n?7pU^n-V!q`9-o>luiPIK4;lm^kST9DDIgeW>JJ>S9wy;Se-F8YiV0jMejva|K0 zn}#CR%Wrn-MxQh99@vDk)=Y&631P@A${1gLNgY4Jej{*ift85W$sJ>fd;`ww4$CN_xIy1!!fC+3Dmc%CaB~ z%wyN2G5jXL-rl$nzbz@AWs8^yT*v};UwE4?xrV*B!j0NFY78em*f4OS<3`kmB->HA z^Qq8a1YKyABo&1a22zTkh0Cb|4y%oJwT`%obA)ll z%Fe9(z~@cRlWj%+01vN?Q8QZ9ju>aU3o;aAxi=oa4FW1@QG0wm z5$3YUu@^*@1I7uC&6qBqirw#RKcT}BYB@tdmyFa%x$IKetME69F znS%m4Kwlaty}NC$5YRI`lERXrN@L0wt}@4aS$Ds^f2VvYA%(e_5W|>eG89r6>1$s5 z0=D>%Oc`2cf#zVW3#k{ARs>jEDEV0VA23TiQP7Abp5+bGmNO~z(RSAN(|?Wt3Xw(5 zN>q)>ZPOsI17I!Q+6{Ho+W0z1$us4VrV=vSuQzVjxGZgBms^eYIL-{QB#M<8W^k&k z5sxfvwy__-Lws9Wcq2zwr99$a?_Mx_d$;rE-kafp5q7GLDi|x97qPPDY}@Ec>UYp? za27E`5vDUcRDuz+0U1+f(|z*m>tkyGPAsz1Q>J@KD`pl|Ovg5=RUoF(`&2<0~UFh8i1ECB^WhYG36aHT_LJ(MlA zCrvfO4$Bdso^vWr(##mgD@Ijr4a)3vI`{QDZH)d=im;w?Bgxe1Y`ul{JwEW%V#M-O z(W5loQ7Z&xE*de|^!wNMZErekaM4D!7ZoUq5zE9LEiGaN&fkY&w%ZHgP;@6ncqEbq zVmZpWvSkm_G|X2i>C|80t*wr)fugsw)X5?e0=2`bZ8IAUvCOfZ&`Sl~5TRg!uDQM7 zZl?O5%J}Md9I`h8r+k^7%q^T7*@)k4c|WSZ@h|M{@c#gtF2>M;RZ>OQVvGmpgjN{I zDF{+^C1bW9IZ^`$*Z5ZB5>^ds2eItRMm!VJDe)TEcxMl&ta#*fg$tC7T#@OC!%b?2 zsCk{9L!&N=7>+RQKy_nwEEZ=6OXv^lyDrHw1+zV)QZLe?37*J(uWHLsJQ2i-#-AiGq z*Vf&|{{TJDYgvE$K`-!*XBISGRlFMry(Imo`duL_^UD_R4j#vMkM5PDVpDg`9}9Y zEw{u8D+WkIMoQ}(Y6XcO1AWcKzr18_e@;=ABnki|<+wY44)^(;u*5lVjWjI$xMUes zfXoiU*4$y@c%YN-%%5k7jO^g#V`4gPMeKi;6g9A_x;%?3pdh(WF1v0&ovq&yGnmUp zP*ji>9K&S%S$cchFVjs<05P&FRC5wJ0KTEr3*2gSCd1+gx8_kAWh$d05)?9$L!X9S zyV&W2$4o$qbdj1@BP1)gZl<}{`rm9yIRm7^SVJItF%4xcZq~T%y^i<>1C%M|YeM0` z&8me7<6ZBI#+G?W<>ibhyLF3^*lVdLzA8veGD3|q%_|#=Y42X)h`;)Aqaz%u9&DFj zg>}^EIx|>X-q(MRWPl8z(iB)d#srg+{{S;@C(!6GhDdo-(KE70&8Quh*W+)8!xl=U z6y&1HlE&p+D&@Gnx7Nq7`1~w2<+TfzKYcT6A2UD!)c3x()ZvI}2$|#(E29EkgIoq9 zL!q|!x6=w(Vs;bc0HQM6ExPRi4>4ZYx~y+y|mH0;&Q;LQSQ;@3CLY zwgwm?1wA~|l*sB>HMhzw>NWiQCI}+lNefEK$m|S)ODmkZ3mtE#^53z-g)X|ZN^<24 zt7g-=*56$*29;7PQpnS)pvv-n+NmCk^S}&~#_bH5RZ0aciWwDHk{b5Vk*)OizIb4e z)6>r3=I0mc05$&r%{^Ar$MwDjN|O>u>hd#P5dJN!r%ire(-Y)UILrf}&dP}GcVVwl zDR2hgyI?Rv(oHHL=6%~Op22O~sJBkuJv`wtmg5Z#S~X2iB0@$}C;+gxQjjlgTeZJj z4p`$BKc zX3PM#x7S|e>F;1$0&HccM~zFU%&OeRD$2pNBwE^Srnk4l1*b7QQs$UB7e^hHNdWfK z9Tdln*Ka6!wX6bELG}5ecovU1q5ieweO)f_3$uaif4{zR$_^j znYvYS-rje%$FUwT(iM$?v~WGgQRr=2{{Sls?ffGMWqu%1NMbi!(Tw}G*53AQ2=8ru zF?x86U-uV;0H-N2hAP75!sp?qj8-tbMZ_bTSZ3y1Fk2lLL;C%1rW$%TNOIE>4N{cK z&zP_SP(uq5eJy>w-~yY;RAO}^IHqe7UokD=t>a7FuRv0F8=@!NA}v-21)~+%Cs?w zvac*7oT|FtQra7xcGAbbBdtbhIV6T#WR$T5wE$e5ZK1uI+H2nxQiw+D&Yffq%+3^E z>H+Eveye!(?TZgQPe~F$jdn{th$;%MDNTVHWt2*!|dq&AV#LOt{&HoA>>I&XV{ z=doahXQ}%<&dU%*VCF?aTHxiiw$pQ_o^e&Dla}N@W`S~smd$c|i=X#=E<57HGpj{s zU<`|yqC=5&0kV;6ei5dde96#@5?U&kmPpmh9LO5+nEZkdx}&(ipE#mKtW!A|8ttCk zv6lO*Xirte&4JTgT8Zk}ScOR#%BDvkt?%D0t~+apm}Hosnl4;XK6eg48t!f{-(Q~I zPQ#+HiDZ?bFsyIX9Oyj`-LH`7z{ z+XaG^W0E#^MO8Vq2Fl-vUuL<~oBTac3VSe9OofpL-U$;oO|6^W8d}2V#qVQ@MLg## zD@`3e)U3~$byK;@EJpht=j8{0B$9xPidO7dRy89v&bB%WTjnowiKRE$ID&H{jyQo+ zC{_|8oA0SD>wP!d02XAAn>cQo{u?DIH}i!VnXZILI1YfnY8L ziT?oG0Lv8)QU6F((lFZG+>Y1p=g)zLoulUz zgs94#!s)TTmIvJe_CH?(3?viYesq!uB>-EiFdF_I*9S|F((FZkLQ%xBK~%xo+}%Pj zEq`{}-`2<87s26xl^M|sDY~%ALY%_d4K+Qq$^wg9Oa@4!iXu$8z>!`-Bt^P&6Llk9 z!0s*D*tR)B5YbbX4#zJwO}cI@7;n-q)Zd4;1Olu^i4ohK8t=^JTwEOu$p=oajfMBa zGeBv~Qh^zoF!zWXyQ=%z3$?(_^E+5#JfTq%AtfXsUnGu3m$A!peZV&Hp%%m$Bc}^B zOmYWO5eku+`h~M=t@Z7&8(^>=N#lkQBvUuqLFJ%r)r(x**yj2k`VB24X+#m%BeG5g zQrSpRe#5~wI&bUc`Ab(ky5(6EGpl=^@Mg1LeZHQU4>cN@Bcx(xC5wRFC4k#0u^V^z z-~=?XPeoS~R8`(pKqMm6a7h$krn)lN8`fI)`$wO5< z2s#wPGu_Z%a5D{b>~+6$V}_?PGKzTQnniJ)rgX{$mrIM=b-wn!@CcL5CS_`vA`b}E zGKm1OHqdKs`tPrMl1THRu_!C)rK+fh?AD(%n>~qfu-7)1 zW*-taBKAf|Y7nF$t;~|ZMXPKMzlUHqx5Etq5@pXQxrvl4zjiVg)AQ7Pz&hY2qDum5 zWXOcF*$7g-KZodT>Dv08q2#ySMHS{bpEL9y0I?Rf`fabs+gO?yM=DhjmB{Y0gA&ZF4lC1z<|^{JZ6GYM+&gcU_EYgc zA2_-Rc9m?h02JkqLQil#YzN1E@lI-9RHjs55~5JW88eMFZN=@U!)>pC0#7Amm9Goa z#(`CsknFLrwxzaffKK{rrkI>jMGXSOIFcl8qzd|W2R)c~7uUzFuvCc06z;>FQBE4zGenh1xC8q zjNAC}Y#g{~+G&?G!5EB=L3?SFdw0bdBax+uOtF_jr%Tw4E~4OS2dB(yi&04?aU5ZA;w2nvu_upGwwSm{LH~=!#LsKO}mw1JW^eaXW zR&1jE?d#vb!J`V4(wU=3;rDs3((D0ZtTxk6%;D*gOcf4pq2D^RmLOWzY`wSrG}9Jd zAoNydCeNFfoRm9i2E9KE-v0nF#DH-K(n#}4(#Z3*;OWh<>A2WxFTclp7nus9{lt$> z+bn7|-`-Qy06!spZLS|6iY&1JhB&}xZ*jVbUY#|t+S+S#;B_@I#NTBBEZ=~(VyCi? zk5_KTZEynEsp;g6`tuPgW?6_;v9UL6@3)P=KC^>AFM-mQLWrrRVxr4)WAw)&wRI~L z(8DZ2)E--&r+Dq-Zouu_{4v%0IUTqS6R;e{k25h-a!I)+`h$-j^>6jB?CtRX0Fy2y zRC8QId3r+vi_v5Lt&i6ZV&(}I%VloajsCbUS0IjMk75ACRV{45mL2Vn2=tJO4)Gz^ zT{gu|BCd%ITuNSAR?bm9;bCBzCE$bI|%q}rYSNeO$olMeL|8o?ccUKJ}E5q zp2|YT z{IBO=QIX@FYGsjK*3qQOMq5~P++XouUgRGm2FV+^KsqF{s+P=)pgQk;&(jp78QEj| zrAGJIbd?9N@vZy(@nV{e9$QWJws}uXksQx^oVHs(NjE1?&gUMD9Kli59jA#(yD3_Q zODQTh3$3kdp8DboEQXcQ*7Ff#8nw=GabSCPK5THJpp390SlTx?k)JuusM9Id#9v>5 z7r@#ADpqKu<|rzG^Lx2&1=L)5?04T?T>&wcIz^Y9>vicaO}*_+zwsyO;9Q07qvt4&?raRp1em|BV@6HlbW_Es(8ITO%mbq^l_WbRLRLlehatuM*-*%yZ z{Iu2HowEw!-RTKDhul8mx7Gl+*OlkSUU?;9U?zPCGEc*LP)mXyI!CT5r|neUl}{d;_M{IN8riUFHEYn=2# zjnlVwzn|9#5avNl#^PJr?;CX%RbgOTEyc3m=kdXXRVq~Ekg0a+Ets*4-%i%J+T*u; zR-R*0!#qwv8M%EVThVkE{r19@VOf?m9JMw%NXhGaUtis@3@d{yYZi9M%s^{q)8Kd0 z`D=)ni?hehjbmjCn<3KMUsHXy^}$tSl1OGoyiB=4$!yx|YzRzbnW?1B*6jSezWTAS zWF;Z;@239%9@XKPM2&idrwx@5l?0o139awze})SH^-Wexw9*(+Sy-@L42^5# zC9F4JU!ERrUR8U%3ZloFtz;Q(aiLr44X@+p3F2uStZtcI1(zXFmj3pi`CR($MgWu4 zL=p&ONyHL^mL&>`ejUjxzWaJ%0eNCYlO&Ry~4I_Zg0q?OeCn!?Oukc&IAXfoW309#@7 z+ZU)JFB&v$b!E*XqUE>*`17bA95I!m21;e93z-~cRRyDE7e9z>Hx})S(nl;Zn4yoE zG-%4Jmc>~5jn0G8!^N=z)iPFy<9O9tH|8{X*jS$0|P@1*@EX825Ve3$QzwC@#$;>AkE4NB}?_NBSu!! zVesEUfYvoVO(G$fMhPlp%%G^fiER(@b^zqx?Qi|B zY*>lXH`!kv01PpNqWe5C8IFw*#X8s)S>iOxQDl!l zEW%ZhtZ#oEC6A3TF(MKI_1vf~C1amEu;ukPdz;@tH$Sc*@nxn+0qcbqAt(jzHw~9g z`ghjb;wrE-*_LwQ9Ylb!IkLF9Ae}A`<%g-KmU)sGYH8K4VH$s!*J8Q5Z>cA>w(<r7gl}U|rKInOC(V%Dl27+Flyta*jNwpH#e zx2e|!nph<$B3Mj_Q9(%xg$CpM)|H%_OIyG|QEry_fh+!PNep_rqX<{hWQaS&~ODt*pGT(fDDO z_HOw}zsA@aQ`5-|yx8TqVw}ZSQmu2oUiw>KUAsk#({s`(u93%;M=x&`BI>U9K3pUtHZsQZzbxVDT|plgmh6L?+pF%A^~!6}Ygm zy7$fB6eO*s;qlZoJd1&rK4gHI7t^G#;ydqyQQMeegdCBO;1iV#4zG9s2L7J`+(5*w zPYpPlp6wQ92RedNa!Q@8Ya1W5QCBe5yVc;)S_x04@LNPj4<`ENBNhq0% z%Y2|^X5YS|+Whp_K}4vOmMJE4e2Av;wYL|!(%^oZo0sSaw5<#=nrV^bI{o8iD%Sw6 z=Rg=6W$(LTODqOp$k8}i4r>LWAwqNOsNaFlF|Mm3cP4d zg~0FXHpE(1Lm?0q7wcGsq*u@Gv9KdhZL&mKjwt66@@7Yl;iAli?YTF~Ewz9ec>E(5UI4#tRW3@Yyo6=^IeM?&#GQ1w9gZm( z#Hh;1d5F6|;_s*>I2;BSLbq!!Q-uKvO0a?+i6lZpFNxv;F zKM~BihJXQWZbnjjTNbG)qKLv|2`qfFphlxy&9NT^&GPZM>ENZAR;Dy2n#FVEDh+|$ zceSna^~I@}sm&zrh^h_1Hp_j9*o?yan+3xc_GXHhnkiAISzDSqpY^DYQiRF^Y z2?4Y{?b0{fPfnXsAen?lrWB1^C}_!Hm{?`iuWbdk_jEg9B%IzIKO!YVmo>916guf{ z`dn|N@W3=qIga^Wo;F5})fd-elv?*T@1^WE!^Kkbtf(bx@>z~@KJxZH=`E zvxT;n8hH1+{x0~MMzre+yhrT7r}ClB~^s9SruC{6}NG{@3)KsClruFXzB8>&KYtthq(uA+gOw1;id>-TR{q$ zWtHLxkC9wQrl1l2)3>I+1H=)OLS!L@KSXF`8Lw|U-$uCq08zchAk=KFPGDP8s*}<+ z0ZwAKHyYpLrSq@mMEk`sIAnYZpTxV zy*2OHZbh&o9CYLfqz@-A-)8`YxF;|s`(_5$(2PJ!CRIe1K_fR(I+YgBYqw%Xy0`MS z7>!XBkkZEG;W8`TNoM5QRmd)jW8U(NLeLZtTUXY!1Nn|b8kPY4vN)G%_CAPw6Y-5GyoUU_cvRe zGaLB$-w#sJ!x~s-%wtvnTn4@M7QTgUG#9r19okA@waE!0E^?P;StqS@Ja=Z zp_eT>k}{E-rsCS0cI}Qnqy~xPWFa|i9z`XTw(X;Swz%}ic}iVrpt2xNT7U!WEIwHA z{{U5!QHkB*EwWHmOE14iELI zA>XFt>!((juQc&TNcAl3%Z&_&F8f~A!9Z3ADf(Ps6*P@K9FfN%S($od{s!E9uWc}+ zSFm=LjQWyO*{2l(YIevOi`lZVVA)NHvV*6f@s4>XX@f&Nt`_UcXpg(qn(KY-^8UR= zbgMT2s4~5qlyj|vGO!x0hUVhd#|t$=QN}rNmkn~+*2iO({{RjBJnfI6{Vn~H{?9kd zTVK&*M_CsER-#N6t1x%l9uX0E%+ zhFEh3RMRh<_V_P+SE%MJX!4QLOUUaPU|11+t$Po}{{Xqis&N)z;u0%ojyRet6=sqB z+YxqcH`HnA@Wf-NX&#{nc4oS(^6YoH*J~T!<>`RIDl|_kO&}c7uc0z0QP#&yqzzB! z;l9fZ?K8<6%*cZ=QmOceBL0?L?V#4$Tp2o99#@uST+Wgeexr6imp8VA+>yP!;>$TQ z6iFP+)-7bsl#{3cHrFHT>x#c+3er_Yv2>7V4Xt8*bUr^j3`xT|5~LCsN{h(%*KUw^ zy@z}-L186nS)HC}003D|q>Zixfw4Wud_=KPkS29zKKq+|@AKOGc-S%(%%~u<^D?{0 zAFXqe2sc}cHLg2tz7$|6dPXkFx9T!j$Ji~&&7*5;Th{=)4;!>>QzTyP!O5TS+ySM? zxhwpz24{wol(gzS)Q2EzHk$tcEiK>Wg&d}y5Um(71q)?B-PyI@ZGKyf6PF~d8JeD- zGp<;qvomI4a8I4azw%JQ!5DN#j5UjOq>rFILgvR`hpF_$R&3RCD@ee`TmWvwsj&q2 zJKN!g=S@uJH*36Y{{YCND=uUBcRhxK<>f@|*;XV)TZTqcWzd~0J?|J|ARCt$l!XOH zO1Wk#z6N5z*y&<^Sa*e^KXQNoa;p^~6n_q4bvxYmw~S1@Q&FWnj!+WW+_qph8xmNH zn~v8$xGMyrXr3v03}wJBRJNpz0RUdY+F$a(1QA*Z!mO^+D%=RN<-T12U_I-W(0^Q3 zia{hSq7~^Oi#Q!X+qvIeHT?~+Sk;nA9vGwzCsM1h5w4_ae1m;I)7uk(RJ*vAXksW; zk|vX;=TrE-e2>dSGE~w@B+TW*O(S1bDhGpqA1hq^aPKH9E#PS+ox)rj4BBR3$LsU> zU|;rYU7g{QSaar@M^YCt*4lM_PTyQu5*o>-k>Qb~0CH~Dzg4<-y_-*6Fd-GFqlr}B z%BnJgw%69c*bd$9JmO)diJE4PVIMNr3>1dG`9-a!U2VV15OirIkDEIzUh*ta<+q)? z_P)0VwS}Y0WTr9FXqGHwk@d~Jx4pL4;pucT(noa4&^yA-_i?LbbD+w<%zmcW8ikHn zWL3|UobiSvt7~m9>v8_!+Yc-?Z%GDhl;U=0F~uYGhg1+?cnG)#G!(uK`Td99FWGX;k{3L3vKyeQ`FNuNFff4GNs*t zX11ov2HN)g@hAeq)^wYdW1P7c9Yi*pc^@nwCXW$;YHD4gX+O)1s{lscNh7Ck0|Q9f zT5eo$zu6^xjs)di{{ZSN2)5h!?Tr{MRZ-70=#n99gcdx|)@zMNfu`L<0*NJ#2^vX_ z0ci^$c8mpz5;n)`ko zt~bDdV^$@k8D@=Xfn~9iSb!uEW!v7iBTMn&zuz<{^y^u8xG zL_DNOBg-)gix>p9gae@2ujc;%8(PtxstS1;cBnQdB4x{K<+iuqe&>7M`v3;7f=bC7 zGjiip(XIh1Z<(_B>9)XoqXMTzp(zD2yix*rMpi6s{5Q3}z7C@XNurV9o@$9y$M~JK z(%by>up@r<7#Vorikq92qm=I+VhJSNdTL1Rwh+sTBdDQ~Tx5in<%J;{%5DDumy2#m zY*Lx&l9o4nWG|V3kMCHKV4&ao3`El@WRf8wqab*Mt}?4;_lBEV{rq>qoXXCz3V||Y zw=hNqVR8ck!q(MPW!JyOh^p+;6H`+21dzz8&6FaluYRld^u4^|Q$s6E1vf2TL(D>0 zfZEuRnB8wnJ#{{RkIiUodpv9n6HvmNsvjm{dTj6ptFGKsy|^P497o%FE%JL!OA zX^wa&jCFw(3E%Rmr5V;j#PWm9D>ZF_W%uU#}a zlA$RP%48SKX3D{tK^I+h8XuUw#-jj<)5@~e)pBBnq)ZwqWDb7qg6m){zQ5OeLZCrW zRH&$q0|yrw8E!Am>crCvpb8SGKo4 zrvRsxAtFkVF@c{vL6j)Dzv4c3v0XypLX2yiu;mpj!Q%s~ee-Hg{%wRY~{;7x9AQSi7Nrbrji+~jhXe0udnd28FtWvr=ilu z`vmn2Wr-yS;jH#{I@p!~>IQ55K*cADFa&ac+`@+`aSf9;>_7mLG+nK$d~iyqSCTfD zo~s#U2^^}uw;lEbowXyj0fDLJQq#!ru6j#^h`TBm^*%d*JOT5w45g8wspbinaUx$S zUZG-E{{V+;`8sWZ3Uegw3#`bBp<=j2C$JlO4_huJS`sR06$>;h*;+;KZ^hgl2p{>7 zZ)^mV>)@)At=d6*4aR2xVL{$a10cJK&l%&EC=2wA+4rC z?wDq}NkGcP1F6^Kbg}KG4uF(zS|@6Q5>FLbVHrbn8|%^m7S}O0 zxcTXF&rvGGw81INPQ{VQH`PM?w)pR;wzW(OvKi;PI!MCq;9H7`+DJIs}z3p;vDIn%bOUoFQ z3nXJQo3Pci7P#(C+TzqvtzRi+Nfp}iHbfVW`Wa6Qkc5(-kL=~8NiH&EONE( zKq@b(7CtdT{>gLUodHQXa$f%RoGz=D?R#l)^TE~Qjz*qH-;tQ+X8^s~mw(eiu3~#) zy2`b4G;JR*mO|ay`HrUdu+g?3n8J!#{?Ra$WtQwz$)O-$sa1eER38_<_(LS7c9r3H zV_J;42DyRvvbJ4FI&XcBnqj9}hN+F?RV^Xv1d^?6x9`)^Z@51rhf3O5!%xalBUu#m zfVKg(_1nK|;EE%fer$|0o|ZATxk%c?cny0N7Vn_A0F5SAbTv{~DKR;GgU*+~gZntK zEC}K`(y=DNel?STlCmm=zf?C@<$x7j;Vxgb#_HtSZ)cmk7M6!dIBmmlZUt2 z>9=+RRk7W(UBA>czMnh*9%vzXLcQBV6BTO)By^~`?lt+1cf`KOMwF`|`#=jNvIA`f zqz?81`{-;<_QYjl8K;=Wh6u)MsxT{iHfxLDLwyHpcEiZAR#QmrK3R|k%n%*B>%NvY zK6mec0L;R<(oR&Yk=YE9rSms!ZJSNJUdQob)Uq4L8$!!BI4NFUm$yywlYK$gO$F{R zrB|Lr%GB|Q%LE}-OK!bKFw;)04UVU_xIIN2ugK_bV@A#lvGrwZ`=9~mn~if@;(j1;#S5g19Xg~j=3yqWET1pMY_{t0^Z=99W|(J4@v zj;*Y9y@Ay4t?>f%vXIA7{{ZO^EUKiny%=;IyMc&C#TG^60_|mXiSl;oI&b`6vN1Y} zIMR+dTBe=XsKSS%I)Zi3dUn$Q72~X!#Xs5|qAg@zo|Rx&bpHSlumbv?j@`_$H1ACq ziCGk*$Shb52sb*|>~`<+!6k+_i#5fTfGlpPkOgvzGk!D~ ztXY+{Hy<6r?}P9nLE;oHB*1Zothrzp}RJAd)Mytc6#G2C0zxYG

Kb$GXLK=B1I(>XHA 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 z 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%0Ag01W8^Gco8(yHR*Wi;RGoVQZGY>6Wh~1Y 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 WU#;ei0|y~)7~a=gdY_&Fpa0pr-B+go diff --git a/positions/src/main/res/drawable/taxi.png b/positions/src/main/res/drawable/taxi.png deleted file mode 100644 index f5a90cf316dd149f89aff9db76b6994f7ac956f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4150 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 - - -