From 0422cddfe3cd4c9f3e34498d40ea19526de50b28 Mon Sep 17 00:00:00 2001 From: hukang hwx963878 Date: Tue, 1 Dec 2020 19:50:37 +0800 Subject: [PATCH] =?UTF-8?q?detection=E6=97=A0=E4=BA=8B=E5=8A=A1=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E5=87=BA=E6=9D=A5=E7=BB=93=E6=9E=9C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BC=B9=E5=87=BA=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/ObjectPhotoActivity.java | 9 +- .../src/main/res/values/strings.xml | 2 + .../lite/object_detection/app/build.gradle | 4 +- .../app/src/main/AndroidManifest.xml | 4 - .../mindspore/hiobject/SplashActivity.java | 126 ++++++++++----- .../mindspore/hiobject/help/BitmapUtils.java | 151 ++++++++++++++++++ .../mindspore/hiobject/help/DisplayUtil.java | 48 ++++++ .../hiobject/objectdetect/ObjectRectView.java | 32 ++-- .../hiobject/objectdetect/PhotoActivity.java | 141 +++++++++++----- .../main/res/drawable-xxhdpi/btn_image.png | Bin 0 -> 1999 bytes .../main/res/drawable-xxhdpi/btn_object.png | Bin 0 -> 3433 bytes .../app/src/main/res/drawable-xxhdpi/logo.png | Bin 0 -> 76723 bytes .../src/main/res/layout/activity_photo.xml | 16 +- .../src/main/res/layout/activity_splash.xml | 80 +++++++--- .../app/src/main/res/values/colors.xml | 11 ++ .../app/src/main/res/values/strings.xml | 4 + 16 files changed, 494 insertions(+), 134 deletions(-) create mode 100644 model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/BitmapUtils.java create mode 100644 model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/DisplayUtil.java create mode 100644 model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/btn_image.png create mode 100644 model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/btn_object.png create mode 100644 model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/logo.png diff --git a/model_zoo/official/lite/Himindspore/imageObject/src/main/java/com/mindspore/imageobject/objectdetection/ui/ObjectPhotoActivity.java b/model_zoo/official/lite/Himindspore/imageObject/src/main/java/com/mindspore/imageobject/objectdetection/ui/ObjectPhotoActivity.java index d64d883a14..ad4b3cbc68 100644 --- a/model_zoo/official/lite/Himindspore/imageObject/src/main/java/com/mindspore/imageobject/objectdetection/ui/ObjectPhotoActivity.java +++ b/model_zoo/official/lite/Himindspore/imageObject/src/main/java/com/mindspore/imageobject/objectdetection/ui/ObjectPhotoActivity.java @@ -28,6 +28,7 @@ import android.util.Log; import android.util.Pair; import android.view.View; import android.widget.ImageView; +import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -92,6 +93,7 @@ public class ObjectPhotoActivity extends AppCompatActivity { showOriginImage(); } } else { + Toast.makeText(this, R.string.image_invalid, Toast.LENGTH_LONG).show(); finish(); } } @@ -107,10 +109,11 @@ public class ObjectPhotoActivity extends AppCompatActivity { if (originBitmap != null) { initMindspore(originBitmap); preview.setImageBitmap(originBitmap); + } else { + Toast.makeText(this, R.string.image_invalid, Toast.LENGTH_LONG).show(); } } - private void initMindspore(Bitmap bitmap) { try { trackingMobile = new ObjectTrackingMobile(this); @@ -118,9 +121,7 @@ public class ObjectPhotoActivity extends AppCompatActivity { Log.e(TAG, Log.getStackTraceString(e)); e.printStackTrace(); } - // 加载模型 boolean ret = trackingMobile.loadModelFromBuf(getAssets()); - if (!ret) { Log.e(TAG, "Load model error."); return; @@ -137,6 +138,8 @@ public class ObjectPhotoActivity extends AppCompatActivity { if (recognitionObjectBeanList != null && recognitionObjectBeanList.size() > 0) { drawRect(bitmap); + } else { + Toast.makeText(this, R.string.train_invalid, Toast.LENGTH_LONG).show(); } } diff --git a/model_zoo/official/lite/Himindspore/imageObject/src/main/res/values/strings.xml b/model_zoo/official/lite/Himindspore/imageObject/src/main/res/values/strings.xml index 69bc2200ca..858ec34a27 100644 --- a/model_zoo/official/lite/Himindspore/imageObject/src/main/res/values/strings.xml +++ b/model_zoo/official/lite/Himindspore/imageObject/src/main/res/values/strings.xml @@ -20,4 +20,6 @@ Inference Time + The image path you selected is not valid. Please choose again + Sorry, there is no object identified in this picture. Try another picture \ No newline at end of file diff --git a/model_zoo/official/lite/object_detection/app/build.gradle b/model_zoo/official/lite/object_detection/app/build.gradle index a7a88d896a..8bfecefa11 100644 --- a/model_zoo/official/lite/object_detection/app/build.gradle +++ b/model_zoo/official/lite/object_detection/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 21 targetSdkVersion 30 versionCode 1 - versionName "1.0" + versionName "1.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { @@ -23,12 +23,10 @@ android { } } ndk { - //abiFilters 'arm64-v8a', 'armeabi-v7a' abiFilters 'arm64-v8a' } } aaptOptions { -// noCompress '.so', ".tflite", ".mnn", ".cambricon", '.mslite', 'om', 'ms' noCompress '.so', 'ms' } diff --git a/model_zoo/official/lite/object_detection/app/src/main/AndroidManifest.xml b/model_zoo/official/lite/object_detection/app/src/main/AndroidManifest.xml index 8061839645..d3b3d37153 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/AndroidManifest.xml +++ b/model_zoo/official/lite/object_detection/app/src/main/AndroidManifest.xml @@ -20,10 +20,6 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - diff --git a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/SplashActivity.java b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/SplashActivity.java index 6c69aa6b12..2c1c19d559 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/SplashActivity.java +++ b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/SplashActivity.java @@ -1,52 +1,75 @@ package com.mindspore.hiobject; import android.Manifest; +import android.app.ProgressDialog; +import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; +import android.provider.Settings; import android.view.View; import android.widget.Button; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import com.mindspore.hiobject.objectdetect.CameraActivity; import com.mindspore.hiobject.objectdetect.PhotoActivity; -public class SplashActivity extends AppCompatActivity implements View.OnClickListener { +public class SplashActivity extends AppCompatActivity { + private static final String[] PERMISSIONS = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_PHONE_STATE, Manifest.permission.CAMERA}; + private static final int REQUEST_PERMISSION = 1; - private static final int RC_CHOOSE_PHOTO = 1; - private static final int REQUEST_CAMERA_PERMISSION = 2; - - private Button btnPhoto, btnCamera; + private boolean isAllGranted; + private TextView versionText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); + versionText = findViewById(R.id.tv_vision); + showPackageInfo(); + requestPermissions(); + } - btnPhoto = findViewById(R.id.btn_photo); - btnCamera = findViewById(R.id.btn_camera); - - btnPhoto.setOnClickListener(this); - btnCamera.setOnClickListener(this); - + private void showPackageInfo() { + try { + PackageManager packageManager = this.getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo(this.getPackageName(), 0); + versionText.setText("Version: " + packageInfo.versionName); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } } + private void requestPermissions() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + isAllGranted = checkPermissionAllGranted(PERMISSIONS); + if (!isAllGranted) { + ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_PERMISSION); + } + } else { + isAllGranted = true; + } + } - @Override - public void onClick(View view) { - if (R.id.btn_photo == view.getId()) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_PHONE_STATE}, RC_CHOOSE_PHOTO); - } else if (R.id.btn_camera == view.getId()) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_PHONE_STATE, Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); + private boolean checkPermissionAllGranted(String[] permissions) { + for (String permission : permissions) { + if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { + return false; + } } + return true; } /** @@ -54,33 +77,56 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (RC_CHOOSE_PHOTO == requestCode) { - choosePhoto(); - } else if (REQUEST_CAMERA_PERMISSION == requestCode) { - chooseCamera(); + if (REQUEST_PERMISSION == requestCode) { + isAllGranted = true; + for (int grant : grantResults) { + if (grant != PackageManager.PERMISSION_GRANTED) { + isAllGranted = false; + break; + } + } + if (!isAllGranted) { + openAppDetails(); + } } } - - private void choosePhoto() { - Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null); - intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); - startActivityForResult(intentToPickPic, RC_CHOOSE_PHOTO); - } - - private void chooseCamera() { - Intent intent = new Intent(SplashActivity.this, CameraActivity.class); - startActivity(intent); + private void openAppDetails() { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage("HiMindSpore需要访问 “相机” 和 “外部存储器”,请到 “应用信息 -> 权限” 中授予!"); + builder.setPositiveButton("去手动授权", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setData(Uri.parse("package:" + getPackageName())); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + startActivity(intent); + } + }); + builder.setNegativeButton("取消", null); + builder.show(); } - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (RC_CHOOSE_PHOTO == requestCode && null != data && null != data.getData()) { + public void onClickPhoto(View view) { + if (isAllGranted){ Intent intent = new Intent(SplashActivity.this, PhotoActivity.class); - intent.setData(data.getData()); startActivity(intent); + }else{ + requestPermissions(); + } + } + + public void onClickCamera(View view) { + if (isAllGranted){ + Intent intent = new Intent(SplashActivity.this, CameraActivity.class); + startActivity(intent); + }else{ + requestPermissions(); } } } diff --git a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/BitmapUtils.java b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/BitmapUtils.java new file mode 100644 index 0000000000..f8321c25f2 --- /dev/null +++ b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/BitmapUtils.java @@ -0,0 +1,151 @@ +/** + * Copyright 2020 Huawei Technologies Co., Ltd + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mindspore.hiobject.help; + +import android.app.Activity; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; +import android.media.ExifInterface; +import android.net.Uri; +import android.provider.MediaStore; +import android.util.Log; + +import java.io.IOException; +import java.io.InputStream; + +public class BitmapUtils { + private static final String TAG = "BitmapUtils"; + + public static void recycleBitmap(Bitmap... bitmaps) { + for (Bitmap bitmap : bitmaps) { + if (bitmap != null && !bitmap.isRecycled()) { + bitmap.recycle(); + bitmap = null; + } + } + } + + private static String getImagePath(Activity activity, Uri uri) { + String[] projection = {MediaStore.Images.Media.DATA}; + Cursor cursor = activity.managedQuery(uri, projection, null, null, null); + int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + return cursor.getString(columnIndex); + } + + public static Bitmap loadFromPath(Activity activity, int id, int width, int height) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + InputStream is = activity.getResources().openRawResource(id); + int sampleSize = calculateInSampleSize(options, width, height); + options.inSampleSize = sampleSize; + options.inJustDecodeBounds = false; + return zoomImage(BitmapFactory.decodeStream(is), width, height); + } + + public static Bitmap loadFromPath(Activity activity, Uri uri, int width, int height) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + + String path = getImagePath(activity, uri); + BitmapFactory.decodeFile(path, options); + int sampleSize = calculateInSampleSize(options, width, height); + options.inSampleSize = sampleSize; + options.inJustDecodeBounds = false; + + Bitmap bitmap = zoomImage(BitmapFactory.decodeFile(path, options), width, height); + return rotateBitmap(bitmap, getRotationAngle(path)); + } + + private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { + final int width = options.outWidth; + final int height = options.outHeight; + int inSampleSize = 1; + + if (height > reqHeight || width > reqWidth) { + // Calculate height and required height scale. + final int heightRatio = Math.round((float) height / (float) reqHeight); + // Calculate width and required width scale. + final int widthRatio = Math.round((float) width / (float) reqWidth); + // Take the larger of the values. + inSampleSize = heightRatio > widthRatio ? heightRatio : widthRatio; + } + return inSampleSize; + } + + // Scale pictures to screen width. + private static Bitmap zoomImage(Bitmap imageBitmap, int targetWidth, int maxHeight) { + float scaleFactor = + Math.max( + (float) imageBitmap.getWidth() / (float) targetWidth, + (float) imageBitmap.getHeight() / (float) maxHeight); + Bitmap resizedBitmap = + Bitmap.createScaledBitmap( + imageBitmap, + (int) (imageBitmap.getWidth() / scaleFactor), + (int) (imageBitmap.getHeight() / scaleFactor), + true); + + return resizedBitmap; + } + + /** + * Get the rotation angle of the photo. + * + * @param path photo path. + * @return angle. + */ + public static int getRotationAngle(String path) { + int rotation = 0; + try { + ExifInterface exifInterface = new ExifInterface(path); + int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_90: + rotation = 90; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + rotation = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_270: + rotation = 270; + break; + default: + break; + } + } catch (IOException e) { + Log.e(TAG, "Failed to get rotation: " + e.getMessage()); + } + return rotation; + } + + public static Bitmap rotateBitmap(Bitmap bitmap, int angle) { + Matrix matrix = new Matrix(); + matrix.postRotate(angle); + Bitmap result = null; + try { + result = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); + } catch (OutOfMemoryError e) { + Log.e(TAG, "Failed to rotate bitmap: " + e.getMessage()); + } + if (result == null) { + return bitmap; + } + return result; + } +} diff --git a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/DisplayUtil.java b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/DisplayUtil.java new file mode 100644 index 0000000000..2f657127c4 --- /dev/null +++ b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/help/DisplayUtil.java @@ -0,0 +1,48 @@ +/** + * Copyright 2020 Huawei Technologies Co., Ltd + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mindspore.hiobject.help; + +import android.content.Context; + +public class DisplayUtil { + + private DisplayUtil() { + /* cannot be instantiated */ + throw new UnsupportedOperationException("cannot be instantiated"); + } + + + public static int px2dip(Context context, float pxValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / scale + 0.5f); + } + + + public static int dip2px(Context context, float dipValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dipValue * scale + 0.5f); + } + + public static int px2sp(Context context, float pxValue) { + final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return (int) (pxValue / fontScale + 0.5f); + } + + public static int sp2px(Context context, float spValue) { + final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return (int) (spValue * fontScale + 0.5f); + } +} \ No newline at end of file diff --git a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/objectdetect/ObjectRectView.java b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/objectdetect/ObjectRectView.java index 4b5306f07d..16b9e4bd97 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/objectdetect/ObjectRectView.java +++ b/model_zoo/official/lite/object_detection/app/src/main/java/com/mindspore/hiobject/objectdetect/ObjectRectView.java @@ -2,7 +2,6 @@ package com.mindspore.hiobject.objectdetect; import android.content.Context; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.RectF; @@ -10,6 +9,8 @@ import android.util.AttributeSet; import android.util.Log; import android.view.View; +import com.mindspore.hiobject.R; +import com.mindspore.hiobject.help.DisplayUtil; import com.mindspore.hiobject.help.RecognitionObjectBean; import java.util.ArrayList; @@ -32,34 +33,34 @@ public class ObjectRectView extends View { // Frame area private RectF mObjRectF; + private Context context; public ObjectRectView(Context context) { - super(context); - initialize(); + this(context, null); } public ObjectRectView(Context context, AttributeSet attrs) { - super(context, attrs); - initialize(); + this(context, attrs, 0); } public ObjectRectView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + this.context = context; initialize(); } - public int[] MyColor = {Color.RED, Color.WHITE, Color.YELLOW, Color.GREEN, Color.LTGRAY, Color.MAGENTA, Color.BLACK, Color.BLUE, Color.CYAN}; + private static final int[] MyColor = {R.color.white, R.color.text_blue, R.color.text_yellow, R.color.text_orange, R.color.text_green}; private void initialize() { mObjRectF = new RectF(); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - mPaint.setTextSize(50); + mPaint.setTextSize(DisplayUtil.sp2px(context, 16)); //Draw only outline (stroke) mPaint.setStyle(Style.STROKE); - mPaint.setStrokeWidth(5); + mPaint.setStrokeWidth(DisplayUtil.dip2px(context, 2)); } /** @@ -68,15 +69,14 @@ public class ObjectRectView extends View { * @param recognitions */ public void setInfo(List recognitions) { - Log.i(TAG, "setInfo: "+recognitions.size()); + Log.i(TAG, "setInfo: " + recognitions.size()); mRecognitions.clear(); mRecognitions.addAll(recognitions); - invalidate(); } - public void clearCanvas(){ + public void clearCanvas() { mRecognitions.clear(); invalidate(); } @@ -88,21 +88,21 @@ public class ObjectRectView extends View { if (mRecognitions == null || mRecognitions.size() == 0) { return; } - for (int i = 0;i recognitionObjectBeanList; + + private Integer maxWidthOfImage; + private Integer maxHeightOfImage; + boolean isLandScape; + private Bitmap originBitmap; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_photo); + preview = findViewById(R.id.img_photo); + this.isLandScape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; + openGallay(); - imgPhoto = findViewById(R.id.img_photo); + } - Uri uri = getIntent().getData(); - String imgPath = ImageDegreeHelper.getPath(this,uri); - int degree = ImageDegreeHelper.readPictureDegree(imgPath); - Bitmap originBitmap = BitmapFactory.decodeFile(imgPath); - if (originBitmap != null) { - Bitmap bitmap = ImageDegreeHelper.rotaingImageView(degree, originBitmap.copy(Bitmap.Config.ARGB_8888, true)); - if (bitmap != null) { - Matrix matrix = new Matrix(); - matrix.setScale(0.7f, 0.7f); - bitmap = Bitmap.createBitmap( bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false); - - imgPhoto.setImageBitmap(bitmap); - initMindspore(bitmap); + private void openGallay() { + Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null); + intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); + startActivityForResult(intentToPickPic, RC_CHOOSE_PHOTO); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (RC_CHOOSE_PHOTO == requestCode && null != data && null != data.getData()) { + if (data != null) { + showOriginImage(data.getData()); } + } else { + Toast.makeText(this, R.string.image_invalid, Toast.LENGTH_LONG).show(); + finish(); + } + } + + private void showOriginImage(Uri imageUri) { + Pair targetedSize = this.getTargetSize(); + int targetWidth = targetedSize.first; + int maxHeight = targetedSize.second; + originBitmap = BitmapUtils.loadFromPath(this, imageUri, targetWidth, maxHeight); + // Determine how much to scale down the image. + Log.i(TAG, "resized image size width:" + originBitmap.getWidth() + ",height: " + originBitmap.getHeight()); + if (originBitmap != null) { + initMindspore(originBitmap); + preview.setImageBitmap(originBitmap); + } else { + Toast.makeText(this, R.string.image_invalid, Toast.LENGTH_LONG).show(); } } @@ -64,9 +98,7 @@ public class PhotoActivity extends AppCompatActivity { Log.e(TAG, Log.getStackTraceString(e)); e.printStackTrace(); } - // 加载模型 boolean ret = trackingMobile.loadModelFromBuf(getAssets()); - if (!ret) { Log.e(TAG, "Load model error."); return; @@ -76,46 +108,83 @@ public class PhotoActivity extends AppCompatActivity { String result = trackingMobile.MindSpore_runnet(bitmap); long endTime = System.currentTimeMillis(); - Log.d(TAG, "RUNNET CONSUMING:"+(endTime-startTime)+"ms"); - Log.d(TAG, "result:"+ result); + Log.d(TAG, "RUNNET CONSUMING:" + (endTime - startTime) + "ms"); + Log.d(TAG, "result:" + result); recognitionObjectBeanList = getRecognitionList(result); if (recognitionObjectBeanList != null && recognitionObjectBeanList.size() > 0) { drawRect(bitmap); + } else { + Toast.makeText(this, R.string.train_invalid, Toast.LENGTH_LONG).show(); } } private void drawRect(Bitmap bitmap) { Canvas canvas = new Canvas(bitmap); - Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); - paint.setTextSize(dip2px(15)); - paint.setStyle(Paint.Style.STROKE); - paint.setStrokeWidth(3); + Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mPaint.setTextSize(DisplayUtil.sp2px(this, 16)); + //Draw only outline (stroke) + mPaint.setStyle(Paint.Style.STROKE); + mPaint.setStrokeWidth(DisplayUtil.dip2px(this, 2)); for (int i = 0; i < recognitionObjectBeanList.size(); i++) { RecognitionObjectBean objectBean = recognitionObjectBeanList.get(i); StringBuilder sb = new StringBuilder(); sb.append(objectBean.getRectID()).append("_").append(objectBean.getObjectName()).append("_").append(String.format("%.2f", (100 * objectBean.getScore())) + "%"); - int paintColor = COLORS[i % COLORS.length]; - paint.setColor(paintColor); + int paintColor = getResources().getColor(COLORS[i % COLORS.length]); + mPaint.setColor(paintColor); RectF rectF = new RectF(objectBean.getLeft(), objectBean.getTop(), objectBean.getRight(), objectBean.getBottom()); - canvas.drawRect(rectF, paint); - canvas.drawText(sb.toString(),objectBean.getLeft(), objectBean.getTop()-10,paint); + canvas.drawRect(rectF, mPaint); + canvas.drawText(sb.toString(), objectBean.getLeft(), objectBean.getTop() - 10, mPaint); } } @Override protected void onDestroy() { super.onDestroy(); - trackingMobile.unloadModel(); + if (trackingMobile != null) { + trackingMobile.unloadModel(); + } + BitmapUtils.recycleBitmap(originBitmap); } - public int dip2px(float dipValue){ - float scale = getResources().getDisplayMetrics().density; - return (int) (dipValue*scale+0.5f); + // Returns max width of image. + private Integer getMaxWidthOfImage() { + if (this.maxWidthOfImage == null) { + if (this.isLandScape) { + this.maxWidthOfImage = ((View) this.preview.getParent()).getHeight(); + } else { + this.maxWidthOfImage = ((View) this.preview.getParent()).getWidth(); + } + } + return this.maxWidthOfImage; + } + + // Returns max height of image. + private Integer getMaxHeightOfImage() { + if (this.maxHeightOfImage == null) { + if (this.isLandScape) { + this.maxHeightOfImage = ((View) this.preview.getParent()).getWidth(); + } else { + this.maxHeightOfImage = ((View) this.preview.getParent()).getHeight(); + } + } + return this.maxHeightOfImage; + } + + // Gets the targeted size(width / height). + private Pair getTargetSize() { + Integer targetWidth; + Integer targetHeight; + Integer maxWidth = this.getMaxWidthOfImage(); + Integer maxHeight = this.getMaxHeightOfImage(); + targetWidth = this.isLandScape ? maxHeight : maxWidth; + targetHeight = this.isLandScape ? maxWidth : maxHeight; + Log.i(TAG, "height:" + targetHeight + ",width:" + targetWidth); + return new Pair<>(targetWidth, targetHeight); } } \ No newline at end of file diff --git a/model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/btn_image.png b/model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/btn_image.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e78d02d27a872ee21b5eb6c33ed06549c9fa04 GIT binary patch literal 1999 zcmV;=2Qc`FP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuDIY~r8RCodHTWf4oMHD`>OL>UU zkP5+6a1$dYLNo?N)C3cJgrE`?Qd{NeBZz>Yr~&i`@ee*C*ftnnJT%0@nkY3S7=qFm zqsADGg2ZU8NR5X_ujIz_qN?#nB?rtoH=*S`Mx`^dv{k*h-v9I zxf$KfAxY5?yG?Z^ND4_i>T1NjDP^#d2zGhu>ZNfxlDg?=O4EBKQAXqHW{F?I@DK^3 z6YgVBIdup@U19atQ$K?oYVWDtrY*D)z)mp*7Ga3qFR9n2fP*{MSX(V#wgGwG_B;dr z3|LKpWexH^N6<9??)tYSBI)DW8nN9biku1P%T?Y6K$dNkM%7n|V_AA1Mb5hbHug%N zJ_<`6p-XH6%9(&0iS}W*gtGVA1ZZQ+@l{mNKFe!zH;>0<^ecxh%l(SJwVWKGU#qG_ zci(y~a&Nwi;2Yn_vi;38F(Rnaku!cW1N0wLp>1Y8&B zprD(!JWdawzLj+@0V{XP5gjLKwo8e!#BkXZjnb0!RpOLV6=n8hgB;T(=tGR`i5h_8 z&{C9L0^EZTz)yieax{>j=JA))qs0!M0k5kOt;d2CL6gR!+YbB)^9νit^MZ&8q7jtUZ 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 LNkvXXu0mjf1rugk literal 0 HcmV?d00001 diff --git a/model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/logo.png b/model_zoo/official/lite/object_detection/app/src/main/res/drawable-xxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd2da3ecb2f4259e2813a86d4d05994a95c4b22 GIT binary patch literal 76723 zcmb^ZcT^MW7d8y59K;43MWlmLq=SHT2r2^7dksbDy@#5Bh>8fIcLov_pWDs=Y9VE)?Tw_GMUMm`<{L8a_ws;R6|XH^a1UITeohJDt>scb?erh zxLdbw8{fNobH*!;&*x@$+e1s?-K~-V`t_R+@2w0JtyNWTaorr>yLCIn?$$qlFS*%h zZ?;>vh<@F^MRc>j{rB9jJOAg~J8{2={?GAkvJpW9mv_orF) zbwy@3(M^>u$to|oDL%Y=_oO1`>zm&(Wj{kJ@_#)4@!a{8i$XddT9jw#Iu6 z3S*6@lvbqv@0q`TWqtGEj$#+!yk7a_8lZcmBLmtP8`=>O>TYN%0N|u>;<#D=!t+M& zLUa)w^v^ru|9=W2gwhs3$fdWY=lb_Q5~Vl)apxOh{R5dr4um>V`jNEG^Z&@N!aEbM z5*T#%HZaS+E8L}_1YJ$F5iASXzZxN533=BvC-$4T*!^3I^I?|i##eOx1n3xV-6XKH91w!v zI-)%hPHAuv!JQ+IjSl8EW=`gvb|B{o5K3akRi%|z(?6XPJ4}qba=Mu+zCQS`@YoP< z;H|iP`Ol9`HdC{faMecJd58YcgPD?T1FEX>m066FAU4R^f=2iQeKdK}Qg&6_c&f`5 zD1Aq40Mu|cTiq}_U43rt(y*RVq?R6583$l?faxXbvyXofOFQ}UMOGvK&3~l%ZT=hB zr80xsl0qqA?1TSkP1t$=SeVh}7@PBww`I|=Z6A8uwCd9qTV*9s#F1KjPv^y}s0l|A zVE4j2YO>=tiOHPpAz)+;bG?L~6Wfo!jn?8`=Y%3!6}y#lM!1f(K+pF7JHW3Gcrx$k zo+oh0pq&9H*JwNQ%LIy&wJL0>mtQD*nAf7w)_7c=M$Y@ zj!jyt7UMJnz1KTIR8>YSE{-*HHXl1jTT?L=M_e;1%vnphhdMzPwcq>MO1_&@Y)0@4 z(;YN5dF+grdbxyb;&?X?HQEdI$wghsCAB|B%Dl1tWR$SB zA3ZEZA#2PgT=nl|L0OZm(eaZSv}V>q>!HL|Q5_h&x}t0|uSBK5gFwJ;3Hil%V8c(B zTA>^UQn#LVLb8o*GWYQxns@(wUvKi8hxC3q25POga)7T^djmYKg{CaBb{vs(3K)i{ zmK0tCYoYrodp06*W9)WRh2|EaW2rlVmeyY5sk0}&MNQN!sLsOK-V3WnV+GJHv%$?a zVzvM1!_Duz>-@5H(fVrf2w?WJ;bL2;)GpF9uys4LW2h*G9_5Jmj#XhcHBWXfu$-C+ z?`j}zM9*zr;!DuZgr@O}fo{o%e#NwM(M|Wv{yZHr=jV|4=iC2R!&QlUj#=dZOzABF zTS)7`8X>GN5HllM5h*EWF9a;?`#y9ksQ)s$l_0$HWc@VUO7g1XEYbR8=L&VwXh#@U zv^U!UgtHjtNAAT7Y9A_jJ^#Pd3qt(!m_<%Z{v$;E+^R|VU;}S^;yoSTm@uVbEgEDU z7C))NjQ-yQkz5IiIC9Ng@|^TxFb$v`+3}`>6r{A9`Vh>86%d}qy-&FiUKEFCDaiQ$ zj)A`F!36X1T{778#o0c3=f>|eU z)}!)r(;2KWItJvf_l^cyV7Zs&(in!Q+ANn2f1tkYI@YFS| zKvg*4-NuO{-*5dc|!c|KT6sBK<9JnyKN zAbDfWYU51CvLgJxNbzc5aTm zuN>fz3(iLMTTbH3`}Ak~zcdV5yXSgeA{+M`MNzCt?BvVYYKo7Zkc!b-Ir1)9Ola^~ zxXEs41pWVH=)tLo)Xy_d^QiT`DypkdtaXtGXTW`S?DeGTuWFFN7|!t_Cj^S1p`*CPlTsU-X-))fd^)HXRP*ga=gTKk zwP%xOI|BndO$DNX^XaI`NtiQ<_#EDAyvismb!ujC35dXtsUZcvKv$%kO?2X-Lgl>V zX`z?slltq@Ik(?t5);Ver(T7bBxAvKJ#n?hN;lK3Z7HndC8Z|- z7HZ-L8gd1(Ot{1Qw)*?$F8?$j>zBCUKIcs{eluvsgvFd_pjxfvMfQOym5eJ_J(KVk-=tY&h06-R@_S)vc8$qc=f9RT_{XaTxR`cR;Kz&zUmBn^gnL9<%X#~ zP6b2-3{QXb8U=kzkNwucyJ<-ly-diYvHtK7N|zhiOnNi1VxC-Oe?XoYZXpAG-V;qn*?4@Ikly26yh zq(J21?@;#I`gTVWB4Xd5?AcNO(sOGCeHxIBIG049H;D+2`TXv?qNLgUG^%Lx6lrWb zedwXxKkk2bfU2Q0KKT2>>KCHF5ua<9-g9JbLip>>%k`!d@uJD~EBh+Va+y7xp|F-x zA#1~Z{gDZ~pcsP)>6~mOXuzAnM&sfX!(i#qkw(_tH!jDC*IU&rX3t*g0F|o?imLoN z0N2EUb@+0si;29c?bYb@(xqQiGzyl52*2O`Z_MWrhY(4oi}4eaYJA>X5cINB?}Fp8 z9j2N2LQ%iorn5XU@VK{bX)_%cAn(RXfH;Rbql#kD_=d~Gk}GJ|HBaa#9xmkuCFU%5 z+w*L5y_3o22SA@*blK}({H`<&1g5u7zn}>7TFSgi;=dS#qUv6+lD!t8(rFoc#{WAr zcUsU?6WsjQ$dVx*tU1&Q#by9UX08awe?u8_6G{3IwT{`zIk1Ac_<|Fb6cn!)0uvu| zoG9zLy(C6%r%Xb{f~w1TA8BqrIN5g<;tYCcvwojGu1!4pTQUKD)vWAtc1S|obXvu9 zIWMdrwK@c6ph*=YcNw(k!yhC-rO}L6Q-OY+>pLKUH8nc5ya5%6o=sriZ8{0JUVSv5 zx`mdsBge2-asF=#lM%akv!xWgp`g$v;82pTM8n>MxnZY7qb_kMXsw(;oCD(b-{ako zOQf^B^*4>stGGju;NL)!vH#pYS@rV}+P2k>nk<{3Y@4L{Ksv~xyH!g;lY3w_ZO>Zw zj;2D4S$E4=hRom)Y)lz#(J15MzxdS=W>-`tu{Axoi4x5@Co4Utd=~L}2wG+vm0g8h zQg|(&i-ji7d@UY%`o~T?a#`W(!uPu2>W8-J)pDXSq&-smbm!CnfGLs1@Fm@NnxZQA~i*@BI{jhY>)0|{x6w~MHk^L-N@A74q`v7vvYF6Q7j@ z;Q5`7reonT!CG_@DebmYA5MnFuoaiqqMh@Gfr>oFr@6e+8IUToVKg` zF@DjcQr^>nw*g z{$+Ms0$pT9BV%rbd~f%rhG0jLk~_NBXcxU!?;^Mx!=d-?J87p6|GPDCN3#vL4L*O_d08L%ygTWao;v6)?FUzw&S z>9Gw|qs8~eCqHYC^nm3AZvXW&2B-&58{~^j&*cIZ&+3oWtE)i+i(xwDEGg9w&4+oF zqs?~Zj)JAURL0Z@cT^J34L*-4gUalR2I_|N*?@CrV>UCR4Oe)MCk@ zIBDgPRS4;d#){Fus4dGxn1&g>08|_DmI$0pf{NTJb57%O0!l6}8`_<1@E>sUul>z8 zxPd{LSb%V0uBDq_w1`kf-l%=}<#x=5~ zcfh<;(Uc4GXW(bb+otLwajnIV5*(Zu%8v>VbsZX1f!RM*l`;-pr8W4bkB1{2;>J|& zJk2V3Qipk&KKZ#HvvrB>TI&*zX);C#(Wu|OszGM31=0!^o)L>DMq;s4acffo9 znMjyBvsf7d$Dr7y^)G@`@TVeyr`qMv!j_zHNUt&nw$bual|NL)7I1`^@ky*P7 z&$NM{RBn?OL*JNnD@N|s04(T)QlFP=sTEq<-K=R;k#EXxR}b!wia_9rzSvr*CVk@z5hy(fZI{t?>C7Y{q)V6M`Z1O+6C74>A^R!>e+b@6$)9OI^dXz%Z#ga6}rl5JY%(;_|yrn zJKPZrfuNjXy~BbV!<)&1HJ%N)Bq;?pEVPjTVPkcDmmC5bk}qw59577OgA#+6`n;(# zm|f)BYLq*{ey(roBDP^ghZPa@m}|)4w%!Bz*!pT%%jxN`FG9 z*r#5qLU0Tx6I*;f$dRlpu=canG~wpe^=gg%&X!tF_~=#*@q4zp6y|hVD{q_pz|!np zesbe2MYgbj`NDI@4kO0B=l^?w@CWmtV%2S~2AT#~nC@5Z`+@}}$x!}G!;*5LT-wYq zd;hSlE*Hg)0b|%}Kp#7iRruS)$BvMJ1pbvrUB1xj?^O~4O8%fHKAU0Jgw-9G&w{$K zq(H?g%EPA;h|LWf&eD75lishHdf4_DopDBE6Ua1ezb{$|K)TJC_I%w3ebT#lQW zoNv=zuj4P#c!^h%Xet^{mIANW?0X*g`TU5%*4(d6j`GW2klDPB9EnwF$(CYv*kV<9 z`)ICODD{S(pjlM@=lV3i!S9j?x`uo>QI6OsJ@(bu3FDV^eV6?tI~S!69bU%nsNO${{==q&sg=C{_$a1seopPRt`wI5 zRIlD&8n%)7bU8L`<~}4>dVcC;cK%0Z?sQV7*6KPKIR$0I*_P@&>HLFG3m^UhC&Z`~ z@zC6*$F>yRQj?&AKQBX+P(!$qSw3jr_LZ}1C>|ha{dNIi%h{#=r+QAY6@qauN_yZ(GVRCiL z*-DE~B(>Vrf(u4=bK-Pp8sXE{L#ytb+8nyy*Vqfv!M(uEPAHoIYpyAqljHa6y_1H+ z?>EbXfZNuy;H&(J7N4+Vtu%BC!eSQC;{C@X8>*f4yN5RQE0KHwlXJ$6gdf@+DhyzY z;j`c5z|`tdq@&-Br32axw>44}Q6EV>p`VNPI?mSz7s(wC$IaH2CvX5^gv9v7J*%|& zhktXXQ_4T%h3f3NLmOpTS#xyw@hh-$+{}uln0pf;7Fe1|$vUiKd#2aa@?mF*~Bm-vqz*$rPJEKe32)sL<-HP$q)Vehz zJl>-kV4Y#lf|wn4cS9Kpoo-e>QuX+S^XRi|VGl!t&UU5c>G_6^E=5?%K7`>bQoAza%;^O==U$;OP}S(j`inN&c+ps`#&%7`hR^U;=!pYl0Jiw zf6iJ~$YP{TsN7c;-^zI-uN-HRSBxmP0<6%?&{@BkT;ui0v(oCw(s(r(TU48G0|V6- z<3Wqs1FB}HvFD8!gJyxleY4VYw%%D&2g{wd_TCz*`uz2z00{vQHo_y|g26`m8W!mi zu3`buB^5rX{^VvBfi-{yjj28Rp-FuBPa#V?kTSDITE*23E9;@*DbR78pt1i6vR;b=;35kzUAs zQLu=SYgDDksVG-6`W=v@=S=q%n?nc4v$3~xJQ^L0*7r~#TwmaTJGFQg7vJH=8FC0> z7z8iiNkuEWa=dorLbGH|F?n=^1#JGtT?|;vJgc<7q8IV8jnj)vBPOTSe#04}x%)@2 z@s5-mpn%$Qu7ygC^}PE_&Hk|1p&ySSx1g{GOUQN+0wMFVAPM_N_J4{kb@TLYgSP7- z%eVPJrES33Z#QAmO~y3+yjXqvy*>v8f5Zn$$wfn8urz@DslpEyt@h)iR#JEOsb3Ys z<3M0ytk{rtDa)ijtIO%>6u$O&L;s>@;2eLUgC2(4F}J>$bxq9}=;}IN8US|#)f<*^ zH6zr{lf@%>e$c8TP7W_yZtbAL*!+OCMj~7o|I?$=zDH!ErajMuPtBXgiXsLkzl6!t z0E0W3!Oi!K{$egI`ELdtVr%26SzayLQ|QwmIz0$E^yp_VWHp71EuP7>``n&HK8D&PE5ter&3k%H>m|zN_?Bo&}L7< zIV-=1TqqNQe2~BvM!oqbax>P@IIYwf5-q=}42zlhhvqM4v8MNH?MR6}M#B2-6nl9> z_NL;3Je*$Dp;P>B% zyjZEEg9;#szS}sNb7ho%kj;>l^r38yy$x0WIng6CR2swoezi+Mnl{RkbGPK4;lH4v z6g%Et`+UG?b)8(T`xnN)kH5>^JkG@?ZwZ=^BN1gkL`Q0joocCh@p4U8qtbb)SVr_# zkpK&vNQsrNDo?>pU|R#XlnqTO4~Q$yQu564Vt^zijZw*5e5V5(hESOt!BS=R8d1s8 za}M6;mB}`@D;T&)tG7i{ZUUf-6b4+AeZ!-NAn|NkHGA7$?c36mBZw;LRx{ims->(G z`V_fh^A|P3McOv${Auj)5^78ic^3cwQi%A1&y8fd{2L5ug|g%Sy0V}}WvI-ShK@dX zYA!XBeiSuJzWs9gHLLEEgo#XRtv_8yOZPuy=yab@ycol%r5zqw0A%ep4RpN;gAb47 zdPADLhp))5_q4CCuqRE2`i&=uYr^iu*6jHVW$&cy-cL4X&Jl)fXPNCxc%zomwzg(s z@R+N)tYj@E_3^hBDi%vmDQqAoyV2CvoxJ0DUYD^)!Zr+>V{lANFyYI}^Dlo*h=D8d zDec&JfTrL|{=iXIJUH0*Uw(&3ZztMU2l^~*HH$J`$p$VmDaz+xogo7?QKX8kJcC%; zq|<4eXQ<-}=lq-vBj9MXs?!EG%>2)w&d^T$T-}1p&SmGEufhd3Y^h#3RE}Le3YL2i;96}6guMNmO5gZM4u9x=wV8tZ%!jeL zg#b>4UJV->W$}Vcng^b({U*XAuUh-Jc@RykHD&NqHP&L@jf8@X%609~^pBN>Fym7M zzLh7$i?zw^(ro4u6X?1y2i}s#`1XpHUY|EjBM(Yar{#T`(Dvdud7vI~go~jSINp6Z zX?WoJTV?DS_UaY6$Y>}pdW*-OJcCH@GkcPj+sEV2bLIqQ9Thbf-X6svygPi+cp4@1AnI$EM-!_)4$7gr%4LvA+osfFA zE@ycE#xUC6vM(abtIqno+(KxJ&?y)0EAp>pgv1km4SMd` z%=>Zu=Hd!p6IC_m7Q;+UBG{SkDLmb1hqB4v57&%q&T{2Q@1Tz4{!)1HJm|pI)(QlE z-4~dHqfXbK{8`DU_l3C6`&BR|k9zFM$uROE`kmp~Z&ztwanmT-0p&CG>Q1{~FFYKo zkW4zgD=L6zpZzjO=#7JW{YH$my)(X%(!cJRpp|;U-xI%w!3Wx2aWnZ(@#1SiOM|$J z;fP98x1PtHCg8E@#+kvQ4-qL@B*OSZwshl;AOJ$oPnzY=4)OVC3j*js|wTGgEA+)szY8H7H$X=Ujb zYa#!@gQJ`F9Epb8Q6D2FU`A>ajQ>u)9%(vMz|TT# zipoEGm?U{7(*q@@{F+YcUYa81oYu~iGYbt)yEPS!tsK0@Aa83&=jc{CHx`YmK4%ww za0ensUcSieAm1RmlgitzC=}D3pZSW88>|}JhL)@N1~*X@{Ggw}GI43e_HGTKK{yn)m1|= zaGD`B&g9lXp^!J`=*HeO40qYzQRegF3~B`0N%rG4+0%X6J2o57zD+%Jw@@=uccA*p z%ScAo(?0H+^avc|5N`g*u87r{ExnC<|NYo)?+#k1*UY7sQ3_stof;{@tgk0({ ziY^4f(5Xtl^j$49L%(0{EZpJ|q)U6OS$S%_N%~~DyI{a-sna<%vZk@1Gpmb<%;!_C zOB0P5ANDj=;n6^_LiC&8-gAwqD(C<^n7+B8J9_ z3dv}$Fs7HgDT9Nvn`+ckBD2$L=`U$v0(Z%bNk4_9>nGSa#c-NPnI@X1P^sLRiLmi1 zK^}wl_^%bTpi7kLFeG&nqL??H z=1pRWnJmGod8hWgm)C!dn^_!j1&n_@fsxM8xVL+_1}=yNd{mgGCBHmt8P!JW90Ot9 ziDy+1GmqVHG^I_nk)+F zIEKOX>9B|Opa{U#qDz|XSH9WdO~^?5qkQuyc%^c10#&*PJuuzJrpoyD3yUTxPWq;p zKJwp9D_vZgO|bYj#BPDO&Jh(GPxMJc~pXWgnq!8 z+4cNeZ*Wihr$RXr^MwONm)WlmnT(>t8`>ko!>B2S=_ESgS6_(wqx(2t$%`cOx{hs@ zzy4e|^;+`fYNRmD6UMdXZg+cmOgMwuIM`sTz=xi}WE}9Ssd6xh8*BkZaVBeS>ja+q zo6Y%e3(H)gLPr$>*F!Pj1H&nG-`Prec72!i{yK~SpG7NXWWveJHDZYjxiZm$>opXlkcAOQ1y`g*_GoB9 z8@T))=XkQ_(&ATwEm0za{tx$|zF8n7?FV*32Y=FU5*n0PFie+`6 z=cs~oPM*?`m3f|Pq2>84bQS!^D{8%7$d}F;my^@=y=sg*A3Eb7VCvW#g($dj4w1M)>a?$>o>4>v0#-hc)h)nvW9$e`LAA}S?djyY-^aqcgB%vz0j%<|!tqh}Qv$)MZaqoL5{HXWFlC*J{w{6^0~&0Ig=Gzaw= z7{wwxIP$=kS5QhK25N89E}9dZfzi+^XC?U^p0lk5PR0e zQl1&IDE-L*qM22f$C9)H+|!lCTTmA_Ab|G$hOPOqSb<&{rS%sCM~(V7Yro|fEQW){ zSa+GbsR?%4<|Ti0wb(-f=3D6_(nZ=b1OPP~GJ=g9Uwnn?h0M-6sm}@1Ap@Si+6LO6-RndQy^?zKr?>m`<7L^1g!> zmE2;r?3mbYp|RxJOrarzZ#Z2)TJ3KcM9Ch8&Dh{SI?9{{F|}>aguNtg5zWm_jVF1- zUu_)%9frOVee{co!-8^3zK!UZ3PSY zFgA184xW{>cVmgmAM;EHfGs>mZe3PBlhdmFBBWwbS|CLj!8wUt-RJiORnBaADzHb0 z;SZ^ruJ#kJr??{_zvF@O9r_kh^D#S{VE`p}F_E5*)|2Vl9XhkKO>&gzDQ}`cSR!Ag zzwdLI%{*~P5+P%JVIs-M>u|ZS{ZaNez2}e$)IWtR@N@$Lk35jgEG`Q1{rvcT48qcb z=~#ZwIRE)ld0R}axgJtr17}QGDIwO@mG_Sto-G0_ zc$Jc2(v?iT99FUZXs+%*ZO=wU@%NO)L+=Re@cBb;1~9H(9H_Qb(YyON<@Xuo%Ls-> zvF~wbUESDvu8%6Nz9lwRZuHEq)->7trw(%$;J6v7>SPP|n4Ag( zJKFD4d;9O-btc0Pd509(yp&JiwJnv-Q03HW;oz9PyNI9W?#1} zdKx#ZUc#9ZADzG0l$=LVVF*7Tg;3*)o4OZ#Rf0HBWt;Q(Szk=?HmOqc*VOOXKiRto zY0w}{9Xgs}4ds&EGUwpvn0EN|WXuvP=%GB=vPrA)I0SINH~+`5wbSNsK>m2N@pzoW zIG6j6qK1D>##T=s2ivU?FngIHJXc*az>zg zyD|@+lHO6q_s!1Wr{vb>sF*0LjUDME6i&4U%#{IP@Svg=eI4W4P4w;aTkCgI1@Dzv z31o0BEM=*j+UWy*Qt-xUvxvZ&?OKQgPKD8NE=Y`t>=B}iB+WtxCUDqNGCaYA`gWYF zN|$T0uXu%l#{{kCYrT0YS;&QEt#X!GGatBAs27!)TdP4&i6UnAACb(YWv|{7GsC)` zm$C9Z+2w{eGN)a&YF0e+x+#nK0O0K@_zhDFPw z!c)qU`~tcM={soLNiCpx4UN9%Ip#Q320BzbIT3mx80V1#tMvfAh>Vfq9(4gt9KWe= zw@p0j3K}^AI<4e89}ImT`A+RbL#NN7orf@8yx|B4c{w{N#Y)Jb{>(g{;j+^ZD#6jy z8T=8B0gx#4W7}vR0+-I!>zAROE;D<}`r;$!cRj(?L%g*`$h7^5gMj_z?MVMweSGbn zEK|dtN1$hG2?;(a88$QO(05SKiSNllult;@X*ceq>5b3mB6j8U)3bUu6Q(-SA>MPb zyBbt;Ek@0qw2zB6%v-L?GK^i<9}tD5pElkCJYLJ{r?=O}z57RUD3*%bqxgqPiH5n` z5PN|-&Uh`D6gIS&L?OT@MW!Sg-$!D2@pJj1skw9o0KbosLw@2V(6{=3aJOUQ-!Q(B+KiK~Pq_-o%ql+2OPOf=re z7|P=?*!gxk*4ch0IxpP^U!*2|T*ci4nuCo)u7IN8-6HSl!v%jo5-$v9U~600PYBNf zIMwK=Kb&-~rAvPeoGI7y_AG=PSI!2sK*T1vJe2>3b#-f-`v{iXc7vGc=co;GOI$wr+F=;f3+1teHQso zH(>&0P~R5;rl5~t$fPbO$MENYhrYBaDpV(+0d_vgLD@s+XubolS{ z`0jtz`%MgBw5d~K+dpb)ThEx^ftJffUWpKNv`F$k*wibzb|WQx$JA%vv0lkSbIa|u zL*84=mB&|8z^7F98yG8=v)>m^JZ{H^2Uh`XY@XA$yZ8pTxB*T4wM=~5f);E&+4ZUi z{IB2_f7&*xZFHPo(u98q81V6QpDCYWJUO&L(w~f6+8FP1BX{bqfpb2)CD&)G!6!5B z*CppJv(+aV=xNg7X{Z(uFEi*6K?|St`JDm;w6 zD^S3mWxEep-Kf2#8e0A=1Zp6%pF}>yxGWeEFyGddp%Y=A_D}%+zIY#8)3HvSuPu_Y zJ>ZADZ99PVHmoACyx}A)g&FGxFqqsI%?y=E$vhd4+p3L8)QS0bh{b`PnQKW7mZuA{*Z9IcGXQrtg9wr-CI&X7Psr@@BC*hYt?x#zH z3@>dIELq7g3lm89Nj`MzeFbAb*r2XRn!0QECdYYTT!W4+RJBB7LrSOfm5(zGu?%SL zRlNGlUftzG_%+^R%qd_i4E6SqIPuey&PN&Z}lul|nISzK3kUH>DvG^QfOiYGeXRi{VEL%LX@P=U5ju@u8cMKBi$&EM(FbE6x&5t!;pQkar#Z9O6NeTZ;uqx2s89|2#07 zSuHrN*Bx1Y&Gw<3`g^J+=Oa$f+UB;9w>uul2Pxa+v#FiKg~Rp{Cn;IAK|(mWP*Vh% zN-BYpNuIyw_Oyt3+-{K?pj`0287vrLP~yU%_6p3|dCj}C<{1a$ANcj5Zo=3{P#LK; zAyC-w`^w`<{8*&OB_OoqJkozC(rMajXhjC+{P=aQaxDL^2eMKkKPCX?v6GI~3X&`q zMe-fFV+tW?l-$%MI~H;~@8Rq_(K6j7jV3zn>lU>0Ra~oqOl`rGgdtG-?C{eWiry#Y zTg?r5Ttc($1)@YmK40W4u2+U=s&!sjoL)A1d1Aq)($A2`f!e(w!8X>Irb<3x!_U*V4=%#O?uS%PCy^BRv%&X22tE>Z+@S z2mf>rz^UD^QIX5J2klab?bbM12CXA8e3C`V4E~TDmCEhyj-z=bj*R9KnXa*#rfC%@ z+F~_)Upd_tqMox2(q|Xy55gyeTHw*7wNz|4JGOUQ7eaPVET|*+8}C_|!khXO0OEQ> zJF)Xd00E^oP0R;<`-v-SOk}wShV7^*V#{6@6YyTCvw81@5@^D<2O8bN;vc%)mXalz zC$rLDN|#J6<0UTQog@QT2zD_%_zWxR{RmbrT-aEi?wf9y`N<2JYSa8d>3mojKlEKfcfU*G+kpY4n6DP)eIwDs>xOPgNRow#g`q{^{wtacr&vfxQ z_1-2?sJ!9~AyhV#Q%3&6;BlgW_)XM+is7M|m$XYs3xHQqFFp+}30XB!H0jhC<2SpA z>seWRbDzog84G?XA4B-$pv`x#p@IT=j@>qv=5K=x?Yjou4U}54R#@74suXX|H~fBR zUr5cuR;ELaV%@dxWahh;2g{g~pn`(@c(EyReG=NAdf*Wrd%Dqbc-W!`3y9YZSYhO< zi!cO5s0+Z=9%+%ci82MY6e%cRE%=rA8B-5h)tC(+uGCXWkDyk6v8criLo;)WT@SoR zEXg$g(%Pt^*L>std?WSX?7XAK9#RSSkfGna%EIL;+RZnTsm0be>XXes#sWnSQXqG5 z4E=H5(Eg~xjA*B$Nz%8+Y!&uG$@i;$?QnDZH5OG~FA>yz_wM;!=Tq>*C5}g!0xXKA zOgAspn@g!Dx}3+$aUW+q0U(XPZE2I z7RBa$eHpj**UmYI6<6C~Ocp<%-HxVbM{OX%)dfQ7B1?AK_5skn^<@IMxo6eUqU#%v zl$Y^Erhqr5dEJxcm!aqDLhjCWwvxEyC5~Sb%v_G%>NT%RxhCjUR8&j}N#l)f=+=k0 zv^HBv(syddQHY2I<9#jM#&FPji(mExvCI`gD0Sx8Zm`|L|Eh<}5~W+SO8ebm@%V5W z@#PR867x`>1KodkLmG)te1LtGk)_!&HeY^^=@l1zTM6nJ@l*@+gi>DxL}z1RTl8LP zN$2F#?i9*qi{k@}Fw0^4>uzorUlx|mTivp5Yt`7Uk;mH}O*`Z>>fCDZqaTo>sqLZF zW6Z4gfz9lhv;I@F?W*tjbWZLLqwbs^ZZOfOy2d^cnG|^ccN__!l0WA5`BG3kY^Zi} z0HNUghA%NH&ba?c2&t~mWDyeW$LJIAuR1IMJElO(isCXiSjG25Y8vkj*RO3gW&IRqyoy`miMFMtu%}G!!fsSJ zYmffJWJ%Y`z+@Y>$Tc6={?0JzU8rR*5edxgU_LGift0{(z&xgrtzqoI|$=vsz9EoG_wS83?M8|wW@=d54I zrrBl(AwSzWL@8~EV5fi9eb7^uahPD$-JBV#{WZ&CGuY(o8CY55G$r(B!sB@md9kR} z>+ijA^O0WgvOy^43vlvJ}>-a2aW>_x7KXZ@Ay>rT=1vL1-JWBkqoD_F#) zt6-qlD+*Hgx)ejA<=W_Anb#=(mF(S647&O_oQuC98Y#%q zr*5<{a>jU6f-(^mN0&_p3aJuVS&4GU2aBQmy1xm9j_MJA>+d)2Ko49SE$&SD6TAW;qNn>gz9;T>A9-gwt+fM2OM)xZCi^X_o}yAN4#7>7@3P^ zZ@|9GPQbBD9cP)Ip1D_>4*T7Le(Xk;X^5;dSL=5{-uAcpg=)_)q{IvyD9r3=N@FouO>Cj3RFOr3!!n(N5<#EgU~-51yTc4bZv8OPT4_)1_Q;PV*gOlkSy zG#81Ux=tD06g8Laz6NVrui`Hn>ulu-l-$FRERqhQ@{w*`^oQ}Iu)6pk#PanV`ZN)H zXSC+-dBV){>2E)*zwCDvx<8udcO*{h37F@Sm+q;hh7jfJZRPn$?pJG$|GNs~3JB}#gub*_Jl-UR8|C5SScPpJW zt#k|a4=IJM4<4D?+%k>$e6#GFY5zim;kPBfP%t^$0+=q_7oL(x*`C&%taVM)ffVQ= zhFRrfk~Rt!uP*Q1aR2+U0x9ibV#|yVDh8;#_Y^<=9FACyj%>)56sbOzdz>+UAtzS` zu(0V1U&y48yaCp=O*bj%ET-pr=eWA8LtPj~j7F2Ejd2fh#)1pL)DSr>`4p|s>$gL& zfSD4-s_t*3Gwh**7z6Hgn*oU@7Ljxl#JtGl!@mK+emC=YGv*-U{YP7X*%qgdl$zFTnN8CnzYBP@F=XfL+`6a6fY7dw6|1e2ptfy|Tzl{daSz zNI$yt2T+G;KkOpj=cYIGhC+WIENH9XXO3v<%M;go*QwP)bg79P;`<6n6}W+(n%O#P zneV4#LiVuojIL`|s+izN1sRN4vZJbsn&WSUjt8j>s_}>)@4g27pZ@{~{k~vNf5d|3*kwjaQm>4#I_v{-oRWR z+iefxDLl+nqA1wyjd>p$NLpJlI%u56b+;8fp6Qx~(2(e(dTB2Z*8Z85_R!hk*Fr8- zE>793dI^nvok4H4^Z{=1a+~4qzdU9#Zz?C#><|=>p0$F>FoJz{fer0;1c#)ShVtb)e9M!n!;Gq4-Fh}in>0pBX2zB zMS|BGPU=F-Ot}PPus6uO0(a3@en5oL{NF~(GS`RqhGUVRcl%;V_N>(7zAZEHbwIQx zhu}6LedX?&hWnQ(ewy&;!zkc zmu$t*W5KlW=$xV7mb>553Q6C(3_!$fJQoF~FsS)ER9ZSjiz$rMDe(dlKG}hv=~Gf7 zv_TBKZc3-WZY*ZBL&_$S-diqjrt4}tEv@$hB~UUq{Vy0!-NCnDKH7|Xd4gebrC1sf z`w|qcJs*;nY7v{YRErWfz3ZSNPWGn7MQ$j^q$NK{!eEJKU;^J zB^!@ZhiPF^tR~gu^#4QCSFp9!e?gW~pcD!%P^3tpSaF9C9E!VpaSiTJ0;Lp(;BLiT zgA^?q+}+*X9X9WOcRxV#+}xbsJ#*&F%;onzTyppECcK-o@ps0(dqId}?@ukBpKB|; zc9$2HH(Gm~B7Y2caNisn=8Gve-W2E@E&Bx>w{8hNUo4G0)TaKsZ2hsw3gJ>6+)vV0 zejn5wRIW0sgr#3Cj)s@6MpJ(7FNsCv3art)*aikh zmmd^T1V)_IP)t<-T?7Dv>4dq@eu!bQk(ixWCRO{W`lFUXynX^th`g$jV@?l~fA+{< ztLA+uhHpIwsM>mH+JbACw_rcDvGhHxO#&e>ZPpK%@ck+?JVYB}v^W|Do$hAwod`Vc z?Sf^qY%sbc@YhqH1>iXbf3{$MCAUc5`($Zhq-Z6TTho|+T|+)`i$o_j0d z7zE4xXxs`rX*@x;7dUqR_gM6Dv!9ObeUrIlVNd3!`G|ECkyj#IFp+sMbl7rpP5itS z`Lb58_~eVA814khKNLm?C;_?+bCASTi}=_3LtZDGQy_Hw)hV4@`g@o7Geu*6{uHb6#AO zVofT{lUau9O=pfacQ~cnQV=KJt9G-cLG3*VzGvatt+X%+^0K)u7mfIK_c4zTw+z;a zA>BCGyKetUtG;g|5O61Zm}JP9CbG31Sps4H*gHF; zu?kNAHp#OEe@kPdCu-8NdSD#f@gZfe@z?SL(S|A#%J41bH{qz!Mn>qSrMHNN5YT;J z)u2aRn%|tTc$%ikjPaR|nzSAMl6kJ@VV?Y3f7;u1=HlCu%(IA`S;>+v0hWc{UHDy{NFSx@uuq-3ZL}%c*WA+Fn!QsboMjYi)v^=pQ@QjH0(CfDh zeWCc+F6w)q-G0?3DapgEQ6M%S{<_95w9;v|+O6N$oAdH3nGMIe@uGD`wp~dH`BL$} z|J3a}5EJ8e@HCwzxE~)KBlb8z>U&JHk_l^d3p8#71p7J>_vTwij}`!1 zaCK8zv+qo5-ZE{qF!Je^>TeP;)uSFk>HAFhM83;0Cm96UVrczws1WjpU3&g)Ti#p4QH(PM0)V4CD6 zF8VBlQn$?9qI{-H(<2mac)^msWPQ27RL?#<1n{^$UU+_(ez_m;y*u}PKB;KHI?Y7k zB*k^9-Kz)kYW%8r?=x-bU>^7JMsst3J>nC0Ts}G4SdC&-b(WfdRljlKcn~cqHlyJv zMbShZN!Wu;7#nTgeMr&oVPrkB&Czm7eUHgDCNMwC>Z!Lz-}LRR2W-mD_H@ageIog2 zXT>uZk8JHEpM&EBeb9EE0k|=LWSUmR}2n z-t|lRZg9IdgAbH<3@(zwzCZkqSQrNRdOKb8Emc)T44H!`Av!Zl1LL-=K}QrT1q6;W z2HUA+%Qh7}Le7RW!w>F)4hNccP0uMKkSo=H5E#a)SFdvjNpZ>01qSBOxiP0tjouYg z7}@`fQ{uGxXS5xalnEnB>)k(*S;P^Vpd!%5&$G&;d3DfJ)Z|=d?HnKvgHBJOt;m|+ z!rM2_sHQT3&7k~BYFMK*55-!ZyV+oq=~(n|DIwU-O#7o-x` z3p_t8v24f6t2bOVM4>w#LQKOIO}wcpsuV`P%!MOt-KY?Cfun4=*h?A1t4f zxmTn@K8DV)9hl`oe+e3nP7zR_^WOry)I@uLraAa#Foe#DwnrH2@XOM@B^axuQv!wq zF)X!2PKSk@o!2+^NtA2~L$wLg-W{a?c8C&@( zKbz~t^eHcA*uzqHZ*tJ_+{GyAO5;u)_}_iR0m4T1VE6LH4yEftC25>DD&AQo1Dj=? z4eNQ4F58*zKl`5eCrxg&OwKrlg&*Uo4+f+eNgg7?Dnast`~8$F#x(unElBVoE@c$7Slx}kcdg| zJd%4FdQU=dMpCyuN1pHA=isW2xESOEI5qkZdPtxDZAQaIWGc9+2rgTW6CF>v-ORf` zv|Kdwc}mli5&%hAXm4osb1a3X-Z{MSo_a5USIeF$gt`H5&j+zdt=FNg_t%1q<1Czi zuKc?wd3pT9SK08mm?9sUy6D!CCuswE&L*8Wfbx0SIBnEj_f9stHSujh$296gJ~wtQ zFAhOg2cLF6M_wG?=QO=)!0tJGPRBl8fXoQ+oxDuDpFCXGt~?)?0h%7x9_+dsgQ^^k zoUJ((!qt0Z({cE@2hbQ-37*FuYuHp-*@0cvv!_>=FH%pV&AZf(-e)NQZlvHl-3PMTuf2MlHrS8Ix!|Kqs9e)U?>wIoM z9``{bBN*E+PXTQgo-NI+43}|yr!Pe>936{gX@H_G7Hf3Tmg8)+fs@TFtFZUA$fs zkVlW&Ql@e|0G4^&4Q~ehT5gVbD<4{)ez+}HJ!Cbt)`4$^7j8yIM%aa@Tz}&aRayI} z`)mppB3zW%)_2$|!?E?vRZ$wG9u(1?1o$@V^ktcKkzxR6ZCyu%sS+-eLHM89Dju>K zmKO7U)(j2*c{k}h%&ayC8h^dsyDXwrIat02tFaV)ogLh;a)$5QHG{U(ndscOG&V#W zDYP*T-`srRyk0FQ9J~1CDu%j$Y9+DWWf*JE)-{g(WXJ_=P& zYWr&I>&4xzE88ZiHQ6$){?hX66J-M=#&Y$bEFekM`7`OfFAeG^6r)W%3Vd!2FGf= znT@bOVj1`zaf+eYVi(Uz2Ghgh4lN{Ax^Gi+X^W#iD~(XU{^P#{|Aqqudu{sQY@s~- zjoKwsJ`IdM^Lcerecm-pFzn$l`zi{YF0(&)5-oqzvfaM0>{_m1J`kr>8al(v8GKQ< zSZ3KJ?lI=!?cM!HcVS!Q-xcY!+pH4Vbiv8$`_?&YPy7-~w%V{S9{3Efpe=BDHrpDC z9KhgonnodHUDSe7L7HToIryg?-X`SMO-v1b zJ{)v-Yw=p2;w(99*McC{ir5#9M|tlw+&d{PDYSL&tY@u@F~1w{H7>&W!8khF;SWPl zt3Q*goS;72Fj5kk_}>k=y1Gp7YiGWt?cAH;S1Qg16f#R899y|EG14~5CIzn*fZf~!TkwDWaKZ0Z@!;4o6OSI{H`f|Hy8q=59 zB%WP{szICT32#%A^ggXjk_cFpR0n{I_I3kQ3u)S|plWB5tC|X4%S#oRijzwnGZ2${ zzSgtgoXj!c^XUTAMn%@^jT#*{{WgrDP3C=B=jpW=%^(#0D+zh-I4X#zB}x1#}U=#!i2R zfh3FSrW#s56v!7HWZ9>y%9$`K5R>f3;hT`HTQ>nFp*(S8KhKmVOBHR$#7Rxr4Tti6 z?YKr+m~n;cU>~J(s7Nz=y4nsY<6{6C`g2-w#;*^As;Dj$O+g1zoMQtJ&QB8>9MdO;|(YuLrG}u; zO0p0k3OBb)ihO^)$%4ZA{t!`0?>;xm$(8$zLjm4fSV6Nol?vpl7Vl%<>`8=OXEC}S zPSUa2?Y8C&&hT#$3Ekx)GSp^wkL+|!5C(sV8FnQ&Ay5^lo;_;g5P)qbhlyA_hxptn z6p-$~=wiO}XY-C9myf5WK3Gd&p4|=eYYRkSp?fXmSUw>QyOxFL@Sm6D!qv9&GcWow zWbs5Tuok$m@%Ro+h^huHE-)=vE=gdCjg&BcFlDCk=zz@@12!0t(%L56uORH6j|1u^zx#^VRqtpkIpr?-Y@7i(XHxVNkikFOA0R1^$qT`j)1p z5X!pr%dUb&ezvn(_;QO5LB5%_c~%6{M}Mp|wyuyOz`YC?DOfqvjO6xRG` zp$%gAQz3$qeM6twPB%`u);I5fU9*Z~KyRQiQ2Q@9V2Wy`mu=-kr3f? z;Zp1yqs?)&RQU@eSQ^M@TL-6)b~A!9yDO65b6 zP34;ygS1Ny>?|I&eQ4&y__$=3jvv1q$9fzg+1E<;oD<8K|N3?^U#dS-z`x6_NV*U~ z$Wt(k_V8hWqGK_ln6GU6vXLp#uHm%W73*vY9yDjVN-{jeBRMQh?dj24!wlK7&saSc zxTE^v8ZquQ_aK6KFs80H=FrAz zuwh=o^f(@+bCu~X#UhT-ld|pdQ?6hj66;&!CiCH3NAQLQRfy;a291454asfzcC}%i zCV3b>chlP#3&-tTK%EmF?Tk$8=-0gh`H)!E+=CG0g5oo5!k0?*evJYc4eXYt#ep8dLxMnD~`xFvYch-{mO^25uZ1hlC(?xe7E=KE3)#n*})G8Mf~)d^^ji=(vxj zJAdZH-$fUqYqgUEi}ZSoWwCcpEpak{7ZvgjYX-)!tsCVk6;pL0lstdS(tiuDTHrfM z{;Z*1jERc-O!sl@NiC$Q;Bt00uBlez(p&0vrs+bKkDd5^5wvNX`#vE?pLlGNm&YbpDJ%8BKO{0#RH!Mmb&bzp zVbpd;_v(+;-`q`IoI2}pGnTcQY7ew@aNms8foyD7tER^K1d>#C0v$)UZ`F${8aCDe z`dn4!oz4gXuowLUSB54Qt0Lt=y_<+Dy%kg#t92^E-kn9<`Nh-qAKHrkmXjk#a*^zK zknv$cZSGMlN%a*{g|ovGMItv9Yi-fY(uZG)Yk-UVuq#xmV;;8h?cQNjEUnsP-v14LI~-UIm!f4r3`(_nTib7Rr=prgy{|S zr%?h_0&aeyqLRt?+3T`p;1_R^EbM&^V|x4?d4Q?<#uq7cK^FvNU8i9ylXM`MRF$s$-qA8YV6;x!4Uwkjk|;fPo3RXI?_AvCQdQ-ozaZ#t~z#? zBUM+(m`2e7<_y(NTQO1V;piO##cPzoT2Q~cdj(0)m}V!cYR zJzm>k`C*KC%t(EG&lq-0Oc_CXY- z=5^VvV4O$x96>;9Vc-}6Y;Dr9QW0@<7s!&xSPd9D`f7b^E+ch{TI~j=LnL4@P}vs_ z4XLF~@yY6s__r!R_4D+3AHxl@xV_B1m|5>SBt&Df4-ba|8m@9NnB59n&fk1FFn67; zt9nKVqwMYmjKIFdU;{yt|JK2jysdWNA6FmwzK>cr=|~TWM?6&hgmEar9Vn)!$3hj= ze1&j&bW!qB`??YbDA^c&eI32S*_KVDj+*?~&V&p>5kl1%0oglOwrrxvnxD zR$y*J^)jpi`W}@#UNo8QEy56sO%#^r_#+clRf0x?%E7uU>x}nXu~hQW^nqxw4oM!= z2wjvldbjyqIiwu5`z7bRDQ$s9uYsDOT5Aj+xtjsuy(n+OD2n z757<@8KPl)i0?ln0kByQr5jE{`A?IfG$$J69T=l17vD;NY``x|J(f8nF4v=?*&~fI zgHXv$E2jEZdize|Aq&+O)Y}=%*zhdKDfHz=bN*?uP9myZGxv^}9JjvNc)hduD!W86 z<(unXPYKQ9vR(z7AjoGPUGc{l5j1i7o6B!x$(&pTpG{65V+QJ@*;y7xnRR;JNEOe+ zhD818y}If6xAYxaU^*BW0 zQ#`xPR|Z+Ux743jFOnm}vEsd4tj@hc zV59SMSMr)^Oqh|hbr@7+y5Izh8S2#|m#n&tXo~z>TB+7@{Hr|39?A97neKh$vAlvh= zd%D4E^P4-Hfxwk zex`?l;2Da&_qvq(<>vAsxx885z}pZOL;z-t!GB{N(&TSwN$joFu#UXH?CVo+@Re>( z&H?xNv`Fd4?9$_bH~%%}(yrdipP6<0UEV4){QG(vZS_ebG?^+76qyaBWqKthSdPwQ zz!IIVs&6Jc)8WOrop-f7QxNUl0xGmRfmIlxjjmz_a{MNpM9ZM00%;$ATyPea_Km}2 zFoyPY6gFZ!u@($`Z#E=~qGN<|`+FOgv`%q`0Gl_Vfct_z(P#Th5YSczv$6a*mE0KN zs4IDkCa z@9Biv>^D6Hxc;RRKslKRB#FfW+!BU{@5=1ZgA|$D-ix(ME3AFqWFI;-n7?M~d@(~% zK{9Sy-l`1L8wC>&H9z%?HrY}=R*!kCT$b*ZqhP6Q9 z1MrmT|4PAccHbu$^j9ek8rilQ5=!b)L!#P(s^UvP3S_psmebHNuSmDO+%g=m?OmwC z>WuN@`y9l>Z-c>w0L1CHEAGwX^n93Ic~G+4e0<@UuJGe2kTO#cvfQo8ter1toCCNW z?F}irjTY=K{T^gulF+}ML>HY1>dAA<6*|ka2O8TLU#YSiz{fzv-z{>{h2G14QmjP8 z@_DgGLyiZ4$Nz|vzXc|oO>tFfTX8p~Pj~&b7qbFu#wGCIs~{A%FWkjV#SGBL6ZeEOriKP^fj@>G!l zn{E7@3P;7f*)#}K0QOIR)|v6zl+I>v_iUyKxDSvwqiC1V z$-5Gin)|lSBqixV?#B|JR*Qza@9(G@r*!Di1UavIdi(jU{~;hALTpl z%Z!e))ZdjNoVGvWR4yI7u6$;)J!nc>8ou3U;!|kIU0Ysvozn&w9F6imnIRi7 z-fhw=*kn~JFc0|2%Tb@H+40{sSA}rt{);@^o!q@sZW+c5T+>BZ<~4DVmuL7!lU)BT zmD#&Xl2A_*<*end9jAhiXX0-cP69tAml8v2C=R&YB&{}nmQ?i81U)y#fXS&h{@SVN zq`Ae1Z%-Wd7z`ruS{I47_2T&2aqO*mkxz&)O(aUN?RJvr$nMi;v0Sdwe2f7((@6lR zdCg*+FCBL;r19p0kWEz6XO$2=Er?!|JoVivdM_>gB7ROJ4$GVU0cu{XA#BW{AUd+> zK<`T58t=Mizp%^WuHQ`t&hD;W0o8vdip7a>Wpv?EW0$#@aek3H>O!k?^_)bhu_zm_ zSazI*C$dyac=WtC<2CJ^@uuIoluV&2V+ybBI2a=8ak2O^6Iym(0$nk4H`)55S5bcu7DMS0!8?`O*7xP6F!p%NfcqB z!f*=81gG{iix7@g91u2qOv8%jSL@K1+b)EiLT1Py-&s#QhU?FpibCzo+K)S(PIn!F z?3yvJFtw2c$H)y;?ov$NAf2hr^21h+uQl+eB5C#pQZ`IZV4ex9tubpQQVz8cPSYOU=jcC{t4JLm0$&yXJda=g$4mSD@Znm(v9o!Q z@eex(^9Rqt<(gWC%^5S^XG)}r&KpS~7GC;Pwe&IGZFqU+nfAB07Zhhr7qpLKZQD!T# z)oxR1XZ&SiotJyHBl0);7123GRa*Lfgt_zi=@o#?cfvMDbW5kITzhgF)puq8-R@-XC^-FehQHCs($1Pm#bv3-)*Ip2JTcdW+xl zOD}zMBwzz5o;+TndYzUMcu>XWmD@3VmRBt1SQ7seQk zGB*7|=ot{DW6hq4p33Uzb@5w5p^30uFMc4Oj^=svZf z;Q%c2+tG+RR*{1c|Bl68Z|C?q(ZDztbH!RzAO9^mk*faF)Luzsghp{~bl1O26Sod~ zNs}WWG$02UFxHy!vy`&#N-;I{K47Fq+X_T1yF^XCF&mfa440s_7dR{OeFmY2S;u|h zVu<|J5ZaP91QmNQ&m_fQl{z&lDQ(?;`giZ=RpKLO4-e_@sx{Wn>Au#>80(2on6c3! zGvGTCqPNth3190`7NgBsrkcixw1KEwn7FuX7eaKgUgtD+qhbd>z2gX+Et4UovFFA% zv1)|Bk_|(neJ|;q@~wGwYL{U_`HNXjG+B|UB%TQ^RK7PSrlA-%#BX4M@A3_svZ_}l z43#&@DscSCK>+!JO86KB0_@U@UHB{Jao1^|lnstR|C93df!o!P5h zY}b}luF+;*Ca%%K3J;r;;EQ<6#(#GI7P}lvx#D;L3q1To>@%75qcEIm4foQ zY>QFIh$YWQX*@^W1hIU~v7j?Lo*JXGyrii)G)7tDs-E$E8!&Ti6$OvYwx}fLUu~R? zp5}Or^t`|R^1OV@|DC`@7Xa0zP-vxAF_tbyjJbv5-zW+)r|Qil#&i>#VjC`%x5UUZROeV3Ujh33$oL64=;;s{?e7p8$+Jz!pdk_8Ns`fS z@9Pk@?NQ+y>v9EXP{uYIv|D5PH50}LO6K`&UE_Q+1&g;fH>=cenX?}NBs*9eJn3bn zTF%Yzu*~$xND!y{b-op=U2=rwb#s*PlzC=tyal9EJJ4fa7ED4sKC$lBABjtlxyo5@ z5lISk5N@Sfu?O|nn6p)t4FrM~>DW5wNi5l_*2azYF$i*mJe@IJJ{Z9UJCbM{1$U|! zj+Q;v)7@KC<;n?M)CT8iR883lfZmls@g$k~K~D4p-n-IsM;ehW*L9KHpQjXDZiHr_ zSATco> zHZ7IZ?L_W*67gJFRUc9PpWNOqk<`jn3Ve^~XnzKF7+_sQKau6K0XFslLS2ZC<`u=( z_p6!$ny^^3*o1N!44y1KNy5M+>qKIL39D81A0oaPB>-ZLY$-@6qI$7(sqI5y z>G>C52ASI!@vC9@UTtoo+4e&y0*d=-@%|04^41zSp^Fr8r_VIg2y6f)PZK)cTPplm zC3EM}UN&wgg&|}UKaG}3eKGq_J^f+DijB685jBHS&w@>>IOiiF>4kf|q9N(&~O3GB%mGPF`Pt1t~c!)eA zGa$lv!RjN`&1yfrCL4>BaPK*qWLxhf(r|>6fPU?Xa@ZF!&`t~5Z7Yc|w*Z|T*!q?s z`ndcEIk`$76htz9y=&dOdli`0QK27hvA5MeIAJQc9LJF5tHr}YteiH-((E_|}~^QnR_JQ!)} zoOuI~*4$QC#kgVR0r9x1yt}{9dL`V*!PnuBN*K@KW3&BXVZZmSnd7>474V zAjOKrCK=DmE00133nWC4hrq?~4X$OtyWpb+{?0JD&t249eHfnWKd<_|%*0!TLP}yk zy6&20VO4v3CAy3GSTt%W(Gzji`kjigV*#j4Mu|*FZ;ume{z;Jz4gl*PoA`URzHzj8 z0i3&k!hQ=W<};0sKQ{l}=muOyP3i@kpxfyfkR-y}AAfcZ$LhE{{8t+#RyJ!I%wI7Q ztpT`ul;Zo}nWV;WrIa(uRPkm6ytT+mW>UIJs&X35KWSE~&Awi!vHhzc47uk{y%d?X zLOoP69>vUu)Gkm~2srl8F4N$Z5$(Sh7?O}k7z_Xi&U(h&QKUoCWS`pppqbWtJzmxO z>e<1Gt}+Hq_p?I;5-l)=ciciHQq0-v#4T{6L8pj>!UmnPonBVj*VR5rUGPgv^f)0; z&Cf^5`byau{o+g?dk9ZCF`rdb(w)PM8jSf8Rh?j3zaoB@;WWbA>Qo4HPDOgw!CE2R zf8cq0+y&=tX6U31ZLsleRoxwvrzDe%xY0s7?1(E)gJ5L4azwvrpr%JJ{P~c}i_)7B zf4!+@njP%7Nw~x3FjeK&vYg@)B%`Yec22-+k&^mlLTW<{fdmiWq0{fk5dCw;(6k@6 z;$ArN@3Fsi*qR4l9evel8qGH&d zW0)W8#H{Av@R`GH-95R){4eI#?&pw*qC+va+jA;>qkjL4I&zrLtQ%6H596~|5Oz!z zqkff9T{CZxLmBPksCqV?o3>8FpJqn0B{AtE$&vXVmc=Of9kfLsmezsMB46@Bki$T` zmNCL9e^)zcrXXaknL{GCH`*kWp(ZfH7J4(<-nCHg>AuB_s-hF-a~v? zt?Lk>^twCmhXXx@J}JV$59oc2w`#_!B#rTnTK&u;@OH?7m=N#CEdH*#+GaF!eHY5YyZ!51B42A=+$bChgyUq`|@iC-s! z7(+}J?=LDp_|DvC-!G&a+GeD8chxcHTkLuog>nSB$`1ft60{17uMIN_;4p}#T9k`K!YqIytUsY0B6_tLl@tkFJddEMFeha;KSU0rqiv**Pd z>-o^{0(9ng zi)@rde}_Fm)Sem22m*^P~@ao!0ph>Q=qx~A?dw2$;@llGrf$pY^V4yMr5?y zE|pJ`C}n-W*XcaF7RzDi+=;atyVflN?A(sO3F1Qk>cG7QnW@(M@YauQV~XyS{teJ@ z=P7A38b+mvy3URUMK`a?=+=C?GNI@V6YF}dy0Aa!mqG36lhBj2KVKU8)TXVYZ)+QT zpes%MET_%Kp_L<; zL(>KOI$W^u1e|cQ8Qea>DjmpWE9A)EbVYAg&vzH7x%8B*yD_Y+neZ8%Zx{!iPYdyp zs}IAiQNyh@-u==`3e8)c0NWZc?(z_j8<(Klxa#PuLeOj&DX6P8?WdpWgW9 zZ?)= zR-QZDW-9jF0=@ru(wOfWhQ03$Db@m9X$xq<_wuaI>gG!(1;or*HYip ze+v3Lsp3!%!zb;tGbeNRUgd>JjScZeO!sD)@c0z6dw%=(<)@cUk@vOu*`Aejn=XJFcIe z+bj}q><{F_aB^kSE#m=E;s(Lj9m-6iQOR;693MJg|Cp}hs=sE%T~V;Pod^r3&ocRT z=#LeGLclVQH&9KaDp2!E&7gOrDjYVP#woxlac$&dr2@`Ls^grKL<1g1eS>~T*kd4w zOWvYu-;FgB`aZp!Y4$EXZPg!Bou;D^7ndX13~#h^&QSkHFH9`wr=oF-!^o?me}Clo zC({~Au{*|Vvu<1ZXS@8|4PHik54@xcuVfc$geI4r@EFEFR4nqRJ0g@#lFYYhPs55Y z*9$3S)9;VX)0Ff@1uyXt;3h7q&Ep+D8w!lIQK^9nn|&pCc;Jw!Fcs0}Vom+dBU8N8 z?esrqPBX+=>Zx9f1l2tB&#xW{Sy^Y?24%Hh`LF9K%&E+McwZ!~C8=^{gmL#XAeVW4 zwda?D?XLDXGv*XL-*J=)o40IbzJH_YHyqtSnT}5XJy&3A?I)NZ*x9@MJM&j(*&1y0 zGfDc}zIULTZxOd|IvdmV@XZ^hC2VRD5$79E^r?+rG{m{Fpxqweg#s4Y5(kx;P08-w zr~Yu1fcK=Bg?|$gOq?mbXtt(in)mci%G8=uoq-M0(^H8^IYGcvzy5|**;sB3&(o@J z3ba?|X+mY_ScCZZf)^z82e`7m!PSV35@e)J2@IQi32Gr*qiF0 zRf)_kYx(cloLMIqb)Al`d4~yNqkN_G6- zqmDvgb57jC`a&rU%S(HCp@pnPk3{uLN0haMX5ZZ#r1M>b3oiF^8 zlmJZteOv>F7*Ylc-g^Mm>q#;<45p4%4CyOd_s)*7?XfBtwwqM`-DGAR`X=f7xS&A7 z*{H$3b0h|;0Ti<=_9G#c-HE!F;;1CY-8cDy*RTw!S9UEE$xd8up?^xjoC~?J#ic$R z!(Dyt>%pp4tl)}^U*irDecG{J?|8e9)_L+??A#x>XO`|l>Vt8)>T$f6(FW1iv|B#} zE=H|Zz6osgYlm)L)ju6deomi{(|d(k-<&NKmjk3$5a%v}i~_@@rMDQr0_a4WX1J!>6jqE4riHJVLNso38JO>4-+1=-2{@D1Kzq5-s5BZW-gs{ zId!zY%Cpt#qAT}GF~wv{l+BOudn&fDechz<6D@NdL7o(_Z(`p8^P>=TjS+8^8FeVx zKd*=SnNVJ-JU6efx%vSCCnxW;Br``tv`mb>S!O#E(b*#=Us&nX#L_Mk3Q+AKB zm`nP*&j+XRD)dn|*h&>rx=X&_WAu<)3Tr^#+CJNb!x)mYhcK^R4TE_&uPvj=sCIEi zJ$kp}pOVS^s>RaxjEEoG29QAzZdv`cLcL=J13q278tT5f*B%3)vs|N7F{hBUlhY6$ zXfNg0o@`{`lsY!LjTb6XF4noO1@x#rV@$EHyqFLS(sE^w;zZjZ66K(Kh^8A3sY<>{ zyPdR8`w%nDVT;?#^o3Efs%HE8Y>`S!aG?G%N`^ zkQ8*`RZAcFAAU$55Q_Hk#wE&Nj|oGNulvFC>g(X7>otq^kQVOT&hnt8 zsW4abx>2m!EwsDKjk(}ZimpCIe&Yl2_?l`+w|+{b1%m+2sf?p%$9A{%cX08J3K#-v`g_b$Ov*$@G zu=UYj`0!Dj>6vo{rvu|bO8@+ND75^1UVP!TTBb4jG(KWh>{e{oc-c-H1D7{m`PcXO zOeR?!ZZvX8x*A5c&6%g0lnz&Y_6P1}9J&>NgA|(A>>7v)*uK6}39hNFUTl`w8S;o14bT&MOeDC9Ki-I~soBuc%Hqxm& ze$4E?o@5j#G|0@6MKO`DnhK#HC6U@RBlb!N$Fgwr)xe(HH}Tc6J0)+&m7TwTqgkL}Xb%b%7JjnL+y@|1~hg4D|V+eG>u??2WruR+8 zjNS$JPF5GZc4S@4RWUah+5j%n-Ov8n{53w3VxnCBX2N({;%C~Gb%dA6_GzsMNFi;Skcn%cZVrI0)GA%P++;+P+(Sm8&UnOlXn1YvGS!GyOHR31^Q?HWabv!$H`F(8Xu^_c{V z8||me{`a+V_+KdCk9eSd?@A?%CBHfx(Mdv@DDRbYva@0Wz-4NZgwb77h#InQ-1v)pbq; zHb%pRn$8@K`3f`k!)Ujh`;RL#;unmku`CXMgb)|qi!mR}SeI1|Zz_LRqR&L@_Y%^) z9x=L`n=5yT+fU(B8>n@&`z0s(Rkt^Ys*QZELhx1$Ouq(X`p0zD2ii6Or$ZSN4=UtNDa+OMEn%cIWj%}PE(TAKJ#uAl-%GN2%(0Sd!4 z*!D&-(3aw87A)HPUm2u`d~cL;_xuqxBVx0OBP!Bue6^jXRwJGI|FZxjO87i419?_H zuB7Go71qaxcas9!AG&xk=y%av>JS$;C06mn-op5NwkHP%WgpKWE3$)~sa}@+O$A^i z$~d%z%D!7W@dand0r#(?hsy|SS9bnpl%$mF!34*>pnVww&tx*BILIRb#&XofCQuof zHb7S)RW!;cJ5^<*M4`uaD*E?+9N$}uJbx`1CGw$f`~sf)mwR(p_bHPivm1eFO;~gh zXfCm=risDvk`4yo0-u!A>7(bo&sYUbpkYm3Cj9#AX=d*4qVh2zF2U4h#}zpFZIoiddtXx3P6rtkooq)F zu+heU*KY8@V{hly#A9Fj1w~pH1B@}%kcQI(8*1!8Oo`?sN9Y0^%$N8Nf;2E_a8$)x zRIJ<~F}GZ}+a+)56d&bA&=mvr{NHWJ$SSSLC2~v9=DWX-f^H7r%p0_Zk+VyY+Ifa1<#rvVjIn+YL+!3PvUyYV^&O3%mnHq^| zC9*uM)rO%LyK1FARNb@cg&y^#I)jeRaA#T$pzdMBVXr0uDwKc3RPYPTjiBFTf-71d zn zkn1o})!3$PBnq%mL-?RAsc~nmC`zwj5A1nkdkOSHizk2^5E&?EaHPt9)#1?+U(Ojis#f@)>^!nG)0o! zP8=Kc&Na|f=u*WRC08_Lo`wWzctBHtRNnC0*sD^2-gS`o|DozDyrO!ec7KS3q=Iw| z-65cKNC-%mbf?77ozh*>4N@XQcXyX`58d4{#69?Z_pWvSfm!R!dC$9_{lwmc!`{1! z6YtT|Gk%(T0m$gF!_0&fsXnp^;tcRMkgb;UxPwBLalg^zt1wR)Y|3UVV)u0sBONd9 zq6)_)_a=^_aL2OYOgIKRC0mni=35StB6!)4yGftCqU%`Jl~&3CqdymL4g@Xp!r2Dh1kGJ|8dez>R^3I_+PzAr zQ*YrM+YcJEt2wHKXKEjh%UkFXtT-2xgY~W&`4}XkK2o3& zx9@^R5_;8yZW4MKJHLi6EBXK>eBA!n&-i{koT$k5j`pXoi_mvBTC~-et{JMZ1G(WT z%gAfT{WodOC`JCQ5tDp8_)I8BLNWMxmyzm?jR zSH6q68^P8-)3iQE_1zX;734UFzppFeyk?^7`9q0Ufz82h?zZ*rkLo@)Wy}sCd~O@} zq-bAQN2|Z*K_;6X18Kck;&yDmCv#|NYD&GG?IO#6L-gNY`!{4^)k|}=)?v05xdbg^ zL{4f#2Vbm`EQRPpX}`@IhJ$s~^u5l5esgojxJ`Z@-ip^E5Y|x9}W8*M^xUmP>6>e7}4Pl|`3F zSl{%!Y1?UNXl<>ih`r2(>-nD-PXb*ad2codN5N+ zFy0;*phxW)gX^zn^1axxAZi+O`F1;cmT0>6G2^^oli;VU)s8)i%gQWe|2jatk;8d- zft^e$>geRNWSDrggE@!c^4_nBU3Q8|VSK}Fu2J>)GjU{nbrn8m)~`OOfKXc%Epq1! zEu`FJE7hnb!Y=EDw%&rFbr_1^QMy;%W***pF3#dzyny*e`Xc~$3FpKl>O+O2h zLec&-*D^bcjfc5}ynr(6Y=V_Qsj76ezR`ga|wY+MvJKMw_8+4(CUja-0RVIP%uq7m*Z${#bmxy~n z*u0pY6grzs%x|h>qu!O_iQH~RqR4G zVL-dHp)D6W8AnoNeDNQ}vSIJcP7cdRhQQ73&C@#6qKq_E;)Cq3ECXUww61__q}-KU ztH?-F-j7&)`}Lwm!I%@y3EOqeEoM7M{`{UU-^9$SrooIH%NBY~t^0s)gb|daLyGNX zQFk_eg`3vYjLXwiM@#&IK;ukpE7Q0gjekKQpRhj>JNtadx^kt0OX3m_=A(W~SEZGb zrPcggCIqu}vNp)+lsCGm1W%S5;ZrOZXkS}?)I`F_s=xD3D9Uy3L4i?Ged2gn3cs%w zzAkx^zkS>H(`fF*Fskk9F=IT%(i>_znqK(>!vzI1)G@pYz~b+x)o>uH?zEu0-mWp| z^H$u|E3Weki^Gr}oVZHR_lydiVlHuBj@jKs`}&;YeWMH>^TsVLK4$BiJFu)1 z;yP-B%gUy+XSZgeK^+OG+xn|Iz!MK;E{t;TNeb_i<=VN^BKf2HNipZYa;I32i!F4a z!IbY$XlsPU)zRb-@=ep*u^Pt_`ipmp zRKplYj{pRQlC=zH-M&R(k)UbfXt?b)yZjj5*ByHAu$+J@w60%x_Jb1Fj_Dn$wMZ*0 z>8X&brZGdSInD0S7&0QDo>8BtsXE6AcYi-N-P6;9)Oy|!JcG+xax*id`e&R^_|X=7 z+uvdfi;gNVZN1>L($;_9if1J>5p%5=9;aA4p=4cR}gMa;eR0^NzwG9460j1i|tSvwCfM3k`2$4WV`8?)ed>2k5f1XGH; z4ON-tx||AJ-#y>>&MfpwQJ1g&w=yt=L2N`v&5`j#pnvC>~64DT-_i41<2|_Me-rF6t znN82qX0wUgTY-|rL({2p-}b%tO&&x2om`Y!TAdPn@3!kxbE3*=9t& z7^0X1PBgL@Ym~1KRfa-!dQsw02Zz*`7%4uHkWnNYe)pW&76$fl4=)S3L%-6OU@2-_ zdfL-OD*SHdp~AdIo3zBGQ3*83P)*@m(Nhq-pB55oxLlIYGUwE!QEW_^{37)CCnO^i zN}gsv-}8a(`D<($jIPe=UvT6LPA2SHvi5xZl~?S(hQ zmvW?tT{22bKU{J*u~813S-zBijJl|k=)-gk-SBH{V^}&!uq8^7|F<8+ zM3*$$R-bL2h_}O)`Pd6A04bfB_0ULCe>dz^xQ9@m@*eZW;8kEP@Dw}NEY~>cUI^wT z)c=#);6;TI-ep>3mxJHuHqs<`)oNPo7OAB$=sFTJ?xM$j{0{qLTz}v6d8a@w=FHY& z0iK@c{T;|>Lq1FSY5)8I*Z}jBKfwM2HBkZoB0CRSrS(s-n4S`_;h*#0uiYZI0_u_A zNe{UW;lW4}M(WlkSfH*B0% z^)OywUb;ZBu&dRGuJT|R+rt%!%JEl6aG^dpVO({6pq5JZ-X>s z=G#uO5%?3>E~a6+gxQw_wMED)?U)Ff&#!}gwno_9jU8fs(^T}zG0*mo zvM~juc!2YOcZXk#$D=7wPF-D6f14cRLxLX{{Ul<<;yRrsBzhW3@WyDzFbRXrx>pDjbq&UuHggma3%qTVuuVj zTY`#WcYT;3>#2j1H*RqT=MiAkbQ7cxFCEY0Do_G%Fy~`Yw4%_6EQc5`@Wx8dGd)jj zyidlV4@*`h48>TsDdnP#Nedi#{s6@DYIAA&biZ$Oa{B@3{cCn)B|;w2+wQA7R_cD* z9U_5v5Gxl;NWDiE1vPEHNt`vA^o5DV4!;iUxTw(vWc*1kx@dle-9k+7#}3r7XZ7cb zRT0&lv5^BEXl$2T?mH~T+Nyv^*)>FS;X+xmv7C6uqATZMkZD=o-=_`zaE{tCN9L-R zYwFvZ!2#W%f7cWc)ZnKkA(JFQW894}2oDAP5=JrhnC2R^86VNSC0T+mMzkH8C%=E{ zyNeb6G8p>hYy3yn_VpKgfU9dBktf*P+}y;P^FEGFeN5msBRq-JYcY51pHx|F-@k5$(muJm51myh6XHlokDVxu3RrF!` zYYYVeezOA)byRt6(sx(U=U*-SLR`q z8&F6cEh9GetvfuB^kNu?U|^g+QrD?pJbufwuhl97zT73LX=g1o&}a1|H`nllX1A0% z{(I7nJ7X1NDQ=AyiQa8O& z0`vqEa?5ULtWeo~C$f+e{;`oO*|)=yRh6EUJH#$^l`>aZ$f2vxdxPf80Hh9hHtmcs z9u86W2K`s|Y;I4>R-jg#dVxYN9-`N1Z{967r2i^Qu77FB)oYbbp_4T=9Q?KaK^vP_2IARLr)1+yLl`G9+-7Ap(OG-k=QZA} zvq=Cmyx*c?H9~l?tT7!k{!GPqn}W3F^qcQiYZ;2%uQqliRfp;UrMXP-OzFO z5@_htCOVab;TggBxpPpD+cUz4|61li@j|pC3-yr93 z*B$v?oaB)nA{oVKO)i!kuZfmAB9`-c7GRom*w>*S0i)CXLBJE01K~cW?YyVYA|7Bv~6HeV4-7GGbxL2_WWzA)4Rh= zftJYk0F1bQQ^xHl;9Fk8Tifj0R1dGF!}qO3bqn2PieL1>I8F*K4~0CT>%W8dnSW69 zkXrbC24GPnx5btHp8Lf<4tm9EdT};YUyi3(@byUs)KQKV`9(u!w&&EAw&j0&a)63=G7a z6Vo=^bJ{UMyD`1yw>Rsdf#HR??gwc^yeZ6|_m?8Mi z42d@2&1E8cr0WhSofuDe#-Eq7TqLFY#%=e%cSXjFYi{9RQU5Sk=yDSQl=4m4SmqCY zkInYjuRL4RfH+TbVWq4VeM}JaUA9XW#>6z1kyV#tC^3%t)FAuk+_KvHvS7vPa`5qkaO9unQem^)qTx7hPM%liGEzozhfG8hPV{ZHlJNbb1u|8 z%@PjRBUZg-M!g7uW9bVUEkF-kj(cZ4Se203yu<2K-N@ba4%YJb?t(U{ShHEIA;ttY zabU~1xBfbf-Lk>=_hKrqQmeNek<*gYcLHTqvXWO@e(WXeO(XIW7D`A}$h=0}sLE2L zg1aVd7LD1THv$no8H#h2Ih3zxnkKHq21@(^{>j8jqSLTo=(S8#&xM(ra8Zb;*;uBw z*HflXeVvXCn7eS`D8((0Kb>!<+qXW`6SI8$dz74>Qy0n623LSJ(CN*Y&FQ%bUZQx5 zKpz~kGWX?39wZ$(q9TTfQq3-vd6JaZS^8;k9?hhQ-Y&X3*&h!}n~~lRo(P&_(NP*Q z@B7*7=#~wP{rYHZR&cp-%GA?q9mx2M^7F>6u8E`Xw3hgAOo6jkU4FxGCFpcQO%;%F zq<|09M9RRqg>NG}!}-hLh=w6YCkYtD;6|HU{Zq{De6D#fHGM93Vd0h8Jm6n_RqDM0 z;NT|Tg16HGK5G#ybl=b`+%cbg+F%=l`OZu<{8g3G|JI+u z_-~q!*D2%8Sf-n^#;}6AjgyJBmrg6U)~*+HNrR5awo?*;H$4JdOyp@?p`@P!yD?5( z!GdL(>;Ixek86|X#6u{f22ZZxOJVKVcQmQmm6YAr9~L%4)3Q?c_&a1hbt~4{m?8a+ z31Ag7V$b$=X*AQ8=bZ8I=kzd)W2-)VP5m)29w+3&}H) zD#RIw-~n2i8K)Uf3jZhzl{CuSN41{$S3iMf8CK}|l^VZGa+Dp17I1oQyS8+Bc-7QZ z*sh_Kn$lwvDSKc(9_<{LF_*EpN57RC81jX9IF9Kjjyt&C^OOx4ZElV5xDb1vENi+P zVoJ&)FH1R^J{DbjJk3A5{t{rnE|qN{=mU6K z_YKJHsc)q*rc*^zo<;teGcgHovz3iaSyM_#nA46j;gGED2R6NXrT-RR{FS@edo?#95?aU*RUY}Km?j}7xwT|_d>p0wI_C> z+4L*!eh0Upw=ZI3z$@4i{vK-Ain^Yb7PpK0zy=zciNrhk=gFi|CV`9YjS^G7WV5$F zf2DXUt83ZYl-j6>i__@&JaoCVeZkVt3e4NayhDYRdS7IKO6x2pQ!tkY(ik@&2fHuU z-oO@I|JWGHhlTU=i7vgzbU_AW*&G0K>`yF-M7D_%7?KakNiAXmfrzY%k_{`D-cv!F zFOEKegby*pzL-DRb|WeU9nb~g;);xLbujYsIv&1g%vNb!)*b`~=a0|=d(3ZY zIsX(3v{duR#6cR2gav6TG5E=@)@GG1Lj5JI9~5AzmX1Be@G^@Z;c5QE@GSQ~cRG2V z9;hgy1j#=bk$;feu@7@zt3&Ij?Hok@n`So(P%O&wPm_8XSdAusj=;r9qXUcfo68ZY zeBG)-sXc3IU-65EC1-hlI4bE_wczMn^?57*BNU5O22tX1=5${k@p|9Ivwma(^fFJ(d+L(K{-)HcC<{*6mwNk;tkT^{pUkzpMWChPj<(b0L&CkeA`B3BtAEzoR=3Y=1P-+1|+@LJQg} ztY4<5!;$c7p|n%--AvH{SxIiY-}~nFN$iif*ZD~}8{mQ5Ocrnv1RrMGF1}x_2Ljo#=(i&4-esZ>#Ow-s4)edKiQ+iamf7xWUF5&Y zH_$s?oYXuD1!eacr6|ChH{euQNztD!~ChbZ#4qKF4wm1UoS|+;kjK ze-$#K8z77wbG=sLk=kx;Kw%u_^~)b$Gj}Gkrt2(dYb}T9ZjT~g`mwXk zC}`u-_Y(Ke`-?UD6klzto9%P^%)WwQiq!<0C)ykt*e5JizJmREImKm1)()#ZUq7W5 zbcD%yg&TaCJi*BnIQxC%xgk-S8lS|naNtk&`*jmI@02(cjKBn*w2LR9duE4%ra z1O$xWb-m1W$C>)X$CFvsqpjeZYTPYu&ZJv>3GC5pLDIV)h&Dw~n_>r=McSloJV(<~SB(1tRJW0cG#n$wT1tF>{IYP2_knuBg%Ag-PVRe($A=`VuDhCxX3&iSr3jy{E(I;kWTW z8<=(7?Y^G$pO-46Qn}Ie#tu|b)f#2!bZFbd>9mggwU#3#jkH^qFpmW2K+m3v!2d;g z*}z+4SBTd+8039rW{~sdLfC6=PNB7BZ-|d=4?-!Yrn?Cq2(8o%u4xDYd{a!B-J9*{ zpC+~h69>=pCmqjPYEgE!Np?h1D3B{O|AP@}?%S7jY~%xHtadWyQfI>Lhm5l`^GDsZ z+4^=!9~Houc!{**ATq@Qg6`Dod;Xqz4%S^ite8QOMM}M=NwZl!{wtZP93PEqqMvur zxxv@|@8Hd1)z^TzA~Ux+mO>w$7n@ES1zl}+fNBfxeCol3KF zm4Qgx{?bSXeqScsWVCnxeqm$f9#bfWYh@R-fy2=FO;v4Y#-n&B{OYd|a=pWGjH6P@ z(LrLjGo)$=(^UF-Q>WOa&y=R;zmJ;I6@_AJq=c z;zlpnIM>cJ_#EB>iECWv9pdF#dtKmfDp0vK{%KNM%H|oE0~(8-Lq}r}>difq7b(-R z#TwcYUYOPAr$iZMrFc8hxzsD)_L$YWQuJ}A1u0|aYRG6Fk&8`lu!(;4yUTtek@vNl z9_#U6Ken-*)7h4tIFMEKe&5mvw=Wx#_T%{5&kT`{*)*pCM(y8#VOD}J*MV7r=T|E` z5(wrhYhbXs0Tf1Rwe&@9mW@$jj>@VkGfsT%yWWsrB^!G_sucJEHh&W@Gz0(w*ZG&b zRIgU4&6C6=LnT+yn55o_Dd8tdv*(3JpobI_?uhH*SLRBhl5K8Mf_OTE&T%1FT5~1= z^4Y0K5Y^fFZ}Qw_Z9P4`!!~C{fiIj#qi4s@iz^;h8%qsIgqO(V2+BnMkU~VOcXR4x z{RxvPDF=EkW+v+jqLsU?<3?nhHKIftHO0D*qjEQ^pFlX)ZS!p5fDQ{cFBuNlKZ5e- zMw!E!H{3UhKo859iQA(CczDeP)gp`gojrHeLT(ZSI>C0m^+e8nrJKnlF{Q6B0(M0p zv-{JgX0J~!R1=Te6#PLyc}|7d5i{6ke3L36?X6`mJv1uF7eZOy^OBq}2s2=_B)Vt$ zcp-=8<_e9^y*=)Zb#Ix^v`2kx=4Bskyf!_Gcvt__zNS9o8$M;GU=1l{V%6nsVk)Q% zf{wPFcCYUtwZd{$TdGpr-3tZlAgMg~9LcJrEP4c4-1e}FCZDI|w~o(qveBWZ6&QL~ zW`Y+&D@(_YHsdF$G@4K{WZIf6nl(vdd2a0xx=#(f4Yp?w^GIzE^AZ8S|0dQ>2hKOR z*Stf>6+K33&B>R>lF;->4p4+V#5`))3@+N=!_WvE_3VbKQndD8VC?@xJxX28U&Nqr zi|Z96Z^Ctou%Qih^Klqva$T#zXuT06JWGE*X~ns7+5Upekk>ldDNU0c$0rMO7I7}k z1Mz`NkIaK&MrqWYU$ZQKT;@*J%wR!5er&EW&H;L0BxR9(814U9Cl=q z-$6=rrmhr)pIuMpvjn*hXK_BJEdsRW0FD%Reg7Gx5eg!F$qJ%Gzx)1yjPG?$>(ot+ zOCbX`_I0c_FM<{Fo_w(loDs+s00s)G`lvX6{Y~btr4cISFznEkqAsAZx;)2CMjmy} zU76o+U-wi@7ZsP9&mKfpbiblfc=4_%eSc||==s{$UlJ)v!coWvj6*}xRXdkQ3{s4h z)VLY)D=^HR?abRVe{cg2ZB3a zlaH0;;>*c^j>K|okyiBcl9?`T4zCHc+%@2`TnqYqaAH|aqz2CBU8>s)CWrdSgmb?M z#!G2C2`u$F7QC30AoaSIc;2f{PK~YW_FGvUK4Kop$UFgCiI?dO6Qypxse`mL4VzYJ zTcWmU*hIS&lyw*(044RYburwZ1mCo`Q~Owju+)LLRITDk3kHa>R2-eiZypfK$Y1NfZoOx>4f}_ zl%;g5T7qt@+z#!i>AF6>;aP)uS#bG!PlL7IY0?CDsGsa*wWKY>OW3#%!5B6+>MQeM zQqjS4Z87TVGp5$f`2yZRv~1``Cik&%tKvNQ)z?b>za$bk1S7o*_k%_&w{a)n>u1Mo zCQ2MV{V|D>wtE}>pN|v7Iv2?z1c#=#(4xITQ)3*T>Lwl?Ou+Rho+Mnj~XWp z1=Q-mf)sX5jC4Yc;^{xw*nLos!xoSL6BQGoQ_NrTX*}@BQ@79a!sxF0vnlZ+8(>vJ zhLi|aGs*Da;w?53+B==E7nx;xZ>ITNIuhr+x5{}$MEl8;cCnMG_1oII)C9Umf}dJ{ zFI)AiqEyh*AMa-t^81E_HszhIq!F|v|v&keIiTNhIJxfN#*^y%2CEaJ?R=|s}2D=?55flP&AYlOGK z^?I{9ltR?XB$#uX`V{Hu_$EtT$mQ7W4#Rv&INd})-y&zNfiUQo)sGr_QzM;~bPn&0 z@kOC~PP+p^X(loOpC%o?`=Fags}@BP*#}ZvA&9b%+(;+FkRP@_ki(TO6>7LSInmIl z|E=e#V)K3SF}|jZxVGNb+r+^M{56vh3Uc1gzK=h8SkiUZP`I{O9-W%57cuvFcKsfa zzqiU5h2E-^2w;mCMPGa26vcD_xPkEnK7Eg%;TXH{qtI8)zv4pVG&4d6o;;eJ=-fWl z-oAy=+T<81dnAMk<4EI;t;s_z8Uw}o-7Pt2eRX&r4=46K+8!TOb4%2p9w?P$!u#Gg zVO8Kd^M7OS5X>3>?u0?&bA^;jYdz6}jEkwRUI}SETW+)0e`t^8%LT#|4e%^S-9!?8 zM#R0BhOmL3EINf_dfYbv2)=cR?rkwAvy2xU+9swCE5KjCtUiTsF;N+6z^Tts&d}NT_@vkJ4Ynru0`w7ThP~m zci?`Oio5QPMiRjffa2$GEaS9u5+R3%8=pvBBg1UQ@RpW5eM&IdHaSYPK0@8*I00eM zuRNgx6=T{!G`M7G>ZqgbZW(F6DtxEdGePMUR%BndyC42<4Gf_e5yYk9h=}3lqx)#j z?P)(FxFQ&O+PzBI@_&~&Pd2+x zXl8E%HIbWpY+H~iiEaALiuM7RNzZlMJNPFa)!;U|dg`IT&8Z8Ew);a4Y~kvGXnDkT zinw*$v(nGw-0Z~JFZ5GLc+F)hlvd2N)!?l%`! zlVzT>RZxw$@K}PD&xAmW3h8L@y?iteCS&`x27i{aim?_x)CwkNdOQ zSg!y>+)dKLOdkxB*Hx~Rd2DEwRO$NLQXB0@_7X6T^iZGoKna&8kfoX2tZfVau^Rl( z_7;)g{_^Mu3?I7R<$kXHc|NE@=GcyLH@vGv|Js;ERi;(PbUT9^APV=y&t3vDM~0Su zc=(FhQ^|wG!wF%9uYS_}0RAdTXGXOnRo2#1w5QDyD=TwUoLlmQG57b+-F46Vfm?W) zZq?%`{JYu&Kn^E~nt5fxt)fyY-b@MVI06&8Q_V3XFM`Q&RcK9P+cX_?)tG{{+e&v* zFE<+P!$iG${(%?}ohlkH#(RSK`@w|?%9RIy4@2BpV%|LQJyY<3%kBNcq18U?f4yXH zaudz`B_@Kn>2Pc#e6j32DzhPKgd=BP;avM6mNJA&tcpNG~_kq*SZjSdpQl-;1|7kbl)>Bxa{O(YUDewBSVX-PiARXpZ#RGvEz-| zFj95-mttsB%SJLaLKT@lyiCCnb%M|QQwD)p30_^bwHDUs>dATpyzM2wQ_^}T_hIgJ z=ivZ@qV*_2is0G(&8KM6BT2|Hp8(6gYRi+EAU6-E!$Z{fpmn;b814SNYf)^BI5t#T z2zhRk?RgPx=EHWD5XdE$&Ss95JoFJsW`p0$WSFVmv;pUFzZ%jAM+`A;!C{MLXv zsfww6^GB{`0slr7SLtSIqVF^5aZsw%AqRgl`b+{ttssLv*v;I)+#pJ?DI^dvPux%$ z^Z;SR5UOtpZaoc_w@&AIw8|C6irV{AoLbZc|xUmdjGhF*{;Un=qfpjD!RYZ0)GVDF4LcOhNZk^*Y_Mo0Sa`O5GHJ zF4Rwa6Z(cUBJ&;Y>{D*ZGkOXvqh-va2Ncv5{UJ>N(8ipdY6g#H0@UVy@Je&xH?Y-Q z=Nb3XYJ^gNk;r`kdNq)yFPtV6u)myHT=`}$uGa9YC$Cw$5Evw-b@H>1Z6>Y<<9d?^ z%%vOkdN+`_YdoF8lj@E_zDYMLiqHR8j<<#1YM z{O_Idojb#V$4I8_oGOV{Y>GsMa&TGZZ%zwYHF+(G(f3BN$Y=dYgE^jJH)>g=WN;NF zKIgi6y2*uY~p+@Q$t=%@#Q58p7&TyWr-Jo8o1Y5#I=7_ zlsmg3c-OmFK=rLU+w(%_dCQ414$1nWwUkUdsf&JK6cBM{kpZU|>iyl;pS5jNOrOWh zd5$rr9+}A6v}KpDMFc7s{-SoeK$E(LUJ|RtY1t1U44+qs(rh(dCEa$sH%(%r?j=0q z>HIU)Nsl^Pq2+SqnHD@V*Zuj5FLIezfU(5iKj^pdOTm z7{V@mSgt2+*6rG1kHqn_cM~)=I+igm0Db)9B(CQBM64!y%fi^$fm!0V1H2WgqFjV6 z*^~QxzWt+nmFKIub=goSQG;|R>hhNe6x%8=A;?&ty>e^*?&8MlY$b>kCr_s7>`5U4 zd}*7fXkxPeNQI%G?3x+6=dQHLP(_$Z5CzEKQKGg&`N%CN9*(X7VXS_D&^Kl!U5M_h5ysxtPM7DD=&Cja`8A5m6&CO#T zUo-zu?l|}PcuPnUsJWg$6%@og1zNbdb=RNAevzok=E*0Nb5~zkr`w1Gp zw~}ez?MIk=m};tiT^KWE!&2H`bHn6RGeSenTmIyYB#hB}33&sqV#9#LZbO6)^Ph%D z@W^pjL=NG2@_O%8a?1@mIyiA@+tt|-Nh)Ibulfb>%s?Ki5+j-%{4q>rrgI|Uot1_N z2Lph@wf;9P%5xQ)*1C0rYs)l!RIx65IBfc?+m&Sm3j*E|cXf2KH#lCR)Vs^@*dWCj zS#$+`HY+-_@Ni4q9)nz}swU-1{|d7;N^{!&9DT-5xSPWMDfGW@4Prd@3Luhz-tZoN zU}KPkHvP->MW+B@YK?5krm&yxei#(QcmyrIt$i5EL*ok&tYXtSja~$*UNdJ;T2e(uHK^Vdc6lb z@i>kx%Zjr#S&Y0vI2cqWdWac)7^z8UxPsn?E$y}V7a||EeCN&G7`=Si(Rt zF&OH7LO|Vd=6+s#B)11cjHp6Sy&xYOBk;(yVrLD~A@;N=(d}?mBOYz|Q)EqkenU5` zIU(@n&oko3a?_4N-6J@=Z@;rBVTt~gP8=0xpk{Cwt~WzakqT zJ3U0!@=v|XM-h5D#h-c+`DiFZLvNBblCcP)op$V{gmS$xZyt&YL0*TMLOv`}DnZsc z_kW_fw)5{|#|9#&dm5(HOr(%fWUC~B1X=(6fY{81z1Y&zqWyk`95k!h>GiEZ;HF{+ z(t!Fuk~v2Cr4dxl)`36pohA-3=<8d$EJE%Ga^K`%qC7#NJPC*m-jQVwJCT!_+N>Oi zZ(=tIALcyBIsE4w6J6VPATC5pZ!B2U*3;5;-OFR4JEHhPc_1FcQug4Ci#`Xx?aK~LY4WWSAe z70)kumDLrU8K+IRTKjXt9en}T((WOY!@Cz`A{B=sVwacoZLhsv>lUk3+$nGL2kw#R`{9pB8R$0XQd+X$J3yEXGL{Z8ONa2=| z(1nIs)Hulqy~x{^XR-^tEU#P8(`smI-w~3@eh{Ikd=-#@fDhH~AJ@ug`pD?w?qL$s z`l}$XSv3HAOP}JvjRe1WepgO~rtw<3;T{$;A|^)j;l_iABBAxAq@2HqBNvv{d<18{ zJXjh?drUHBnZYNc`^J&(bJ(a^G2FH8yWJy3)9$(0OyqnTm=R1D`>Gu}n~k<%Z{jI| z6-oQ+>vu_sM%^qQ^+hdcmZy3VL9m=)e*XdwK_)&kOk31gfGul9^p)o@L@I90Jx!?~3xe-v$^z6ghH)Q8*Ouhosa!S^=Ok^j zW_q78wt4uhV53WGG~1QrXe}KRovy027P9JjJ{jVmO2LiCC(nl2p4%I**TUcZH@oFg zc0{S>v|eAmGWJoZai}YJ%U5r(@|8#HKfU$D&|}pk&8ft{1`Iy89a<5n%@iv)nDR7) z>lHi|VPB5~@pI~y%`Su@P)p3E0=|V%ulV-ZwEvWR-IeSfQBUsIJE;|?H_^kT?W-fX_C)r~Fo`Ho`B zNxo?xL*}0hm+wf%wLO)VYqX&jN!B7sa;ty3#~bL%(8r(;j@BjwECU|@ECaCD-4g4P z#-s_#QA59jySD@U8?y2RIsjQY13nnwN)z0FN0DbS8yi;qB*T|bRqBp4>lsV0-+LX5`gDi7F*^Lo|laN}55~*iIasbUn z?Z-Di#BateDjL5l%d<}|4}EqUZM#YS`|9& z@&aTW?e4KWYG>zk~owBu1|z!X#41HP%Qwz>XnYWDd&bKBj9P4kPvsfJQ+_`f&j z&LOAvG?`|nMCav<+mC-R75xpkVBmuUFCIHl<@q0gSk!%J zFO3?W47 zWRP~iyJhBSu5YIZ@FFZt>zTtO#yU%!^w_j~UQ3zAlNTKSKH)#=bhr?&Q;sg|MDR%* zil9SKG%&(#2$Xm`mBPc_Cp!(JFZa_3Prdi|gBvT)#U~Kvu@cl@x#P?=K>=ria3FSO z%m+DLURbBSje`*zFqwmD%!-hj8P|*Q$PAGlj+&VM>y|;;v}Vcj;ppnxwiFuks}gyz zl_cr<*$Z+Y_A=jCjO4%LQF)9kI`z8A*N6k$o-q+c z#}6YFXYiv60hZysfArF7V9*ZvUX8knfLPvsqnhMudg;VKR5MrMBFXPvodI~vgGPLj zU3cxFo(?{$X1=d?mk_aJ@(Gqu-579^D|jlFEA^W2e`cfXp8rOnhlEG@(D@4q3%NZ_5Ym(P@|l|bqUOAk*J_ z?7C@BTo{t(sFZt^roB3!%m;hbDq3Va6NG@mJ)_#D^SeDr3=$Xp@VG;|r&E9F=~YNd zo|l69vE>b|9Y<6oHJ`(?q>tFq&1jT55R?4-c}uyvVSdpS$W?gWOzfH6He>@FWQ|IZ zcVdLF1k;6**L};#NJ2i(i6!zNRBk9l{_~-}K#5O-*gQc>=c4_s3mfyV%l}o*Ur12( zVKv@wj>987r!@M`A*0)j0$Gf|pSulXdrjE_f5mCY>aq+Y$d)j}LzHP1us`srOMFhG z^0qN@FuIh1eAH$$aGHm z<)nI8xFFJWAvw(?Sb&K}xepTSnhu+>Ka*y1Ez)@#ZcDa6zefy(i~r(nI_IHIr-7^T zzp{1Rboy9$+4m!+evBDVBT?cIRtt@M{OcQ-XYVfb6rBY#02^#s zeS6+6CUv?-ptm)a#Eb6;&Av4y_U_3>9~evsG$-u^oG7)$bYj`>%vJHf z|MA?1vSy`t>{ocCMYfOdIIk{NJH2(%kaXTMC7#aRe$S1_4!<9~{SL9{p76p*2ZU2y zS#7)4QTF_V8ITA4MKnvmOJ)Cigx5+^Uyg-Ur(QjQC~<21IY(-Vf)Vv3kvQ}im zN~>lSWtm=jIp)Xd6=|!`V`PW6HgcssMnG93YkKkLGzm5#M&i0%f0p4adgQ6_cN$Li z%8NtU*8SO)sbKrlPmKAG(WF`((TJ&I;KcMWJzFH;FA<}lW$x!ZU?GEuscaXsNccux zCEQ5^F37NaQmAW1Y$0QmtiumX5Y^7jWn@ha-~_!kyQx;?+P*qAM7Yr0o-RpWt!=Jr z`evSY(*>`ub5S|MdvB}<0a7&&{P(}JFUAC}+pBK8pL*~WO}~pWYcR-zhmeq5LyU|l zJit#&R!;CS#+>?Ed+$8t!sj;rk+W1;JtIqrzPD}*k)bPD9X zJc>NlExPiCO7^x!URq2{DJJocGF(g|u6C~?>~52R$Fu(d??VNG0X%D+{r+ZdqUuQtu=xw7B8*_JgLkK{@i6#mx+cHx`D|=cQ5ZGHD^`Q+ zYp^>zrXWer-^KOAyN3Py#!X4@P31xpILpaqY^RY`C3U?T?S?9uR#SFGqO@)#TAp2R zzz(Rhxz=^w{=#es=m6bQgPIE~iPhJmu|yKU%1$RildONDDlzlsHNG*Fm=by$t0p@n z`|1q!4?MZH+6??uH-@3$0ih*0E&5D-7OsqmbyRh;6v{2CIDm>5X+Y%OKX#XbcZbKC zq2qPjr1xNLS=E{fL(YNRX+&5Z{hqf};dSLG;0-eGmS+l6IzDW@d;ykrH!w+wjghr2pz+9Fz4k@g$ z0A%yDEIX<5IjZxFX9|mjvApenY>rPeT|!)z9EpX6-2fkRj&)?Ql=%@-5?3V%Fmn&P z<6i-xL3Zr_Q1#t^N$+pi=X*M39!pXyOA$|*S-G-OoOnvh+?J(=14p@V;})@UFHFgi zi`2}_ofG#aH8uA_+~NdrfC%b?=XpIpJpaMxe!cH;UDrK6gZ1_XLz9sS0^u?_7ik(F z)cT%^PIZ<@_RmWy{C)erYdO~iIK2KK>Oh6424fN8!2KD4Rhd-t?rbiFt7_TH{tgIr z;#5(;$vL_2BL;`#jkolN<0=PmNDn!%+!(fz!gc(ufAM1VJ+GZL-lm7r)@^3mDe3;tQ15{dmlG>3F_ z8&b&6mG(*7Ly zPHcZeo*h~%{q*w^JJVjY`caI%!pOr%#|6?e@9WQi`E$Bw4{}$#+s<&W^;9i2_kHBz zB8@FNDq52k0 zu=Zww2d8*7Q2N96leyQVJ+)y}KO0rpnGNK;zr5V9vRgT$9q{797)PyEokL0UOTfgI zou-g`NQor&)wG#uyb?JWYrC|U_JgaczSiF%ta}Qh>IY7Zjn`~=)OE^8NbZYwTkRx! zXN)}}BzR)r)GgvA{%#J~sMqJws$jeHU3RpDZMvuF%NMR!jD*GQoh|Uv0H_0Gjp5>w z1zVWaY3^mH)%CSV^s$a4)`I&U>CV7bY(Jk2mz) ztqcEJ-MQ%4UHGdIczwRBDS$$0q-2uF^u{aqY_?AAE6pg7lKKed&{B=zd(?U7 zUwt>T&pj%GPiFfd#q`+>O3GW3O;mN)s#K-*l7?1Q&yAHv}+&%@S)Bb&-H)To3DD#hUD#D{YB79 zcjjPu>W=ruMp_fP&|qGSjZ|h2j?fqz-cg#dp}W3Zq=a2@S!X#4E(5jm`hb2mb)sV<)=%Q=M@w6vMNQ1!NLO24KPZsN)wJ_Q3m6-OY|S@5A5e6 zAaNS?lB&z#Ij^tmb5Rorn&TO6VX_(%^rP*E|^THK4@;fVv>M0o!S z7M86a!Qh2~jf|xrMrfLblD_f5a|_*%FEJO#W^z$)=!v>XO9C5yg6I#Kkv+1t8W*+` z@?o!0$3>LD^{Hc85VPgOqwnkE!cL^K3(03R^t$wJXIw}gm}`pzp-RPXQ0*!CO$o+! zy&BF$sOI7Quwc{aQ@KGVKzOlz@^T5)vFv%nva3+dppZS_qw(BkCEuuJQ~8S9lzTBi z2DE9`w?rLrIh%V0RYCFIJ!~yGo-Eo8uV-i)2K=}(YbLBhHYvw#jvL>b?KXi+Mo;W!1;s1xh~T_JB0VT8zoy zVXH2b1InTI`N*!W9u{L7D}J`RA>NJe(NMy)K5O%MmP{tL zh_3>CVpK$HvTVvRDz#7U_TH(Hlxex1Um_be#Oda{ztI*>59-63Uwk;1o3s0Gu&Qx* zpZa~eV@bV?UbJffH=q{wBFU(>c5z9~?H66r~ zas7*5e(1j$pG}3he=RWp5$b)mR`u88{{Ce?Bm;8pjo&FExqS2b>}9#}Z@_1usXOkS zUPBiybxQAgOgfKFWKO_eYRZ$fkIhl}(-PL_1kDMD_@Gr|*o5kM(~ydRKmk09K0s~m zsTsZW+$|=~QmFVkNlCBH?`S{+kO@IGD}BFpZtHoGKzvVI4BUM-y9*J}UJ^vBZmeR? z&Y9M6EU7|XOb0@c`mlQ0@y>=;v-JP07oM>)^?FSlQlh|I#2P zd3p@>30&*hki>d{jdtw`W~Zm-#7(xn_19gUeat_ySvoGmZA$*ZhAYv6QaAS zZ*T+5dl>`ZM&ILL3UagGb(5&G6#VVIc7>r%2jvUwQUw-t2Yg`I-8<~Qc1DjS^X4zX zLUcJ+k0=IEMUqO6*aCD=q)%<_5jk_&IjWOeza47b8`Jfv8F3I_5|#YyVClJb z$$KgI!ShYVM`%Sw^ZCfW-GWQrbUJ0)cawh-3nSPYAu71jT{$LCEiq{Hj+b#9aNFhh zd+%>Mc*a>qa44k=T~D5gs_wOihYyGa>^2;9_1C91mef*USsVV#v555bS21D%p0Sos z9|X`koe5G(MF$faar;6a3)Ll3W^*Tnt(ylSFM4dE9fQ^ZL8N{^$%EZwygNbL;Oue!ajT5(n(iN0n93-;^xj=OIGV0aDWNR3$Ov@@4HM z@C-dq_-JEbjWK}fP+cv$n$-P>%nLm}`qGqCULHhG)b|YP52(KxzVs6f3H4~amTQP` zC&>{M-JF$vgKm|ynqu{))_V1*lMs~^dCdJ!Vth^WQcY!N?<1$`d?0((kTQ2GKbR2a z6Y|8Ve>>wBM=N&tybT@vR|09zX#G;&b6FLGPrYJclfw4PEVqHh9@?Cj(ahm|)BY+( z7)61D_oDl>vt$0jJFKp1xDNsr2|)1NNA?@uUNc#=4|sPC^8Cr&55GqDh7P}f7So5Y zMoCAj$wOn|m(1_2MAs0({k`r45Pt8O~Br{7XB=wp{p8JoYO?81yLh?1g# zP78nL`p{howeEC7)~zO3`Ri;Iqt?D&b4q)fi%<@VcnaKNTM#!Nm zI-5TA>YNOfA>x8o1Rq3@XC-_=!|h_PLJc;=KV( z#?UrScq(vlerHl}pRuE%F>?q$#wT-g8w-0i#hb^R&W4F1>?n!5N#pm`etAt%4T9!V zuSCvPEtJYVIw?b$)&=dPgogSDz4)U(s`r*Z-Zj#zTPkJ~QDZADo5qkm zXsT2FO^%q@QGZ~M%b?tNTFS1r#SNO&#K7sqW-~KZEF(%&ZSPuU<5ENIF)eOSO@Y@>g)czR z+}|x8o8`Z?^>{Pg{Rl9_94N15A8e8)LWO{6%D;DvFjIBab>Ui8ayU>6s3 z^!0e+ac*>91T7s~0}nczAS}3P<|acsXgbhAhZ0RYNdzZW&m2knj08)Eqf_0#UNgD&QfA$n~!~%v({?<}G-YqXVoIBo5&W|GC zo~^fy2kW>k;nb z=jT)>>52y~O*Cqy<{08_hDR#aH_RY^^A__jb z2Jh^)anOAX-<)3l(w%>1EKzCl5m}La{n52?8+w3IptfbLe=NIM!c#`|w+I(-WIt`n zIvXLRum64%$(&o4uSUfwT?S9$SOugh+L?JUsDJt}6n3~bwK|qW$k@!GPq-ri))F*G zXRy$(SUP=$u@gr=-sqh)zV#|zE5maUWZE8p(i-#?i&G^>FGsLA<{~s{Ix^no*{gkFmgdZh}mz*iMxtBOr&x1>z?=Q z(gzlqza1d+J*nLvSfG>hu)Aa>Nx=LSEIdxhyYIPK54L>}_IR?1K@AR|@BX_wX6N!1 zSL2c7=24ke;x!BP`mADLF;E?#4AZ#lHmiIT^;%ZKLU_W5y$B8g5(%imFgF@IHu4!H~hfU3xY*}%rkwR4veVgc#pDn@O} zw^}}x&*8|RR5UtMxQWULI$9F!j|0Uvt(ZyNusZzI5xm>fw<+VEtxNn|Fn2LMI&SHV zHND_HinZCqA{!r3s>3EOS^egCfby&+y#t`lSl#YAv5O#58^71$Px4|{IE4rk66#QG zeCj)V#}~Tl*v{S(&`t1e3UDKlH}zS($3Lq)r~g05cLH(i9bMsyzW8#Vze08U+6(3! zOYhEfAjVv-wEspFP<%@c=Sv!s8b|!$PW@;9UX>wNEtvVo)Mb>W;XDrw`gX+P7&P&V zxr`60N!z~XnZdf8r0otb6uSI?Mncg!^n(sCu6ZR-9Af!aQCGwQ>y#S(?o?cBQDE4C zuE`~@XI!sb-zg`te`z;J36weHIu+#0pDR}n;K6{W#L|M7${$p)hJ)`@Reb5a9IK|p zRJdej1Fbk7FH~|B{(v8LAN=el-I6|=I2E*hpXGsATFIFe4(BBnV(Gr9%z^r%Q)7ky zMQQzt4a6c2fPpRjz*- zTC_Mva$eR9EQ&2vIwuT4eV%z3Y4X=tjadgWV%D288RWaA&D>HXbHq{c!i_sDv15vG z;Og?g5km6G;Aum|AYfyIKoA5ySOQub&h|;&J5F#szjV&&t5^EFZ`e0}`+adl-@{`@ z-i)B_i!X9=G)H8IwM!qrf`U?_09+wV9Q%52pS^6N6EsYkIKU7&ST8kmbYcdSxN0j> z1f5HGZPecF7Tlr`{r8f0|5dO^Q=44$uY4YFm&M)JA<{I#w!QfO+P zL-7$l4zy+LkuLh{^Pk>&B>AHc<$oC(n~@g!*P0G;f>^x^bYj5$!{rwDv_rrGVfEv7iy5*trU@nb8Oj<)fLFheIaWDP31PLEb zQ#@bIZN}tIpY^PvsnoH~rzqgWz#}zNAC)km`^C}I)304-4j09ugACdQNhU&3-W#bM zV4`qzK02-JTnicl(#RwP!J3BCFFM@KAJ70wg3=XwPkm4YzKeWzO4Zw_iP`1~@h9y` z2d#FJd&ywgJpf;TQuTe+n6|JdMNv~v=i_dRj7!X3V?$ha(K_rJJKhR9^0&UT7_8FS z5RKW1UzfqRC)-P!DM!LRm_IKB?9Q3$#{mGsWUAQb2=3HBGZbY0bnheF1bdWW*pf%J z3!%=Z|7(xRUr(@3XYv)e%f6bjDfo#S52m{3TPdn5=#N>>p*!1Ow7De$!3QgjTJ=iIq+FcE8VV=_sJGxw6P&}Lz#vhUcj z7TWM**9X;bs^kEU1G|E0XwPFjA+8^9W078@xdk6ut@L@iYD~_I>T1LDR)XLx>%5Ec zzmNaE*S?@E&bHSTN$qD-@3GyU1-z`7griG4$PyEc#%*P*PEP&-!EfVq?19NPdTjY^*?^X(M4jddK z6Lrkc8aYrplp`c{6G6w$7?v(7A-z!9dt)-%Z5Z9D#nS5Dbe=(({I?t&0;KI?s_ z0Vqrcs`?+>0eJg|LZ*$bI$0}B+2nQL!bOlP?r7n_ogIn_azQYNeRX0Yu&!<^*}WqE z+4%pstA+UV{n>=@Y^}2iEFX0=*G6wT!p$6Xe<-$hDHU^=-!IKoAs;EEKgTa=6kDH_ zadKb`1|gN@6;VeUSttkJmx|tr?s6?SKcm$Eq7Q^dwYt~zWGRX^QJDYIL8xX~C`Cc2 z*w06*iza5b-frUhdDddame*_hl0dHi^VS@N_g;tM5ptl*&T%qd4YpVNrHHFdj~rgh zvKPfVYEH`$g|Q-5IW!(0dA(=OmR_F7{n;Ynm3O?Hg_>PvI*>5OxA0UBQ4pGN1|#gu zDvsL|4>>x}52E)3=*NMGdQE@s_8k@NUiw~v-)*}a(@_G#xRFBimeCuowt|bkfir~&V{#QE+jwM z!etzN9~@!^%<*&h@h*1wKPA?7nmvkIH{Idzv0%2puUvWl;d4MiP%lH7=*E8Aw_cxF zL*Je_Zq56A_U-g{;AW_*6Rb1hc-=m>C34r0KL zm*7n_AJqLr!=_#H{-dru@e~UqCEATIjyWkXh|%57fX_2~n8t%o-6nt3r?H+snqQsU zo}kX{G##~4kP3&}zP;bBS-4#A(c9%wBdz@udq^MMl^vtpwsH2$7}>!KquhE>xA4K{ z-C;K7_NUGhoS(}%UKGlAJb28-1P{V`aPdU+k8whRyUMaW-nnt~o%r-S z+P{8@M53=EGfT+EYG$Mal}q@vYp~h+X^J547+o^T7@s-XOIro_&FBUhyq2sap4Z(R z)(I}4#Mu@s;Z1(*HJ2+QkM^lksbXDmQU zJz7LFZV72XvooWj&ytWh|L&^@fU5sKG2`R+Jjc!L+@Ce62O9ya$w8ovnOdKP**=Q{ z8w2*D5y7TR!y;#H^xfz?9kxpI=IiaT)+LT|8)wL*altjzkV$R%V+FSKKV)TZv|f- z_=&kCLxXV2<*<3;X9C+dUXgp3(C6@0dA8_INBPs>c|o-H^!LHoH>+PeSyRG6o1JU> zD_wI#89sZ7($b~dP0(uS3}X-gr7NrW$0Q($Hh4GB9NAZfyD#r?orAq>tE?;MAov}u zwCD?~qBOv!Nc&3{Y=0(M=H!%!oL6=mW?yE4AMc0wy?xCMy6sU044)kK;;vjsU3PMe z5Gz#JN_+r(;P+!;OQ4-VO7XXkn_b$7f%E768yP)*AE_l50F1geyV|^6m}pp^aXdYfLfH_efTkN6YyUg` zYP0C{9wnT1wCuoU9OK#SqURB9Yi{DG{3$$G!3W|Ku=UpFG@DUCi0GLOjXAb}RxONN zq94x%`P3^CRUwK5SZ+MZ`Za9ETNjWTfX8$8Sco#W5RRQs&v!#!TYPz$w|)>FI?^qLN+{Wa-v~rdWETWL=$f07d@r`qoHJb+ITO*{V6tIK@anodaw?}4MXhz^@scxP7)sW*US7qc8F({};QTeIr@7#V*`YS!` zziq3*HHunTcwo|=0$H_bRruPs{otP>VsoVXM1q-a$H(Z)`q|K}T=R>VyIA;$`;?4Kg>|d@2gB_E z5Fu61P$wj?i_@slX5v|j+7WjXbEt$ZaU37?fiW47scE}KZ-vBqL~#LWGI8s4{}K~8~PRY%;gw11SMXt%E=^|%YCq{~oNR&KA;h>r`E86U+O z+ZD#mEq$%}(rvN!q?-ORd6MJ?wVvd#XUZY<_~apTebX*Wd63T*b--nGRrz5x?Of_Z zy|c1ag$f>Buf7Kod8K;i)}w%q3S!}jd1+1R0ldr0W|OCYRIO9o zilYhGa7{KCe+iCaC75VetvR$`IZC(a-aGg;w`VOh!OnZmjh!m3aeLn`Es*0B6a*Vf z)Zw3{j?APWCGP;63`EMloMQE;^R{5M*X*R{39W9ahKg-=x(m@17;CSSEkj=GoAKE+ zR=up1y6YVgsL`|`-ySNq2`=UJMiu%%)ArgGMOER~$dhBzs*lhWpoH0XZ?LbwHE!Qn zA+Es=t?q&O*SCRItieKswf#~tLGE$q{cXlAMuuT){&02Gw7>g5zSng9@*4KW~jP>`_>hoj%bVySXbkx((&FTE74^UQ@s9zFnw!2h}0q zd<%U7ohUJPs}{!3$Gz)XSk_0gly9_9fu*YTvpo(Y9TXGDjqt8(%W{oo5Qsz3Gk{N~ zxNty{uqoup?eLn4?HjEMEffVyY9v>=@L1uiol?EIasdl$>MymzFO|0Z)OplvjI>nE z7m_?QXY30%YC9L6t<1?-S&5eO+s_pxW6MRV#eZ9zG~lXEv=>4#EIC*Op{&=+mor0b zmz9yi)B4>L5z__)1s*;Pc)sP>ey(}DJ2ic$IW@X=R$dh~8s=@mZD^bt4!~E2U+lQD zXbqRLVjx4DwY-3c}QvHmA3B7>Ok64-KDqY$*jJ}6uKJ9>PY0@ z$_pJP!OX>E13sWE^;-wVAg@}^nWgPnSa~DQ9m-Ms=EVIj`A|2V*1xQY}-0rvY4 z9ZG3gnc6SHy?(=&;}E6CE8#PjfEMY&!ouFeIK}v(jT2B2dZN5?33@r$+xe+yz9~u` z`q#z8P9>oD{`O;4cF%PN`Ko$*!NNlp_rILEpSC~w7q+yZ>jpZ1;$P{w?f_QGuNfT|yX6JL1IJ`s$V}905DUBqO0rOx$5>i+AJJt8+!L zy@BtyflYVP%`!^QR4*v5Xzpq#8K1&d>`V*G)UUXDpRk?(GOiG*Mou#reNOp*alWK)Gz?SYfPOj*-ws%hIsK~JkMlQQn_!_46IOzh% zJ4#h4!lP=3aj{I5a!S7QHPb-FsT6Ld&c2WGX7O_ePhTWOb_~Wqj#G5f_cPQo()D+E z?8x>DWBx)tNk91?GlSPnlv!c}P{F{zw6%RxzEHmFV+ZDCq-!c*zM@4)%@{iIDDjH2 z^)~pVK+9X5JUyqN&$Xd>_mwIeNywzT8psFeH#TNuynJT*HnoOvhYYq{;#uevc5R$* zukEHjG-q7*=`#xCRK_a^yN|W<(tevB7C1irG9m6&Hqbp5A*XUJ^VULJRB8V;ps?d> zlH)D@NLgfTD|9HKMeQcRteDwc92#gJJCFnzAYM$CM=Q7yux+@bp#W;6cHNf2su>JG zkk4DIk)8xar=$*o5KT7jX4#u%VJAHL-iaf8`fB#rc+XR(MH6XVSSM4fQHnNy)Gp;| z(-S#=ZhrAIRa>K&8R6cRc>ak7HyBniFSVr&^}0I$HrIx`Yz04B-^yEIPrEAeRdLAsWT7R55q+y@s#czPim-=k3A?SW-Hz5mx%w zv?*guG#zQXQ^jqDIZ0XKTTkrt6@3&(QEWWqpkaM?(vbG1x}wgvZ6p&p#@3JLH3=M} zx*yW=k>eoaV)gp{KVCpF+oFWm`LUY<8$br3-`^3s(@}$ru$CI1JZ0iu`aliNQ}RXS ziT)QMv2wn(I!Ua*co7gJ!S`$Q16FYmvXTb3iXBvY-BnV%_}-jZFPg5Uqh5b&5^-A? zB?+>DB8rdeg;QZF-kCd>d?Minnf(fOO4T8s`bn*0|Bb-h{*TrV)N^6F2fE(N-{AO&{Wz(}9N#5_BT#B!QyD zx0m{hF#b`@SR;9GJ6@mcP`Qkj-O|*c2Hw)=-Kl&+{UW;fG}%o9Xz?vN?qIDzT@H}Y zT2?GCHJpQn7d?{;j7{Zu>KUVv1}zS30Gd&vXMCNe+E-rvp*Ly-D7o(R(-*sj!3#d*SYNxO^Ja6A7^^atut- zvwiP73O?ON59rZA5?^}J2RSuI`=n!Cob7I zOsV=&wu1JhQJW91yVoQ!(s+9D|8xrw08bEYv2rMf$k9a;WaIlMgv$A|l>^^JBr*g+ zJHVQKGq{wK6=xNk?sFr6r{so(h;@-TO~cDqI7h1Ynrh{UsnycK(`6Im@lZ2HGc>If zeh@(m*SssBS9}KHdk$Oj5VG+8fDWe^P-FEUo{(pF$?G z@KoW!wkETgB%p)dAUq}a#a$ND>dUL_iMwe>ryL*l3jq%gW&-zSmy_%azq{>k43Ou_ z@pa+-s%r<{A9v^GFw+Zdd372N%0VS(=bBa2?6jy2rwbx%@QLApz2gz0A+?bP9>8e(d?Gwti;J1_WwxZ zFC1Nbk$%M?i#=FF*jCc}2c$AR!C0DM0giW$*Me9L$M$xvK6XBdN7Z$8lM~bH70OCo zL|yMZdYEsjrB5O5d{yuDqr*Zghj-+x(-YZB3Ee1V``DM zagB2w-Zkdv$_0S(?6x1r^fN3SYnLBBha9Z=YpS?^%isIEPHGPVQIAUA@pE=$0NV%h zb*j&>Ys;ptvcq3#tkhA~@E;ncUiophQVt_|lqjYF0nwhgII1pf7A+=tzO!$n1+P3f z6){>Mz^8D~+e8Bm`|0 zDZ&&(!c$lUQfTRksNAx;>hhq{pmjd{nh|F7-F-3}w<#}#H4b~Ah7~M++#)IUErRk) z=XwL^sJ&4f~EBDZlYS zUMKwitY`aaX>*u2fCkCv%RG+hmHK&K%W3LWAhk5;LS>}?x8pmiM3pN_4G-YT(LY)<%TxLA78&Oh5b}eg=`w_ELC`z*YMvqRv2&1m5mm+f;hNj4??s6 z_uQ1n))VjUWM_oyL$gz&X>6ft?59=HrAU>mGwx#+(YV|N1HD3V;mZ7A{q+`pW<+e} zdehkRUi*1?W~fSLK|UiuN0R@6eV7zO&lLzd*MvwSY(HB4M$)oQcpFoi4NzWF|xs|E? z?^)8SZYqnuoJ9-rGQk>SXPuH31*b)>%-h=0ZKz)HAJA{Te5(KMbGe!?bBho5v}#S8-}4v2WY1_GH&|XKeq~DvrYE)U zWf1;8$8`Hrn9W|UwNKWSnXk#2>+q)e}z_g`3Zz+@N`@7 z(seG0)Q493ZSmm4=XpIk9(%wC>$j6#YGhUYaJBAw6QY?cHb_z9j@FjMZ#y(h{ayL{ z*E%#M>wvvUD#W>$EwyJ>KTg4w82LM|)%MH46TEpe5~eWL+lFie@6fAzPC~M4WK(3w zc%&<^xTAaI0&IT$4>)=9LY#bx*;rYllX|^#$dMCfsOJB5_M;jqCrXyf@SbLRdcPw7 zciU~0thfz51u_@8qSfx3>!Fk3^3M&I56t~pnxF}1`1_1}&;3?hmf%$|e@9ua`M2OW zD8ZAVg`S^p)d5F$;#2`k|Lf)g^SsgQ_>|hu>37CMt394%prRD3`THGe z*bVRhnE6t*0w|-h;fYHJ`4PxR`Ik)X6N41x&R+883BgOxozBHs*1lcQd&V8K`{Y%@ zEHE)aGDEO7{@Of_Jr{;JY!M?OJKmrwkh~)wYA%naKSKofI@GkkPDZwSDCTEe9pqDsr)+^cS-<|OOkZimsw zI#q5LksG3R;!lL;p@Q?&mGFgB=+UPneXn_gOyo0@aJW^ka3y^}Mj82o6gGMd&Bn(= z#{Rr}A4dvD-@zwO#Pv|(ewVS>LRrejO1E>vg1U7DB65GZMy=j3Udir0{YBSPIvhVrSc!OppEI+z zi1XdeeU9AwQ9bs>{aypVPB#-)g0FrRwT2$FtC0lNX^CPFVwSPBMGPD98HxGUf zJ?|}9KTPvqG*DW5;XNomaW>!?`o`ooPmUDCsh5&15cRkT@iTEb(7*!NZKc~PHT(e} zp{x2uq%)jWukcH`I5ej;h&7%Y*bHaa?f)yPysJJ?7fVIIYL{tzPyW{DqrCXq4C9D! zk1q%MB)Q2b1f1F#RiN!T-t0&jaJCYz&64Ets9DXH1*mzM@IfI<*DcpHnZ1{%Tq`Wc zGF8K6!NAdXNwD|iqN7V#T0)y!q(k6ZbVYmF#yDSxXm=jAb>51L^u)twUY4p^eseXV z62juK(Uxu*{xpYYZSH&rP@9XBvby-ZUjvhEgzmCx@_6c`>(!|I(xr@doDex|8RWY`aC<0c)RMtGVaF~&d6?RDtj(E2q}M7mylA4gvzc;LV@@n zfj1Bpq44>D=$c_AdN8TNk#q(wax=~A0s>3Rm!DKU3^e15dTd;=Mg}v7?lG@84NfwRqJkvAeX6i-u>U!S7`qVk5F5 zb-w;k+&5?cfxxxZLf>rOp3&YFyGUjYDo}Bkl6xb-FBnwD`OE3ie%xMgDEvc&Azw!& ztfD4UO$QY@+Ns8A0#(-3Gfaa-V+3(XhDWPFu1JzDAhIr_O#xQSy=Mjw`~lCdp~axh z`Z?+@j|!}2-Oav2(d6#YXbKe_pY2oF51ms;k_NA2tn;E7TiLLk>rvOr!rK=qHx4s4 zcot5=P0{0J{I(gF2K)2@q~+O=2FoS6v<4&sb}Z6`w97y?jkB)=t^hyr z#~Erv;aM|U2%SJi3nUpS(4BR&aZvyff_Q}XbogE1TshX$t3tAALeyVoZ!LJAU=QO} zNzxUm&8`J>M_kp&%1PSax>xKKdJ(uFViNvv;)9Y9CZsCmVfG+O3T}I; z@!?%t7oXn$$mN|uz*OEz;$xen4Aue@5}IDb$?_yi#>k@~o0`;bbGR^)%5zuq6&&LF z<(a_o;b(<6H^lOml;X1Xe9hUJ1-^Px3Md+oiS~5iGQ_a)F;K|}boc^o{p;O~EOM+> z!RmZ*D56cZI!YrgeTDAVaXXS`kRUb69-hos`F}67q6AU6Htkl}&_7Xm)K2)hSF=E< zzmLQ0MwaOTr$wHY$@WcOx!B9NtwoTPabSI)YjdsNUoD7^`Qwi}o0{qmU(9(dbVy6K zoTki5DL}k?b=omWPTQrVh<3aVX_26>!24 zLS-AGYCFTeApWF%vxYp@9kQl>A#v?~)bI8EPeuf0Hk6+e$KqQiE}uF z3F8+}fuwio7ls9b_Q{CCgR|pa?Fs?; z`a9~y%y~uYU-WFn9|L`%c(W+nmgVitGk}x<_Kc>0rGw^hLp7^A)l5Soz{Ni7XA22B z9=f-TZ2!{I2R{L(|E1g9Y89b0MFrB0o-W0r1U!c_dzENQ#Udg$(FS==2ktexS_3@F zy|dqOs$5`#Am1D>B2|`xCp?P|2W&un^-RLoBi=|0rIvK=$+N%fN6t4?F?O2=lQg?t zB+6L zeuR^4pu$I$te@=uuwAPQI`YrUE1xI$h^gPzn%Wa!;Is2+OdSTQ^OvLi@>ew-Ikox- zs;2f&O3|wLdOZJzqV>c%k5Yu9$7}8O$IbQ(p|&0e-^m;|O_B#SUQBSq3m7e8`W{`w zWn^Jeerq8{tcB*dew9r6Q^jAw1j5w0|8M(#sH$`Cadhm=7!7RYgh&GopHKr%?Uy2M~PbqqOHax(6C zr=EnW{~@d@b>c98DA>o@u>r|lcu;ol&yuN#dHTn%H1Q<8h z<3L3orEgXO3qT2N`&9#OFZqF$c#j=?4Mo4Qw52$|S{;+;FCc1KIeS*yM6KQYZvD4n zuBvrjqf9&jZQ`wIQbIYUJW%kGsq!)Rrrhz~+DVjNr+~%mt1}{b~)bKPn_@A3zvpI2L!m8bPTj0FMSNR&9%TKT?|SHL1v_?zJP@3;SR1*kH(NuJD6 z2RTnW_^wv8k{m0~frZaEx-wScYAh>Aq*4+l_$w%tf$%PtgY;wio!y4}qRSFC6=Vxd z^j;VTXb{ejD)x!@<+qi*1yy%?9hR=UmF2$d?{F@KXP!qTvNEM5KwiraaP!XM zjhVpC5X^YH)WyyU8XG3KFsQzFa7)tRm()$nsdMh+b8=*w;5 zR|cuvvPt$_9C3=1Y)KvRQ>d#bPKQ;_6U!ny7#?1ZkdmB97Ysgqe99gM<6cmc&OZ+> z7N7hs3UjCk?-HH1K&&t)hkhsi$L^4>OP!~2Y3%<-*-Hb%t=~;cOO)O5-=Fkqv~f4g zplbWe+zj~OQhTLZ)^jIi6TYJL!UOj>a!|L+wcTd>^9Vq5EcxXaC+PaChr`)Exu^er z1T_DAY5kV|PIjWcBx@U2s)yVvGiP_&;Ehln#Nzy~O&R2~Xg>Nqe3r{b>=fEYr5dqg z2&vFhSXPAN=%|#%VogTd_Wx<^+W(nu|9_>DJ57}4&Tw~-%3--{ zGQ?d(T5;v|oY&*$rTbw)r6OYGST1zJLzxiWL@h3K+SiBowWfuZ_aJIdZOOlYdB0L&=>cbF7Y*x@Y~P8a^s!6gs-~- zC_!s5msp|G)oJF&6-pi1(W_Ivvrto<4x`U`Bx4S`Rp^s>26i(&Rg?U@6p?8*#Q(yQD%gE%(X$_wrF=hEq~L5eD>fZ3bvF*xuKYaue6|0>>fuB) zRHrGiB4Sl)#ZqZtYuJVsIb!$uPOvcDEZ3}mR)6HNdw9EMc?JPa3~dY41duU8lR#OU z3(#K&^J1WAuZ}I^m_x@&acg0D0u9LfqQ3$aGO%}U{8+Ymc1{wo5UFC`GT=xm|b(4 znfkQ8&_C~$*DmJllsUWp!Ai$N7ay|xq9ho9B&{G&fv@LEcOa>D%3(+SG#2Jm1`Hm8 z0*8Htqmr+J4hop}_Wjg9;^bLX-IH=8&VaOKgWJ+3)oxyMnj0LfY)zogiw`L^WgCcN zW`933*RqyEw^xuexB+&vN%nro``E5?@JO`Yfq{yK$q)qlR@i=F!Y)MU%VRksnN zY24T4gUL7&3G@m!bF1wbrUN{)(DuH4F_Dp%E-OiG10TN2F!)ef|NSw2;KcYzv&Ngv z{6aK;cxsJgMw$5o(ZA%WisN?;&T~}EfthuVZ}6L2i`>Yr);yP-b*kTbTZopiw{M!< zsGJgkb-5vR@epgWzr6KcfvaXSn4@ghoM&~@A@q3hVU`f1Kh^2rS=34!JiV2@k)3fT z0c*xyA;i*H6f}Dp8RvTy^h;T%cvaLraLT*eq&a+6tv)CTU$Qt*>g%!f#(ay^Hwlcg z8(x~+xmv1=X|L}8w=AIjou1x45Uecf(p09e5AP!1BG;_*@GO&8nP4vN$YZBobg;>( z92x){<0qEvUwKsA$Y7KIxn$G}?|E>^$j=F_Q}C?af^6pMQf;nOzB~rZ{6F}T@lt!h zGtL~joHoOibI6XN+NU3K_qJ_%ys%5>Un#r90{#y1Cug5dQWTCj-k@t^U%V!Z*MGXG zcvclP_5PhXfLHKqx@ym;#Xq5W+N{?Ky5V>Pal+qPuFtn-E(x8pU!$8%sGf@1knyPj zL}#!b{)ym^E{-i;)CtuR4ZtGgYbF)e9Hx=@1KjWPqs&YvQrLA$BqTW;do=C zbIj|kW=*h@0wQ1zLC_f#FQLildwq|g6K)C!0Bo0cSaqDkF0K3$)(ki;^}7qxPJ_g8 zw{jNE429C1bS=GUIsecDyr~b9WiUW&0MnnfGbsc+wAoj+MhW!tU9lZ6PtDLHp`Icp zBsK`+S;~+q#gW+zZ`X5Do3APNev;KUFc#HU}+EABKBh3!@is}Cj zFxQ#Qtj>W)A>+^yo;HoT9{Bq9=-<#f44`gSr}r&Xoc`R**X(-RPNfDyBYtn(3D}0j zD(65P?Abt-ep(9R`$Dx>AyCD%&@-`ajuioMBq} zWb|3{Raxk*oUUN|Lg31t{8kz~oy9-%5mh5V+K!zM?FiI zY)Ms|JSA~E*@~Gbrw25*)1THSxUNJ@qL-Fp*X=Ksv22Hq6pmVamXh-PQCR8%NuJ+4 z&K$1~e9Y$h+JZb1tvNDT0u0^|#b45yS+!bX)gCrLG&GwBcR}%<9doF}L%#SEWUM|~ z3O831cCT$z=7fhlsZC{8Neh;rp}fG0_;vk!jad5p`+1X`5~C0RGzT<|P2*Za`$cuP z-j*@{%4wT?{W5Gwt9B%h{v9lChd0TtX+PSqxZKDqTChQDVr}K^I&}WJpMF6q9v^@` z49@O7I_AjpN%QSTNs_r)rg4rYK*RMV0dU)w4s0MIw2^#>hlb)RA2)kD-Xyy&>VyDO zvUQc?&i1+$k^}8PRat}{Pr%J85K%t@c+cKl%oSVzuy~en;ZDKf>O738n0$QRhY{0i zFD30~7tzVM1)fpG?Mo8DaiSLGvF<%NU2g|T+lD-xb_e?Bu5A#u{Gy8gPT?M&RaSj! zJF|0S=aAH^=-QY62DxrtCsCc^KPe|H4A>SlUW@vqcvN}pI!D|;Vo65nob2i`+rsgt z7;MHR-kN8+pN8h@)$9QC;|O$pX&+Z@96DaRY+t`YOEuE>ZNUiVm{(Xi|1?0HEDRU_ z&MewehUC@$#K1o9QJF%SjlG_x^`?rmd5Pv)y+Y+_;mdS6LkgrWs*5J8BuPnMfq0tM z3kOb_(BbbrM#D0AdvVyW$^cEJ%+Rj+Ha3nv==yV)XdE+jHs$^P%V6Kvuap$QFD_V7 zqGO<)$o;7LFM=y-#eTf;bMWj=cTWu{FFa4|o>ZK(FeWVB@)Ay(=O#o~g$%ctxcT5s zZV-ISq#&4ivN8E1SBuu?S=_@y4Im9*EYvS8SGfA>KiSXVuE9^!H#@P@L&CL|j144+ zrqW8$SZsnqmQA^Tm@I#SlKbFsvnL5rKWM0~ut=!u*;L zE)kW0<8*kb{dI7e-3=5Dsji*L8`Tu2FPR!Gqthy4sudO33(>WD3*(tuD3=Y4b~1;i zX!qO^ns$@)ioDj;rgEQc>dg!c1wT08RFS#(i5J}FRB@6Sew$N$nYR#Av9EapS>Wj| zz<7=SoLdgEIft5u)ayCG1TbP0nIIzEU|ZM8-ZyHa%j!ap5CR;7h4Yn{O+pJtV4JVD z>#|#%_QFy*?cF8kTIgq2CDuJt^XreVcqpmX-P?#r-sdXI#z0t|7V+O#OFJS>e!zqa zwUrxd|0E)^$4+SIV}`R_cu!j!#duv7SwTsfU7o!Jr@OpDzOyis{})b)r=RkYoD!UC ztij91(dqpdD457bn47q*Aihloqn=^r06PY?&<+0>J!kK^lh-Zo z82*_V)HP|>qx9w>yX$_e1?MDTQ=?%Zvh0H`rw~*g2SO#W<^yaNsi{yB=8QS!>f^%N z)}Z4CNPP)Ev(>oCEbKn3-l!Sbuj!HDL-3mGy}ZLF0Cv-uH`j3Hy!F^K(Q%>YTP7Tu zyz*TEblg+Zi!xS-`BwTCZk3ks*5|O|sSN40FX@EryG0QJfmxx-kxAeYy~I4j%xhB|Ng9PVu}U`}^A*_s)u{~{)kLG{f+5TY zxZF!)~D+udcwKkwltzQ_I|#zWD08FF5$``I-Zv|eq|2(uGCFQU(~ zhQczOBC*8uLD>ywht?!J{g|nP_3S;rK`|)wH4`=K)mUOAIhGTCyAAo(K}OsDf|uLm zDe(62?|AvKQf+OkLY;x;Ao8oT#jKG}l?3!? z%E#1Fllp+YAduo>DXlwbrLT++&a^fokVD<|vn(h&f9?jiuX5+{nUT7Y#IS#*vCexeH~4ccODbX zy=rJ{A4r^Ek#@I4wNuYUTP1IepR_5|!8r_Vp)*p$dEBJAzoX7L>(tO-(h*h^wi`f_ zvp*v>S}lJB0|r-!s1+pVPrGcT&F(gf@A1DL6@v;vC;@1qH^GTG`?dhcHaGOpqz4-X zC)oN@Ry1O*bZj+J)^H4C9fI}L10}5-%Ow}vPinu8k|MU-8aOmZ9jrDkv(r{l4#oH3 zoVF=k>=@~Hq zX)Rh&Y4+^XoPX7Yj0Tv--nF^aIDMu5Z9#13)RWvG62@6zR&qgarliK7!PEfsm!|m{ z)X4sWU;}MH!ET@eXW)JyKt--2+S(YK{mGFFq?7^<HWhu@S03##Zw~z4pQ6ijcGWkLEbeR}EX>N5~z8@Y5#_C;b%qi8o_Gc#6D_T_vc*rd45ilqPte_Mq z9U#1;coK=6ker)Zx1PhrbNPU!h`h*i1WN<%qMvfIDx~V*+9b!HBs-Jf7Ff@kJi=Op zt0DY3B5kIEe{a;){C5|q3{dZ`oIkAA{3JZyk8w_`&WR1r#@&*JzMr&b+4A(x&Sa=3VyO4cfXhuYF5e-0vI<$4SNhXB5YHH`+rkRZ; zifSz6Lf-EOsG^Pc8Z;3Y@06Su&%X~T$$jQ($djZgr)tY6{_*U7qL2GGUpj7I$TSfT z$vL#MELUKtDG+alTerP5aYx&)2hP1mXl~rJdm_q!;KfrDX)o5Us@oOThBZBVUEq7{ z`fDjEJMii9=q#~jDtb6Qwe1<87b?p;Aqmay43^dvpGL~*Drzs3najyf6Of3)E(s~M z_=Aan8JK0G%P&z#jcwg&!yty`Qgs-=FjhRXo7bgYHMXKME|-6l&5A*r%oqGNty63w z)b>zVe`j4~D}`S#q!XJng@ zh0J%Sb?gT6a1y>7$8N#KR(G-&=S-o}-lQxVDnH{y9hkbJOa_RjdTIWTp3g=q%xd=1 z9ufP7qj*GXJjaGLsZ`EtfnSbRm1;{X?oB6`Y>Zy}ln##oo>c)TPJd?QtktsF@znaC zcfA5-I@;vej z9Z9M(z+Fd`&kK&QzohFiZF=l^aI@F($OV#dcLMs!e^xR^O3kLa<~8rFPQ#_H*HT`P z;F=aq{J_%xPV0e_*w4O=yg$r1_bu1=SQqF|uNae@fH{fvYmd6>pz8C~l~jRUPr{#- zZLk}tUa1qFW+rw&mI-)j?x`FxK;~C0Ryv5N`dtNo&MACt%#@FNIdP-;!PMV|dig#s zA6l@?=OqIv(XxR6?R*= zKGHZmx(^3W|B8 zXBdrCJ$mhMqR~K5pQ~sb=<3XqTx%w+Ux$_}E5`pZJROhJ!&QCB(PLV>;M$G?*`akt z41uV*4B=R(^+=&adpGw0^ELonyVNVHc0P26=MYbU^S67EiZi9BN5h7}&mA7~pN{RQ zf|4V2a%<-ee^9Wr%j$V2$R~OH6DpzqC^_HV1-wfr8l<|>t$e`zC`i8x5Q9c#re6az!pWW?Q_`QvS)nh0sH+E z%iq8|qV^OySZtiTeM2kC0#{PQLUrff6_cMXjg-}mU(?6Pk%8e6uFuRc@CoLZR%8M1 zhgz3yKeYgze_btkib&NVt`4_9ek)9gb!++)jJ%%jiqwo*U|tyw0oXOo1jn*mQV#Vk z+w+I*IFQD&Ds1115>N7$<;3Xlli@2dekkRrcUXw?Xo(%A?I7C`AYXxD6mN6Y={Gu$ z!-3^kb%eGeK2p^yuW74?f(pp z7bkdg{-y)}L$70%OjoD1O3-rfm#2Nh1j`?sZk5jIszqLxET_YH+jDIkC`i3$vY!LA zvjiO2C1v+WO)>@^3PF-0$TBIPKByyf?I-sQ6aC1ZkDc$rw`7!bpCZ&Z;3;pt3FRNQ z*P&yrO4Ko{ZB)Hr2~aw;5NEh0$PdH;^d)XFQ$$PebpWBs8~{_MwF|o@FuHaBAZh@} zC99%Hl-TM(6FS`KT_!ofUKO$XlZKw@F*{!2^*W!VRR1^z8nvQ3SNB=gR{&vPVT3gz z7oOOTqN54cmz>eKRaSt2(jDfR)8)J&r zBc!q2nXR-5+f{jv3?U z4g;YCr3-{7z@beO2Yf_@1wW4&=Hd zxW`fz$FYj~E)taJGW($IyzU9)b!*+MXtt00?XeiKNBVBHW7SG9FBggV=(6FtQOGK^ z7HMtPZx9uOAj@_U$}O2mc@2A}zquH^274mF4yKg6)~@3N$<=Fs&;kEBWl_4xW%a6> z^_Av9oxXdZgLzYQNZq}5TK6q-*RJBo`vsU2N@m-K0{T%b#1{U@Z*}|}oxrS3`dJ7n zk%m%g;fQy-jOcXO#cryjHX?WqIF=GHz&6E~?8v)-!z;{5Ey2w&>WKQm$Bxwl#vaw< z2abuBh168(f6JzHB7I08`bH{n#pv^(xZtW?B7!aHq_=<&vFzbsISTe}{m zvE0w~3fGD{X+R44)M=ff^$WswM0n}#(1X@pFIulu=_D9%OB0qWD{ULSLbf9`uMa@? z-Ys&^&AU_mj$-=3Ud$w^_eWMteP`6tE#rVK51jN2r0Wyw>TH;|cM(QjKNCdk6kj9) z+P)@kU|9{12+0LpUON9e*9+K0JJPiE*qZf@m~N?9nTy_NEzLso({$UTnAH3TB%n0c zSl;&L%Ms%Zg<*}arpT6r%1eTC0*5~VCT!150aZ;io3{3-t|L*mnD{cb%mZ}DBuh(s z3Kd8F<_pp+1W<>yo8;T#X6x_uGXJr8_m#qEeU#ohyP}1a&*l1sxTvqS(jX3fQ`mzw z8>s%^zG3$gWYi)?%hje)opqGQ zJP)K5f`H;q;Vu%1HptuY2(xxxcNlp2@}+up)LI)&k%x0TS%+RRbjxXaYsF>jYcF4 z{kLJ9S2#@yLN*jpAONXb`ZDYC^zn%{S|)Ye!AX!VPAf$?coOvMLDOVMfn{KCSZ|ou zE2}e3)(p%0W!Eyxu<)+_pV#LL77F<8{Fnb3Y;6+!HHqr@f~FwLU*B6`>-?=_jfO+d zY84mV+Q{CRF1TYpkBr;+KUfUX$OaLRaeu;?rj8x-?|}^uEI7mq#^z=z<|JT_1}Sc9 zD{dBKoO*$gw7O7A!Et+qyu0XffRqdE#Z6rZ#w(OeD=lH%nrUxR`9c)&S@S%1wBzMq zBtHOXaY3(3@bDQFF%VNu)Al8Z_DG4G!dqQFcXZl8!b8GjIceeT`ahEyyaAa(8T<;o zJ|&isZEMpM0BsT%eyM;Xe$pd2!99_T18iQ&HEc@wL;2j5k_biw=H<`ME>UHXKlAO? zc~6O`=Y5`U3e?E~8qWt;Hu@qN5oHk=i$GuZF0USgj^xdFWbal+Im*B+F(u3YWpF0^ zVG>tk+-6LlN)`3UOA1zj`WoZ4^wbN`E}GhkDXTss01=R!VRsKrVhgH6UJjMJ55>9* z`=&SbT%k7g0ZNd*j-kjhpU`-=2>tTX$rrpURuAnXrTTBumWiwHirqKeg_w2MdCbJO zre7_o)k(QV4efMjW;5frn|gwsKD`@RE!9O)U19v*u=dpVz~85X4Ftk~-i@X~27>mB z|LZ;DwFeUE6EtMD#iWYymoB-<0xk!R;=RHkt=T}`aMs6!oa?|z|Ns2`hM4}gC8cEb WNo)=lFunu$F}-SLlzYYg>Hh#Hoo9If literal 0 HcmV?d00001 diff --git a/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_photo.xml b/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_photo.xml index c24b18ebc7..cad3459d7a 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_photo.xml +++ b/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_photo.xml @@ -1,13 +1,15 @@ - + android:fitsSystemWindows="true" + android:keepScreenOn="true" + android:orientation="vertical"> - \ No newline at end of file + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:scaleType="fitXY" /> + \ No newline at end of file diff --git a/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_splash.xml b/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_splash.xml index a0cb447982..7dbabeacc4 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_splash.xml +++ b/model_zoo/official/lite/object_detection/app/src/main/res/layout/activity_splash.xml @@ -7,46 +7,76 @@ android:background="@color/colorPrimary" tools:context=".SplashActivity"> - +