From af903b879d1e501dac20db69c9f365970b2f662e Mon Sep 17 00:00:00 2001
From: huan <3093416064@qq.com>
Date: Tue, 18 Apr 2023 16:52:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/.gitignore | 3 +
.idea/.name | 1 +
.idea/codeStyles/Project.xml | 116 +++++++++
.idea/compiler.xml | 6 +
.idea/deploymentTargetDropDown.xml | 17 ++
.idea/misc.xml | 77 ++++++
app/.gitignore | 1 +
app/build.gradle | 34 +++
app/proguard-rules.pro | 21 ++
.../cn/ExampleInstrumentedTest.java | 27 ++
app/src/main/AndroidManifest.xml | 23 ++
.../java/com/orangesale/cn/MainActivity.java | 72 ++++++
.../cn/activity/CategoryActivity.java | 102 ++++++++
.../cn/activity/OrangeDatabase.java | 53 ++++
.../cn/activity/RegisterActivity.java | 162 ++++++++++++
.../orangesale/cn/activity/UserActivity.java | 70 ++++++
.../com/orangesale/cn/adapter/Adapter.java | 69 +++++
.../com/orangesale/cn/entity/OrangeUser.java | 59 +++++
.../com/orangesale/cn/entity/Product.java | 37 +++
.../cn/fragment/SetDetailFragment.java | 60 +++++
app/src/main/res/drawable - 快捷方式.lnk | Bin 0 -> 1767 bytes
.../drawable-v24/ic_launcher_foreground.xml | 34 +++
app/src/main/res/drawable/address.png | Bin 0 -> 1028 bytes
app/src/main/res/drawable/arrow_down.png | Bin 0 -> 368 bytes
app/src/main/res/drawable/arrow_left.png | Bin 0 -> 231 bytes
app/src/main/res/drawable/arrow_right.png | Bin 0 -> 233 bytes
app/src/main/res/drawable/bingtangcheng.jpeg | Bin 0 -> 16703 bytes
app/src/main/res/drawable/button_login.xml | 15 ++
app/src/main/res/drawable/button_register.xml | 14 ++
app/src/main/res/drawable/chucheng.jpeg | Bin 0 -> 11438 bytes
app/src/main/res/drawable/city.png | Bin 0 -> 790 bytes
.../res/drawable/ic_launcher_background.xml | 170 +++++++++++++
app/src/main/res/drawable/juzi.png | Bin 0 -> 1898 bytes
app/src/main/res/drawable/orange.png | Bin 0 -> 7719 bytes
app/src/main/res/drawable/orange1.png | Bin 0 -> 6129 bytes
app/src/main/res/drawable/password.png | Bin 0 -> 1462 bytes
app/src/main/res/drawable/qicheng.jpeg | Bin 0 -> 20760 bytes
app/src/main/res/drawable/search.png | Bin 0 -> 1299 bytes
app/src/main/res/drawable/setting.png | Bin 0 -> 1101 bytes
app/src/main/res/drawable/sex.png | Bin 0 -> 1509 bytes
.../res/drawable/spinner_drop_down_shape.xml | 16 ++
app/src/main/res/drawable/sure_apssword.png | Bin 0 -> 799 bytes
app/src/main/res/drawable/user.png | Bin 0 -> 2173 bytes
app/src/main/res/drawable/user_account.png | Bin 0 -> 1045 bytes
app/src/main/res/drawable/user_general.png | Bin 0 -> 402 bytes
app/src/main/res/drawable/user_icon.png | Bin 0 -> 17357 bytes
app/src/main/res/drawable/user_icon1.png | Bin 0 -> 5995 bytes
app/src/main/res/drawable/user_pay.png | Bin 0 -> 554 bytes
app/src/main/res/drawable/user_sex.png | Bin 0 -> 1123 bytes
app/src/main/res/layout/activity_main.xml | 18 ++
app/src/main/res/layout/category_detail.xml | 16 ++
.../main/res/layout/category_list_item.xml | 14 ++
.../res/layout/categoty_detail_content.xml | 42 ++++
app/src/main/res/layout/content_category.xml | 52 ++++
app/src/main/res/layout/content_user.xml | 237 ++++++++++++++++++
app/src/main/res/layout/user_login.xml | 100 ++++++++
app/src/main/res/layout/user_register.xml | 173 +++++++++++++
.../res/mipmap-anydpi-v26/ic_launcher.xml | 5 +
.../mipmap-anydpi-v26/ic_launcher_round.xml | 5 +
app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes
.../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes
app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes
.../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes
app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes
.../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes
.../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes
.../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes
app/src/main/res/values/colors.xml | 6 +
app/src/main/res/values/strings.xml | 5 +
app/src/main/res/values/styles.xml | 11 +
.../com/orangesale/cn/ExampleUnitTest.java | 17 ++
build.gradle | 27 ++
gradle.properties | 22 ++
gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes
gradle/wrapper/gradle-wrapper.properties | 6 +
gradlew | 172 +++++++++++++
gradlew.bat | 84 +++++++
settings.gradle | 2 +
80 files changed, 2273 insertions(+)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/.name
create mode 100644 .idea/codeStyles/Project.xml
create mode 100644 .idea/compiler.xml
create mode 100644 .idea/deploymentTargetDropDown.xml
create mode 100644 .idea/misc.xml
create mode 100644 app/.gitignore
create mode 100644 app/build.gradle
create mode 100644 app/proguard-rules.pro
create mode 100644 app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java
create mode 100644 app/src/main/AndroidManifest.xml
create mode 100644 app/src/main/java/com/orangesale/cn/MainActivity.java
create mode 100644 app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java
create mode 100644 app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java
create mode 100644 app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java
create mode 100644 app/src/main/java/com/orangesale/cn/activity/UserActivity.java
create mode 100644 app/src/main/java/com/orangesale/cn/adapter/Adapter.java
create mode 100644 app/src/main/java/com/orangesale/cn/entity/OrangeUser.java
create mode 100644 app/src/main/java/com/orangesale/cn/entity/Product.java
create mode 100644 app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java
create mode 100644 app/src/main/res/drawable - 快捷方式.lnk
create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml
create mode 100644 app/src/main/res/drawable/address.png
create mode 100644 app/src/main/res/drawable/arrow_down.png
create mode 100644 app/src/main/res/drawable/arrow_left.png
create mode 100644 app/src/main/res/drawable/arrow_right.png
create mode 100644 app/src/main/res/drawable/bingtangcheng.jpeg
create mode 100644 app/src/main/res/drawable/button_login.xml
create mode 100644 app/src/main/res/drawable/button_register.xml
create mode 100644 app/src/main/res/drawable/chucheng.jpeg
create mode 100644 app/src/main/res/drawable/city.png
create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml
create mode 100644 app/src/main/res/drawable/juzi.png
create mode 100644 app/src/main/res/drawable/orange.png
create mode 100644 app/src/main/res/drawable/orange1.png
create mode 100644 app/src/main/res/drawable/password.png
create mode 100644 app/src/main/res/drawable/qicheng.jpeg
create mode 100644 app/src/main/res/drawable/search.png
create mode 100644 app/src/main/res/drawable/setting.png
create mode 100644 app/src/main/res/drawable/sex.png
create mode 100644 app/src/main/res/drawable/spinner_drop_down_shape.xml
create mode 100644 app/src/main/res/drawable/sure_apssword.png
create mode 100644 app/src/main/res/drawable/user.png
create mode 100644 app/src/main/res/drawable/user_account.png
create mode 100644 app/src/main/res/drawable/user_general.png
create mode 100644 app/src/main/res/drawable/user_icon.png
create mode 100644 app/src/main/res/drawable/user_icon1.png
create mode 100644 app/src/main/res/drawable/user_pay.png
create mode 100644 app/src/main/res/drawable/user_sex.png
create mode 100644 app/src/main/res/layout/activity_main.xml
create mode 100644 app/src/main/res/layout/category_detail.xml
create mode 100644 app/src/main/res/layout/category_list_item.xml
create mode 100644 app/src/main/res/layout/categoty_detail_content.xml
create mode 100644 app/src/main/res/layout/content_category.xml
create mode 100644 app/src/main/res/layout/content_user.xml
create mode 100644 app/src/main/res/layout/user_login.xml
create mode 100644 app/src/main/res/layout/user_register.xml
create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
create mode 100644 app/src/main/res/values/colors.xml
create mode 100644 app/src/main/res/values/strings.xml
create mode 100644 app/src/main/res/values/styles.xml
create mode 100644 app/src/test/java/com/orangesale/cn/ExampleUnitTest.java
create mode 100644 build.gradle
create mode 100644 gradle.properties
create mode 100644 gradle/wrapper/gradle-wrapper.jar
create mode 100644 gradle/wrapper/gradle-wrapper.properties
create mode 100644 gradlew
create mode 100644 gradlew.bat
create mode 100644 settings.gradle
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..8b854ab
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+BigOrange
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..681f41a
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..518dda1
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..27e91da
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Android
+
+
+ ComplianceLintAndroid
+
+
+ CorrectnessLintAndroid
+
+
+ LintAndroid
+
+
+ PerformanceLintAndroid
+
+
+ UsabilityLintAndroid
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..3b8a747
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,34 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 29
+ buildToolsVersion "29.0.2"
+ defaultConfig {
+ applicationId "com.orangesale.cn"
+ minSdkVersion 26
+ targetSdkVersion 29
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+ implementation 'liji.library.dev:citypickerview:1.1.0'
+}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..713d673
--- /dev/null
+++ b/app/src/androidTest/java/com/orangesale/cn/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package com.orangesale.cn;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("com.orangesale.cn", appContext.getPackageName());
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..e9dc395
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/orangesale/cn/MainActivity.java b/app/src/main/java/com/orangesale/cn/MainActivity.java
new file mode 100644
index 0000000..d2f9fb8
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/MainActivity.java
@@ -0,0 +1,72 @@
+package com.orangesale.cn;
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.orangesale.cn.activity.OrangeDatabase;
+import com.orangesale.cn.activity.RegisterActivity;
+import com.orangesale.cn.activity.UserActivity;
+
+public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+ private Button registerButton, loginButton;
+ private EditText usernameText, paswdEdit;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.user_login);
+ init();
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.register:
+ Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
+ startActivity(intent);
+ break;
+ case R.id.login:
+ if (validateLogin()) {
+ Intent intent1 = new Intent(MainActivity.this, UserActivity.class);
+ Bundle bundle = new Bundle();
+ OrangeDatabase orangeDatabase = new OrangeDatabase(MainActivity.this);
+ bundle.putString("username", usernameText.getText().toString());
+ bundle = orangeDatabase.queryUserInfo(orangeDatabase.getReadableDatabase(), bundle);
+ intent1.putExtras(bundle);
+ startActivity(intent1);
+ } else {
+ Toast.makeText(MainActivity.this, "账号或者密码错误", Toast.LENGTH_SHORT).show();
+ }
+ break;
+ }
+ }
+
+ //界面组件初始化
+ private void init() {
+ usernameText = findViewById(R.id.username);
+ paswdEdit = findViewById(R.id.password);
+ loginButton = findViewById(R.id.login);
+ loginButton.setOnClickListener(this);
+ registerButton = findViewById(R.id.register);
+ registerButton.setOnClickListener(this);
+ }
+ private boolean validateLogin(){
+ String username = usernameText.getText().toString();
+ String password = paswdEdit.getText().toString();
+ OrangeDatabase orangeDatabase =new OrangeDatabase(MainActivity.this);
+ SQLiteDatabase sqLiteDatabase = orangeDatabase.getReadableDatabase();
+ Cursor cursor = sqLiteDatabase.rawQuery("select * from orange_user where username=?and password = ?",new String[]{username,password});
+ if (cursor.getCount() > 0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java b/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java
new file mode 100644
index 0000000..32869c3
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/activity/CategoryActivity.java
@@ -0,0 +1,102 @@
+package com.orangesale.cn.activity;
+
+import android.app.Activity;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.os.Bundle;
+import android.widget.ListView;
+
+import androidx.annotation.Nullable;
+
+import com.orangesale.cn.R;
+import com.orangesale.cn.adapter.Adapter;
+import com.orangesale.cn.entity.Product;
+import com.orangesale.cn.fragment.SetDetailFragment;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class CategoryActivity extends Activity {
+ public OnChangeListener onchangedListener;
+ private List productList;
+ private List productCategory = new ArrayList<>();
+ private ListView titleList;
+ private Adapter adapter;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.content_category);
+ initData();
+ init();
+ SetDetailFragment fragment = new SetDetailFragment();
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+ transaction.replace(R.id.category_detail, fragment);
+ transaction.commit();
+ titleList.setOnItemClickListener((parent, view, position, id) -> {
+ adapter.setSelectedPosition(position);
+ adapter.notifyDataSetInvalidated();
+ if (onchangedListener != null) {
+ onchangedListener.changeText(productList.get(position));
+ }
+ });
+
+ }
+
+ public void setOnChangeListener(OnChangeListener onChangeListener) {
+ this.onchangedListener = onChangeListener;
+ }
+
+ public interface OnChangeListener {
+ void changeText(Product product);
+ }
+
+ /**
+ * 初始化数据
+ */
+ private void initData() {
+ productList = new ArrayList<>();
+
+ productCategory.add("冰糖橙");
+ productCategory.add("褚橙");
+ productCategory.add("脐橙");
+
+
+ Product product = new Product();
+ product.setImageUrlId(R.drawable.bingtangcheng);
+ product.setProductName("冰糖橙");
+ product.setProductPrice(new BigDecimal("9.9"));
+ product.setProductIntroduction("来自云南元江,地处干热河谷地带,造就了冰糖橙独特的口感和甜度~~。");
+
+ Product product1 = new Product();
+ product1.setImageUrlId(R.drawable.chucheng);
+ product1.setProductName("褚橙");
+ product1.setProductPrice(new BigDecimal("29.9"));
+ product1.setProductIntroduction("果香浓郁,甘润沁爽,每一颗褚橙,都是历练后的甘甜~~");
+
+
+ Product product2 = new Product();
+ product2.setImageUrlId(R.drawable.qicheng);
+ product2.setProductName("脐橙");
+ product2.setProductPrice(new BigDecimal("39.9"));
+ product2.setProductIntroduction("赣南脐橙果大形正,甜嫩爆浆,入口化渣,风味浓郁~~");
+
+
+ productList.add(product);
+ productList.add(product1);
+ productList.add(product2);
+
+ }
+
+ /**
+ * 初始化组件
+ */
+ private void init() {
+ titleList = findViewById(R.id.category_title_list);
+ adapter = new Adapter(productCategory, CategoryActivity.this);
+ titleList.setAdapter(adapter);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java b/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java
new file mode 100644
index 0000000..586e649
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/activity/OrangeDatabase.java
@@ -0,0 +1,53 @@
+package com.orangesale.cn.activity;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+
+public class OrangeDatabase extends SQLiteOpenHelper {
+
+ public OrangeDatabase(@Nullable Context context) {
+ super(context, "orange", null, 1);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ //创建用户表
+ String sql = "create table orange_user(id integer primary key autoincrement,username varchar(50),password varchar(50),sex varchar(10),city carchar(50))";
+ db.execSQL(sql);
+ }
+
+ @Override
+
+ public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {}
+
+ public void onUpgrade(SQLiteDatabase sqLiteDatabase, String username, String password, String sex, String city) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put("username", username);
+ contentValues.put("password", password);
+ contentValues.put("sex", sex);
+ contentValues.put("city", city);
+ sqLiteDatabase.insert("orange_user", null, contentValues);
+ sqLiteDatabase.close();
+ }
+ public void insertUsers(){}
+ public Bundle queryUserInfo(SQLiteDatabase sqLiteDatabase, Bundle bundle) {
+ String username = bundle.getString("username");
+ Cursor cursor = sqLiteDatabase.rawQuery("select * from orange_user where username=?", new String[]{username});
+ if (cursor != null) {
+ while (cursor.moveToNext()) {
+ bundle.putString("sex", cursor.getString(3));
+ bundle.putString("city", cursor.getString(4));
+ }
+ }
+ //cursor.close();
+ sqLiteDatabase.close();
+ return bundle;
+ }
+
+}
diff --git a/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java
new file mode 100644
index 0000000..6d8cf3d
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/activity/RegisterActivity.java
@@ -0,0 +1,162 @@
+package com.orangesale.cn.activity;
+
+import android.content.ContentValues;
+import android.content.Intent;
+import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.lljjcoder.citypickerview.widget.CityPicker;
+import com.orangesale.cn.R;
+
+public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
+ private EditText usernameEdit, passwordEdit, surePasswordEdit;
+ private TextView cityText;
+ private CityPicker cityPicker;
+ private Button regButton;
+ private RadioGroup sexGroup;
+ private String sexStr = "女";
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.user_register);
+ init();
+ }
+
+ /**
+ * 界面组件初始化
+ */
+ private void init() {
+ cityText = findViewById(R.id.reg_province);
+ cityText.setOnClickListener(this);
+ usernameEdit = findViewById(R.id.reg_username);
+ passwordEdit = findViewById(R.id.reg_password);
+ surePasswordEdit = findViewById(R.id.reg_sure_password);
+ regButton = findViewById(R.id.reg_register);
+ regButton.setOnClickListener(this);
+ sexGroup = findViewById(R.id.sex);
+ sexGroup.setOnCheckedChangeListener(this);
+
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.reg_province:
+ initCityPicker();
+ cityPicker.show();
+ break;
+ case R.id.reg_register:
+ //注册验证方法
+ validateRegister();
+ break;
+
+ }
+ }
+
+ /**
+ * 初始化城市选择器
+ */
+ public void initCityPicker() {
+ cityPicker = new CityPicker.Builder(RegisterActivity.this)
+ .textSize(16)
+ .title("地址选择")
+ .backgroundPop(0xa0000000)
+ .titleBackgroundColor("#EFB81C")
+ .titleTextColor("#000000")
+ .backgroundPop(0xa0000000)
+ .confirTextColor("#000000")
+ .cancelTextColor("#000000")
+ .province("湖南省")
+ .city("常德市")
+ .district("武陵区")
+ .textColor(Color.parseColor("#000000"))
+ .provinceCyclic(true)
+ .cityCyclic(false)
+ .districtCyclic(false)
+ .visibleItemsCount(7)
+ .itemPadding(10)
+ .onlyShowProvinceAndCity(false)
+ .build();
+ cityPicker.setOnCityItemClickListener(new CityPicker.OnCityItemClickListener() {
+ @Override
+ public void onSelected(String... strings) {
+ String province = strings[0];
+ String city = strings[1];
+ String district = strings[2];
+ cityText.setText(String.format("%s %s %s", province, city, district));
+ }
+
+ @Override
+ public void onCancel() {
+ }
+ });
+
+ }
+
+ /**
+ * 注册验证
+ */
+ public void validateRegister() {
+ // Intent intent = new Intent(RegisterActivity.this, UserActivity.class);
+ String username = usernameEdit.getText().toString();
+ String password = passwordEdit.getText().toString();
+ String surePassword = surePasswordEdit.getText().toString();
+ String city = cityText.getText().toString();
+ //判断两次密码是否输入一致
+ if (password.equals(surePassword)) {
+ //这里也可以再进行其它的验证,如是否符合要求等,符合就进行插入数据库操作
+ if (!username.equals("") || !password.equals("")) {
+ if (!city.equals("")) {
+ Bundle bundle = new Bundle();
+ bundle.putString("username", username);
+ bundle.putString("password", password);
+ bundle.putString("sex", sexStr);
+ bundle.putString("city", city);
+ OrangeDatabase orangeDatabase = new OrangeDatabase(RegisterActivity.this);
+ SQLiteDatabase sqLiteDatabase = orangeDatabase.getWritableDatabase();
+ insertData(sqLiteDatabase, bundle);
+ Intent intent = new Intent(RegisterActivity.this, UserActivity.class);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ } else {
+ Toast.makeText(RegisterActivity.this, "请选择常用收获地址", Toast.LENGTH_SHORT).show();
+ }
+ } else {
+ Toast.makeText(RegisterActivity.this, "账号或密码未填写", Toast.LENGTH_SHORT).show();
+ }
+ } else {
+ Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_SHORT).show();
+ }
+
+
+ }
+
+ @Override
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+ //根据用户选择来改变sex的值
+ sexStr = checkedId == R.id.reg_man ? "男" : "女";
+ }
+
+ private void insertData(SQLiteDatabase sqLiteDatabase, Bundle bundle) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put("username", bundle.getString("username"));
+ contentValues.put("password", bundle.getString("password"));
+ contentValues.put("sex", bundle.getString("sex"));
+ contentValues.put("city", bundle.getString("city"));
+ sqLiteDatabase.insert("orange_user", null, contentValues);
+ sqLiteDatabase.close();
+
+ }
+}
diff --git a/app/src/main/java/com/orangesale/cn/activity/UserActivity.java b/app/src/main/java/com/orangesale/cn/activity/UserActivity.java
new file mode 100644
index 0000000..4315cb2
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/activity/UserActivity.java
@@ -0,0 +1,70 @@
+package com.orangesale.cn.activity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+import com.orangesale.cn.R;
+
+public class UserActivity extends Activity implements View.OnClickListener {
+ private ImageView userIconImage;
+ private TextView usernameText, userSexText, userCityText;
+ private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine, userSearchProductLine;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.content_user);
+ init();
+ }
+
+ /**
+ * 组件初始化
+ */
+ private void init() {
+ userIconImage = findViewById(R.id.user_icon);
+ usernameText = findViewById(R.id.user_username);
+ userSexText = findViewById(R.id.user_sex);
+ userCityText = findViewById(R.id.user_city);
+ usernameLine = findViewById(R.id.user_username_line);
+ userSexline = findViewById(R.id.user_sex_line);
+ userCityLine = findViewById(R.id.user_city_line);
+ userPayLine = findViewById(R.id.user_pay);
+ userSettingLine = findViewById(R.id.user_setting);
+ userGeneralLine = findViewById(R.id.user_general);
+ userSearchProductLine = findViewById(R.id.user_searchProduct);
+ userSearchProductLine.setOnClickListener(this);
+ setData();
+ }
+
+ /**
+ * 组件赋值
+ */
+ private void setData() {
+ Intent intent = UserActivity.this.getIntent();
+ Bundle bundle = intent.getExtras();
+ usernameText.setText(String.format("用户名:%s", bundle.getString("username")));
+ userSexText.setText(String.format("性别:%s", bundle.getString("sex")));
+ userCityText.setText(String.format("城市:%s", bundle.getString("city")));
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.user_searchProduct:
+ Intent intent1 = new Intent(UserActivity.this, CategoryActivity.class);
+ startActivity(intent1);
+
+ case R.id.user_sex:
+ Intent intent2 = new Intent(UserActivity.this, CategoryActivity.class);
+ startActivity(intent2);
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/orangesale/cn/adapter/Adapter.java b/app/src/main/java/com/orangesale/cn/adapter/Adapter.java
new file mode 100644
index 0000000..fd28415
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/adapter/Adapter.java
@@ -0,0 +1,69 @@
+package com.orangesale.cn.adapter;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.orangesale.cn.R;
+
+import java.util.List;
+
+public class Adapter extends BaseAdapter {
+ private List productCategory;
+ private LayoutInflater layoutInflater;
+ private int selectionPosition = -1;
+
+ public Adapter(List productCategory, Context context) {
+ this.productCategory = productCategory;
+ this.layoutInflater = LayoutInflater.from(context);
+ }
+
+ @Override
+ public int getCount() {
+ return productCategory.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return productCategory.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder viewHolder = null;
+ if (convertView == null) {
+ viewHolder = new ViewHolder();
+ convertView = layoutInflater.inflate(R.layout.category_list_item, null);
+ Log.i("adapts", "getView: " + convertView);
+ viewHolder.tv = convertView.findViewById(R.id.categor_titles);
+ convertView.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
+ viewHolder.tv.setText(productCategory.get(position));
+ if (selectionPosition == position) {
+ viewHolder.tv.setBackgroundColor(Color.GREEN);
+ } else {
+ viewHolder.tv.setBackgroundColor(Color.WHITE);
+ }
+ return convertView;
+ }
+
+ public void setSelectedPosition(int position) {
+ this.selectionPosition = position;
+ }
+
+ class ViewHolder {
+ TextView tv;
+ }
+}
diff --git a/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java b/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java
new file mode 100644
index 0000000..bc3e24e
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/entity/OrangeUser.java
@@ -0,0 +1,59 @@
+package com.orangesale.cn.entity;
+
+public class OrangeUser {
+ private Integer id;
+ private String username;
+ private String password;
+ private String sex;
+ private String city;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ @Override
+ public String toString() {
+ return "OrangeUser{" +
+ "username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ ", sex='" + sex + '\'' +
+ ", city='" + city + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/orangesale/cn/entity/Product.java b/app/src/main/java/com/orangesale/cn/entity/Product.java
new file mode 100644
index 0000000..500f731
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/entity/Product.java
@@ -0,0 +1,37 @@
+package com.orangesale.cn.entity;
+
+import java.math.BigDecimal;
+
+public class Product {
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public BigDecimal getProductPrice() {
+ return productPrice;
+ }
+ public String getProductIntroduction() {return productIntroduction;}
+
+ public void setProductPrice(BigDecimal productPrice) {
+ this.productPrice = productPrice;
+ }
+ public void setProductIntroduction(String productIntroduction) {this.productIntroduction = productIntroduction;}
+
+ public Integer getImageUrlId() {
+ return imageUrlId;
+ }
+
+ public void setImageUrlId(Integer imageUrlId) {
+ this.imageUrlId = imageUrlId;
+ }
+
+ private Integer imageUrlId;
+ private String productName;
+ private BigDecimal productPrice;
+ private String productIntroduction;
+}
diff --git a/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java b/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java
new file mode 100644
index 0000000..3ba48dc
--- /dev/null
+++ b/app/src/main/java/com/orangesale/cn/fragment/SetDetailFragment.java
@@ -0,0 +1,60 @@
+package com.orangesale.cn.fragment;
+
+import static com.orangesale.cn.R.id.category_product_price;
+
+import android.annotation.SuppressLint;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.orangesale.cn.R;
+import com.orangesale.cn.activity.CategoryActivity;
+
+import java.util.Objects;
+
+public class SetDetailFragment extends Fragment {
+ private View view;
+ private ImageView imageView;//图片
+ private TextView nameText, priceText;//名称,售价
+ private TextView introductionText;//介绍
+
+
+ @SuppressLint("SetTextI18n")
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ view = inflater.inflate(R.layout.categoty_detail_content, container, false);
+ if (view != null) {
+ init();
+ }
+ CategoryActivity categoryActivity = (CategoryActivity) getActivity();
+ Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> {
+ Log.i("sss", "onCreateView: " + product.getProductName());
+
+ imageView.setBackgroundResource(product.getImageUrlId());
+ nameText.setText(product.getProductName());
+ priceText.setText(product.getProductPrice().toString());
+ introductionText.setText(product.getProductIntroduction());
+ });
+ return view;
+ }
+
+ /**
+ * 内容组件初始化
+ */
+ private void init() {
+ imageView = view.findViewById(R.id.category_product_image);
+ nameText = view.findViewById(R.id.category_product_name);
+ priceText = view.findViewById(category_product_price);
+ introductionText = view.findViewById(R.id.category_product_introduction);
+ }
+
+}
diff --git a/app/src/main/res/drawable - 快捷方式.lnk b/app/src/main/res/drawable - 快捷方式.lnk
new file mode 100644
index 0000000000000000000000000000000000000000..ac0ec82eefeb9a62eb7a05aa8dfe1701c4622972
GIT binary patch
literal 1767
zcmc&!eMlTv5dU4wA5lnp8f{dXC{i)O#$M0{y&{7O}L%d=x8K5~0x2f7(haLJ`|i=*+s^lXIc@ue;3b
z+c)!m^Lz7V-tz!#sXIsmv${rkA9le`P;f%(;qWVdblo4PU~
z6iR{IHLbttp2*tj;{6&e}^1w)D#77Bw{C4
zzi?L7R
zI~p`OBGkIv9-5+%ST-tW0=&A8<79S>0-Z|%}
z^d#T?FS|t7Q6g|35iw9;7c!(EI@s9mzxA|2u8MIKu6<#w>vn65hzij|W^61FCz(
nT~;t$+S$LK=Kbv8COJJk7X9+~PWNkhE!`U{dw=Blf1iH
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/address.png b/app/src/main/res/drawable/address.png
new file mode 100644
index 0000000000000000000000000000000000000000..7318be016a0fea789da57d99dcecd6485834d90d
GIT binary patch
literal 1028
zcmV+f1pE7mP)5000BaNklDk%Y
z^L1WPEtqb%ySve7d?6yolv15K!uE{TxjPY%sF{WvH
z!8)_=MtOV2+5Z`4zRuVE#u(eYwu!B~+Ih6Z%+n?3e~qGOr*AxXVHOt`uU=VM`9VYu
zDWyIrNiZcM+lc6#?yu{Y^-*=#E{
zy?(!c?5x`B%yss*@F3cSOJ_lgk^>1IP5;w+J-?8Snmzlq+I$sOMy`3W#rtp<2
z;i5bihM8ZiI&b%D!#JRi0bHt6E?1sS%zSqpkYE_C^>!k%^K
z@3t(*3%)0>owB>TQ=PG7?
zuqx@uDiJgsLb>I_RlT0dM%bgI}Qev%zXd`wC!WDw3Z(t{u
zHYvQ~Rufr4Id#3=)9Wtv{9ls)|3|=>j~Fu#CK<@gvs&xN|9blFp)qC^0QO>xZLRg)
zs8D0fD*$W}(eY;}#+Xe2umI2|qHa?tGe0LuvLU6sC^cVFX6BX<;s5})iRgS7)Hyfp
zy?;Q&bt&cT$Lx>VWLY+kh^In`j#BEZ3TmyL3n5$qK#Pd(2WKjKnCJOSQ52VmxFe-J
z85CG+7efd~h`21JeENRjuf=xGO?mHcVvJU6eOL;uwQC`S-CnP^kf!NN)$40F#Tau9
z0Q*9SevGk0L`%cGtp%21X6_;)Dy3HH(r*N;gVcsH3ZQW)e}zuqm)`)Eo@f>Q6}kKX
O0000pWc?Ln7SYUUTGXFyL{y_+-L2
zAe`!S*CTxHOaYa5+UMsh6?*@xD4H)SFgHMSO;ZNrmzui=x3C_U*gmtg{5?mI(WBPg
zVrvvVtUff)J{GxgZrBp0n>&66nk-;)XI@nxvOtKP`KkqnM58sE+rxj{bK=E91%L6o
zDJUkmcuK5r3u^FE;a%Yr)X1eGyTkEWRK)$GCSOn0@3MV=&eJW%A&v1%tmz}I4l#%G
d*JWL}?QZm^Xy&~w{S0(DgQu&X%Q~loCIBHF0c}}hK=j_wft4{YmYwx|DzjJ?A03=FsigExnGynkY@c{f?
z0K5X=Vq@cAW8vc9;Naom;uDY)5u(2u6c^19T?zw@5r9sL
zhCzz=}p0|Ols0}Bfi^D#Q`@j3vL
z6pM_3R~q}Nra2CyJ2_uSLLM$irlu39HF3hkZ{ZP&hyUz31tk?T3o9Ethk&4vun0u-
z)oWQfc?Cr!Z5>@beFH-yODk&|TRVFPn5UPwkFOs*?0tAdZi|X>G=hP
zMa3nhW#zSX^$m?p%`L4zy1ILM`}zk4C#O);GqZC)=U3O(H#WDncXszq&(1F{udZ)y
z@BYCH4S@0AXg!|)8?pa^7wID}bWBVPOq_r4LPPg?1O_Q476UIfnY1R3x%*Q_z7Sk;
znS{KWPCO95)(OzUV*>vflfWwT=|8CbS7!elvC#hzv;R))|Kl|eAizL-e0Uh707=00
z9b0}d{(ltg{0gQzR`G0TC|!HOCko$wcROC1YtX<{wZnYqwhdcRGiS2pFn^E?Vub3?
zXJa}?71YFDBUvUh>h+xqc?#TBmPuI2(Q_zS`H19chRIPA7sc;wIJ@#(p`SgH?aUrY6Ko>BJI_BlsT8)0aQ
zsdc_!^@A$d+Buo=FTnTA5kF97%PEZ+b}9J6CfDn_C!i=`jP%31i+bohg^|w82gf$y
zQyr%{%%q#CX@Y1{G^Q&c;b?|HwD&hLAe7Kt^<2_#ZYMMO*++{a&lhZ}o$`Gi4_QsRvv=@d4>5`RtcbJS(H!U%>pzAFl{urvdV%Z{`aoDBkIv@80sNDuPrM%TYV?
zu2GzVWTaMSo01(5w!6moFf*AGg%UX3XMNcM-(r7gjhS!;Kx7#L{v&wNOuYwmrfTKy
z>amWcz2wrjY|qaR^*v%Vv~cV1qDQ2*qmIiq!pSvN&=G98|2``GN`KB#U@djKrEQSD
zrue-D1ytx%rKxc-%};~_Gm!h<^MnY~C8p{ZN;POCm>U;+^3-}M_==73OAxlQhJuC7
zW=+ksRpapBA&Ru*+Fk<}dM|pfKE~4B*2C1Il0JCsTZEws8!JaqCa(#RA5$zAx3z!J
zo0$Tg;`QOwob8}9n-n1R*$4VW8+~)CR1Sn;ERGZo)4i@Ut8T+geZT9$Ts>cO@FEb}
zNt>TFeTY)Z%=9}fp5>lUO=y%Gi$26$`*I+zYbzPfFnb(1clb*zLM7v!M?vnu0BzPT
zq{n4296u>e0C=gqb!_c?#}7wrt(?wA9rQ)9V74U+
z2S1K34xc4paDIS=#bdki`1R4dap*d@+QclsK^RXtZthQQT#7od<=2b+`0vkvoejW>
z7@Bq+X}#6V$%=fV)Z*jDwaN{@0uGsq4IXT#3a;DS`~_4@ZG5~=n+-1*6)voOfs
zIM=;ev8AjiqcopNrw|p7~RfSy&%U-adeWIkKyeO>-nph;KcO{ST!*C&h
z-A>yRB-Z%7aL;=Qzvkd^UOG@}GN9wbhQ>OIx1~|QVjFD9fAEetKDSg;K*q!o`G%@;
zZ^-jMb=t-Z^1MS_^cN`>7?Os82|~fWDt>}`(o=*?ON`bV9C2!NooX>-N;)x|oUnXa?|?AN~UB#f7;W`~VFh1koklK5``y
zS5P^~?yLXZ!KDoI4Z5v
z0!#E1e*tTz_UM&=iH`
zQ}0PJduaQ98_evg_2BwNzOVO-9HQM>O<(zY-7R^0+dq>$=I^6r8v085J%wVa!?KNcewfc*M95%VQ)p|
zRy7#5aL8TlsJk%n^5k1~WZCZd?l+*Kr>gut%i#RaEno2jiHDfE#cfb#T<@0$e%BzJ
z;K?i3rx`TjU9730OK9OunKZwRnP^2bSGYVfB^YCJZ@WDQ+e%uZnlD#N-Tl;)EQDl6K;Vd!ky)z+9hvN**x!^Vcu+
z$GEmC7qy-J7n%Z%)kd0}t8K)TPoc=sCfD+t@l?E_*BkAGmRey|
zyRsDz;!U5pWA9ki+n1|mmv`q51qw-b^-5nF-EcZ!4e_v;NnFXlncag=4hfoAtvD80QiPlqP4b!1b<2It^wPFvAk4ZZM
zRR@+1Noh80#7_*nt=6)b!V8(M_v~w8#@^&uI<{VB=4k&cp;a(wa>R#aCW^2i720rd
z%b(NSqufX{u{(N1?Xl6fORC|Ac@*XPkd1`|ty2sh3~EGAN`(9P<*w0`(jObSrQnr&
z{Jw0JmTlVUZA&eeo#QUn8jQr2J|O9eO-km5=XEhZfj+u?0XffUKT{ybGfJjJm=^Ea
zqns&J&5uY@&Alw6V$7w*y#!h>F^X$Bj{#X0HE@ca)AV0iY3JHDwZz(uQYt`7!V5)4
z`S^E@v`g2SCY~xO4PQbkkj7Q|o!8d+iHq4eJXPi2Wq#=CmiFfF1-P($
zsx4n3*Oc}Aj76>~_3wbXDemP)ei-e@mIB>K^rqqC))
zJ8g~iHJ=-c+D;IE>|%~dROJKlYTJ|ks>6#O!+hud5pXlkEJ3&aE9IXM806^Qlfz(c
zQfC_b*Gs|MME$LXDSf!14%j^%OPnv8zWxPp#isi{
z2(Ii&j4J=^S^8ya{C&0LRj!>yDps2>YVnCjzKRDLAmKK|r0>0p=iECQ`;$E%y%T9s
zRm$@s(nzdd^knj`N(avbNj|i2Ja?5yk$FjMPijAI{}=Fc=FF%=5dldW!B=Ej_g2?(
zEOv8I?d{7@CdE>m%KF1}agh97&u^(QWo0Ko6=v%#uv>qdG}73DcnEpML*RNp+TMA6
zv8pd$bMpQV^VjC3k_G$5BCSPL-@!A55*F!C_w6nHBD9w~k|!~Ck{6g$K_@`TA8|Kw
z^>laW_TO*tb5>0zx&)?br-tt4F0C_Vi(9t66MvmHTnBA0es}hA^+O+X6xaUobAd^X
zQr!i&%mM6Z>@V`{i2-9MaCB}>s$A>@OWCya_SWNE!t^nr7w81?%sWIl
z{aD*=+MGx6wo*1(a^Lx%n`oDAjmf2OYrfw`yt>uKgRG4IW~Wgkv>~4i+>xkXhRu|L
zl!+(=Ip3~Ch+Gv02dq$`5X^RS2?Mvmz;+IkEue!3xol1RkxAxn4&ms$P8zUx!fg2iKI9x^EQ)xMu>Rts=B8c;R{Ptk}S!vN?Ai1X5?&iOfVE);AaUHWzu&c-!oCH!Ein^=EREY9hP3zmom}W-If5er1e!cG1Hp2T_IzUa92V;$RpPi{MK#Ftox=&FMp
zv(WN^=yh)ohw{-A{l&pdXGU@B?^y~sTo!);p87e)
zY3u2}w`-=7%#3}No2nMzNr<&Zo-@}82=t%N3dE8mNO
z(CR?PoZTJ>lSvXp{9*l~89yptMp0htJEb0%NF8Uiohn95vlWv{)Hct#%WptcBl{JU
z_m)s6t}opr(FyJRFickvYW7Prjj3sohX-b6=8Py12Wuoc(}*~68KBx?gF65Yb+PI+
z4zhv$#Bis~SjTndV~033_7aPVSYBP@DMZ6dldbYW{&5srmK(i=^!7>V+;#)>E*j+|
zuQUNF2H}-%#4~PVZZ}BgD9P~8AgOR68&fFDCh{-@JXGF@LP+%qrb}?y9*6f^a_2o!
zs`6%5q*BYk@tBIPoRPr~d$Wzr>ndFOYp8w6WHJFll2@B$dCQ?+76Rm`^4A7>XN&5D
z1cL;5%uX`sm@1qdnciRE07qX$XCl6@J*lH9H!i!)-1rSf7p6x`zu*A(aQEKW`B$lz
z&DmwMe^QqXnKmMU`&9ku(riS%CF@v;U2m?Y&`zJ25>(C-TD1!A@6*gCgf~;q=pfaK
z`>@5pG0LOa(N~-khN9dJ*wrqSxQ6n}>PpkVOOi}mAX__eS|&4|$bbVExu%}Ne`b$I
zi^|9q|NM^x2TAVg!N4Fq9
zN_@5M$BglUwXVybn(ZZ-@V*4oIh`8DfuGJ~ujSEieKRX&Dbn}jUoKK2(L+#-w0yG>
zxumH8b)zwaimTB=h+a^WKzkfAeM*_bnJK(5X}k539oX6iOy)H_^wfG8e?h;c-A6`&
z_JsSAZnrAzC74@{yAi81(xZmh{Kk$&3*0MF^}HMGMXDT2%=(?o@ag>uARVyXoc>d4)|9=ip|Z2)osU34MgTfS)Shc7Q}mo2U~Z5AMqwSWT9?UbARu-eRP^3uNu^!5}Y1VSi(Wi#Y1G$ONNVZc|)?w*}(*|
zpk3|oVu~(yEfGPEXf%zv^cI*hie<`G&tQN;GNf92s=DBNz2Z73yI_1a0e>%my*w~`
zMe6YVJK_t$!;PD5ynA*i<(f^ipcd_nSi!iMrh=%}>hOb-#*c
zBe@UFzOvred+4{G`>{LxO>2u`|0FXa*I3Wl+A!1wj}9b9{DU#~qKDlxj}*>QA}Cz<
zLq29H2GeDa17=JC?)&I>Ug!00f2Nn^i$ss8Ky?s#qQk7zHiP@8f-C19^221o>1pq}x{OFiv{gpJ>y`Z0c_^3X7`<~3JL28D$qgczaj!8K2iYW6q>lb?4qbDtHRTXnpLTA=
z9{peayRjF?JkG3w;+2u;ZcC9yc=O#)lcLurD<}c<+X=_2=jWNUveY35KmDva4mcpp
zwCx-j>Wc}t(=Z8mQo2KG6P8K~(_g?#HGf?>i;*PNMdPwU)@(<+-rfl%rha}ki68ky
z4!#{sPy5>Ox!TbN=VMr-)71s=xxE>WmJ;^oYq#5U#0Bk2`JnlNm<2N>^(|-HS}!OV
zTgDEt`ixS+i(fjC_7llgh0zX*f;Rr&QaoP@?AYunonKb)jgdcTH3Z^RQ0r&gedCH#
znN(p`sjK-t9~c-|Zj-9qc{L(qlC%0|RdWX`P~codtGIQrZ%7$USo1<(On$l&MCsTp
z_1MBjQ!B4Un_^JXL=zgJD-#O#*`my17gxjJTlAms9x
zx2c~1)Iw5;kLkXCUpE!tE1an4?Myzyt$y?5W66h@^=sNdqo;+3j7n_zt;7G2f$0BH
z#Ag!O37TE0b5F`0$8y+m8?+FD>tkWs&G)iHB=0obz~UY^K;|ye%xNzt>dedP&>lT6
zN1?I2A|eB(7_cXPaKe}whkSyL3x&$1pdohxgcA=6l`fz4;mS4!cql-sKA@r*@)Aqf
zm9@lLD8e_6MpZSNofpHBV$~hAlwCd46n0T437y!EvL&%ijKPMrU9KzLPh7{z!(pOc>4-nUa8}%w#!vKvI~h{w}}Tq-S6qF_g}6VgFd-q(3IuCX{(j!Fg;XqLEc(
z-z0W2Cf+gsWE^p?-&o(~O{%o|1fzcpuJxmMGV1+S-gDORDaGHairds)=nYy(@FlvQf}4KWIGHW>3Y6`@%Wj{%B_?#Zf_yqd~cj*p4cx|a%;dk=w*SjDYv
z@$%?({GL5eR)-eSc*War0!vsj-B9aDc}son-st%YT=%aw>FI3)*B}dGc=}YA(9A
zyPh$OlhSz-^(At47S;_uMvBW7*kwh+;%6kE_h#I>?z6>$XEJ^`VFvRlm)!uSp$Hnh
zs#a3f%xRYk7S!e2+PAzN6zDB&AFnMt1@=#d{_ZarWypJq#`5j5{BjMcPrN8Q#N=Wmh*hMjPn*F4LH}-N6#VIAFRp?9IKfn?
z(gm($-k0$-aSW=&r8_$(759F)IEpD#E+evx8o$N0@YrdQO!`0s=xy6nBc%pKp8+|XFPq*nG|KtD
z5S=;tSUg)F#AHdSQ=Y@}u>~oJ{EA7UDP0`JW!RE{M{Ow>=7HoqJu{So4D7}kDKc1+
zpFtR=sA&t+BZ0$<7DjpbTM1KK?S+xJ`&03RuUL{?4ioCLw_0|dsn_EPXJU<_9k8p^
zajsrVC~!qj!1ZPTU(VH+(u!cKJB41PRcL$qGqu$Z5NLf)oAZA38L!c^yDSu$e4{jj
z^?=@XgI#Ckf*DB?`upf-P>$bOly6dg#^`lV`Ycg1ck{iLQHd^@%>88Nf}^f>x%=Em
zHS0hgO-+8VtHI4^CQT>{OwBJtgkh1xRJIG6>|D^!iWp-J9q;agRDw$oapCkqopa*!fH*
zgWptE{jzRy8+Dw?Vi`@B{c1eua(_lpon`%pkl@FfRi}%dKA}*x%rAjkGsU#}hr<
z`C~Yxp~KG=>nXRwNq(n#U(U|6adbI8`1FL!$8p_GiUWJ^w}F$g0mFNvE(eERIUZ>-
z{#?AtaNSQ7m?*BvM5pHdDk)aV(w|aHh|DVAQd<@Qu23l&0MfE5qQ>fVoC%fvygKGn
zT~h93w`?38jT(gtS0b2?@tuvC_~DpMm7_-Jj&0qzr|x<8
z7Z3w;>ejDW;RC+K6(@mHtpw<<_BIjwmGs?LRa5+-b3ZgICVoMc`u>`w&}gn}DxYtx
z`2slcLj(gDRUF3+?BAvooG|LHZusm0R?%q?C~lw1AOEI^I_>fN)PdYuoerj-6)qvH
zWxuW}K6@!NgBQ|yUn01wZYV~fckRG(mrUuuPCupM&<${#1L4f%go@@2CIq|u;yG4g
zf1_bV(JRT}>D1<(U0;js^gVAw#}BJ{e^;@>32(8%*=@Xa;~{t@WKrKecdx>os$(Q6
zEQ+BD|OMA!h`^z3>La_^5A~AyU-hJ5Qxw20E{)C^)i{SmP
zxL5j)hk1e`W%4!wLmxlZJ9Gxp}Qbq-etl@ReK!vT8;iO#c
zPD%b8CCbhy8T98(YrLxR_QGsp@>=!~@K1g*=m33_CHX-Zu83r~fIQW_KuqGsp-DDJ
zuhRTiC51PfWYCeQClVrc5ht#%-!K^Y*S5V9n7M7o>@ZF-``|*ZxUix~f!U9Rj$#ns0saQNb12
zA~m?b=v8HJq=zkUEj5(YGSG*#o8Om^ieM+HR1xW~suW)(-$mW1QOiOGO->fikI8mk
z7A~fm)D!vko!nDx(;=?G_b*KKMw;loybhPY!px@LD59*I+`KW8T{Vq7nuk&z+KF=q
z>xfciClU$FDv+)uv_2Y?GBM+pUz$*}s
z_jgC!Y8M^!62;6qCNa(u(K@gDkUmGk@owa?YZVm3PTnggQUv^Q@Qc#*gJi2l2**l+
zW@EiAeF$qKI(yTatOpJzv5LO7BahuI1P5rw#X&J(5ypb7RHl>ekz*yLYHWHHz)h*~
zG3MAKD6cf@HR2T!F{XA+?8Rz)psYJmP*g}H%UJc#*jJ)pTqbeLT!|EDk}dVDZ227W
zFgYP%l&@rbmem}LV+A58jHbG@M_r*BmIz(Eyq(Xv#k{KWaqi{PPb+99Rx6?#n&OTf2v00u8^r_>RAUsgo6Q((SeZ9D(yE^qT0Frr%X-(4oQpDoQ?awwOxmTFB=DuWh>Ae_klv-8
z!EZf?8NXI7J14S(@~Y0eu7CKu(q|@9zVWKg9dM8NvlRsD9{#deJ^y+k9|7JOWBONB
z1^Z*afi<^;HYKA>O{Nlb)8bkLTdOE1&yq(X-kTIzAg9;b>Z`na+tL1bg_oNC{>Jp|
zhDk`K>C_^Bn%iv6l0Zd{^$7C9P!8v!c!W|h
z7ywwLD}iT`TE%1IY?uh=^}+3aZ!X_bSW*rkO}rVD^?t}0yY~tU@jjF(EMQLzxRAq%
zjgmi~Sy^__C5We&f$AEcGw~emh~c*w`X$l%>iXt4Swt`UyEhX7uF4qehoyf4=6!Kc
z*8-()V=SFp;^R`_YoGl6-alh*hpJx`C&naUFU%=MF#Yg@7XVo@d?J(v3E
z@hO?#YWwZ3TJIKKNcQ@dJCx$`elr+kDU)HJioOx-!9V}y!MWhczI-YtCFnMZ=C`aW
zO@HjRr`1DyV2_K*!t;hDl%@C#qP|F8wo=Wp6*&F+S{#c}__;lf%t+Xw>F-q3YuOIn
zNBKNdAvpD*=%Iinn)~<;PBLmdPn07DR&kq6ax56!`MtC!vMdRog&@H`T5TCkbXl;O
zS!%tW`sOFSuwU&S<|##G>lXI)CS2{E9c#X^cpOa`0>M_Q*LTp3Q$?7Je19y5f~kR0YMINX
z_H@c&azJ(Tm*X99Zf$azwgJyJ8r&VFm-RK=R|KO8YCmhz-}EMU6qDy}l&&%?Tzpdg
zZiltqiXJBkg~~VmjPEABZ>&|mD&Z|_q~yLSbeUm#iYGN-ra;pJlLfr(Dm^?jrEgcx
z2;hHvu~kzXrScx5PiePDWOOnr;(0oIuPmR0tGO{1*YQu6iL-awW3AZ@=@Y?_ec86p
zTLkh$*^X4&DI5rQAtaVo#z&|o(FUeZiJn!5YcooVc-%6qL6%6dz1A!
zr9jVPR*;eT7ix4&%Mg?4-$Uft?iXfYSIvxp+Js0g9!aWAFR>89)}H3D=uA1`byO2gNFjtnE=V*X#9NC}u}@?jh>2`Zb{V6PnD(F;mr-*w@KM=5
ztxju8a^LZvoM6#mn6c*Fc7v>^XC;A%yK43o@>12_2V$uV4g;meAUH*^pL5Jy8as@0
zluVe7BJ`)qB4^|I)#RH`2N=ateh_*1`%eM5ySbk{orp0xbbQ@=bZx=QxY#VtbK88x
z7Qv)oq{v5^0r0=m%Ss6oAgb%t;{)uEnE11CRetk5t4Q6L)um=COfH)HVeq+RFxG39
zp=O-c;9^AIzxw6TyTDx+7nM;d6Cy-=xudD1BTln(;TamG$eq4u@wS+BR+C1|mJmf1
zx1m8|^B>S}j`iMD1gQcUZBe8{{34SfX=?w9`((viWd<8EF)!9!U}0ix!u01Bh*&!*
znB+@cBnU(aO1;CcrjAxLSQ8O%OK6MRRn2x4S$FT)&33TkHUiYV=7Xnzs#gvD6`lR#g<5J@0(P8;zmE8X|bX*#b1SevaVVleu8NMOWNNQr)vRw}NO%jd?iGtos2@(|an?nUPU=qcF{;
zSp>xt9;U_n7&4N~QyG@6j$G2D5mj7F-s8B@hG^H^#mWdjdhVm`5Vf;2B0t6=9Weyk
zsH9PWG@-Lt-@39xAmH&8(VVCqB{Xj$vPvxuJ2o_
z@%CcG80Gvm^_+2wolm~zq8xgz%_YD>s0w5JA>_f|DR2D)FO4aC-p6&K@%KSF
z4&DZ4M#h)X;6Z+~8v;Rk=*&z(J~`XEz+Yo@JoK>swXadEs!Nac(09?PJdPuuer%N>
z(zVK=_5$trlHzfgrpa&>rn$m)=F_knEqOeEl~tTll-<11;-~Vq@hr**WJtViHKe2m
z(3}N|wO%BYNf0>dBp35>`4R4J%flORc0rp~8ck+DVE1aTpk-1eNx0yZ5WQbg
zem&Nq)~SBtoIMee~(NyoC;#elgc+QPs?-O`rBE
zxC?s)W^A#XJ)hrp_N9QuQXD%2PSruk9ZHo%@s(^$S5ER{6^z3i7Ri)duw1jHybO=2
zs9+&V=!1|(=Ny%d?W>=gcB*rcJpMYb9_&a3JPz$Tova>~uw;y0d*p@Ch+63g51eBi
z+c8*t5&F?hhV9;2mAW)!f7<4467QJyUJN3&__V(&-Ff2Y%8ASxLXeA6aBjN?Y58;{
zz!x+1`MWTRhaPvhEiSnJG~t}nWvrBLwD~twK}u}a8}HF7Xgqw!NmlCce4JgsxGg!F$BDlY>Y#Fmzg5#WWX?yip_%EKYqgCbQk<>I
z7r%y@^ef1mq#~n?g&b@Y_Ccv_%s2q*apgWtDwfO&)TxRzUr=3?74B(Ny&%m=<5s`4Xn=uSpkWoJ&|8JtZQ_O%@dG
z-8WnMp~R(?J4KXT7_kwpVEbGY{h4*|3QsgVOq0eL+igTtYs(lqTyPeOHYPCH=Ssf2
z=I@s-yvJTp%wc4o0T%RxzJWsWLPI)1^Lb_wg@i4*z3L8=M0cdj7XH`^o^rk%vT&j(
z$(*8Bdtv4e;8CXm;ZlCn?TEB*LwqD6NuV>}u~nUW#n42ykSz_j%j19h5(n{5&x(@k
zlhNWT$hbk*THsILqk7ishDk-B;4i54L8i=rl1ITuwdhh>n@2A^*x>^_ql~6@f9i_N
zS%Kf+9YiDd#c)?Ki4x2V3edpDT${Dcf
z_C_X|FY()3uqo(w{DkBo7W8Kxei-?P5HuU2Q9d)%^
zimjZ@GtJQ4`);3nihhPzzU?Yee2e^!o-8TwggR2Nic&j>`NN98=FAz(5~I)+j9ZC-
zUQCWHmRG>7E$i!Hp|x8L0GoW}x5H2l_*&MFRh+gr{1l>4d&7L|)tWUU3k21>Zp6|_0)8ok=XN993JrGEd!
z^uoz0!b}U+m;+o?T7zpRYhY?k{Cm8q)Lx)Dy>DegC>LM!ik;M3vPJZFZ&DnxYuu#R
z+md#TP+!^DE|Wy&ubMx4LukC&xhuEl!h>Jr%-JG6W=_dHcsr_%PkJ+em+jZt83hRe
z)g71B(3$!)Pg5gfML5Qp@b#yfYKv4VofG%6iR^DrpFcO#f#=t55Fpy{`pZ8^SCGa-
zs@SvZmqy54*zcRmCmNIpJ?cFMo)Y{85Wx_x4!T%%VG5#msJW0AB5ToF>1G!My42dS
z9ylr*$s8LSS9z2*52@P?3J`H^95rn9BB&?^qRN8eJCXrX2n{TyaTH>xr6!mSTK$OT
zn#b5*z;8WAy8jn2Q^l`R<1DX*Sj4D!jz>$?CO<>yYVXv1%QJ8W4d1^DfOcb-RC$;oRBc45+9ZcBhpFn%2R6maWg
zwl~6q+Wr7%O5SF76`HVuCjNZ3OY`a?2(;(eUo{I%*xio3kJ|
zsJC>;SwKs`Dbj8Gq`Wcd);27C0kH=TeZpv0VrBVUEFzVLBK1{vS;$z>o#QjdBCqvB#Ri4`~10&wws776+sR_T%
z@;cgZJ%KnSnFd9!@EWA41;H00C)>Xk6ED034Gyzp8rH~?>rZ9#{0pW7G(r@kqiysx
zb)aK$e(NVysFZRN~j!N-4b5M?VIYFY7DVll&4FLr)^Kgj4ne^_T!16zZJ%AKON?1&XXJvb$N#i*S`rQR>PE5d7)BLd_nxmB!t14A)S^Bf{D?|N!)sM
zuRF&X5_OkxMR1xgA9gX0By4dux1nf~+ZTmS$|SPXZ7z}rrNu*xjor}zoMC0pF^48k
z&7sj6;>dA*Q4DiXI|3xv^{DDF?Z>W?F)cw_gUFI=USjSZn>$CR0
zaWY3a@Nloky%fQ#cOu1$Fvi-a5tN|uDML4MMl0ZA5Wd`tC|tL$%plQ0SdywlQ4iBm
z_@a1ib5~Nj`@A>dXA!8_q!^Y)SK^=~e(DTKAB@b<4>VajbBCF(v>}UMwzTBn=xE!T
z#Sm>S&y+A(udU!;(;ho_k2X`y8}Vb211({H_O$B5>b%)xal*r>;hHXz(7;3~^;xI@
z;H@XHZ+UofP+^-jME??eE)Xugmb2O}utyb~E&Z7uB5^pUU4*ypj!$Cbc_CN;j40e2
zgCQq4zjYS9BBg`8$k=my*|SV#>hq`|(2qz|Z10z+rvQLmY4mS@0edG`W&=nr%Z?bo
z-s%Q*kTh79k=#?n8Y*4ZxenYh<3EX82y-xk2NkgmC&b;_J=(}erq3^dXTFO}
zrD|iAhdjPJ7WU^{cljI6dYZKy!2tx*AC|xVe7)=ZTt5NffnvK9jh6?07f{?`O@P;E3zWQe@6$zUDdEN~l;xf)1WV*y~@Podre~xe_G<07cd9d2#~wh*eUyz}zy=kuN08Wf3bK$wAq9#o&YX0_g^wvPSg%eW&o3y}k-
zHKeVljHA!_G2fGWdtln}hppdShxU1R<6z7SqTxpmSjR>2SKfY}{z8Am
zxx+?s(McQ4$;jTzD3epK!!T{8A~|8|yV=TbDdw!d>cYQ0PDjT*%P9B_q!f0~W;tuI
zuM%oU8Ly+Z#+L@sIxNUx#(H{24WsxAwRt-xEBdakCG$pk3S8?k>Ka%E_&Cx=n*HoO
z%O3ajki9LJH<(T^y=6*^&Z_OPa#r=xRy9L5%=fzv5vBcgure~eC{W%-rulKau_}<9ONiK
zgtllwLkK54Oka|d^X?brsd}g3oHNj@!V6V@^@c8PD4S;C;3B918o&ZRK7aulQ5tUV
z*Q-S;oEzCPIB5k(c|>#0dz=)D=SR_Wbln&AtVh$ltw{SQc-e2=e1Y4oS`mZW@M^sJ
z>@Y@)t0mx*OUrStSNyqg8}}u}{)qS=lzMbLvHa}N$RfQ|S!)K8hmlTb`0M)E;&^>H
zZsKt~yUEczRi!=gK75bzxe0x+C6UkMFs-w$rODfX@fa-iUW8;PQoY`Jk?)s=L1mGqim5Z&k(DivguHk|lX
zFBk%UgVn~=d;*V}W#Dks)x2|i86p2|l4a6-hEKp39)?~Vb0eip`+ePqSjA~CIxc=0
z$HJya7kP}_sz>*sraeWt_`3$PquXMauiBo6Lfg8{KXHE$f8EY4Vl{ptNKyUTQ?pCv
zePEFs-{@$d+UeW(UYi-zY}K+~YCfvhD=?T~QRisyt4w(|3oN*kE03K@dJFpE-*eV+
z$C5q&)IA1z5$zjgB#HklOcuCLjiE5+u<=!T#h6RcY^|TGVU{a}4xHou+p)S(FvWqX}tGF#4+Xz}Z-G*T5}msjSZ@}&{m?lv(`kJjQFWZo<%
z({$0hD<_*2Hg{6)D-o#ySmz6;kSwU9ndL?6F{bQb_^f}yjm50m6Q=Lqa!|3)cfjMF
zn(x`wG`0yuS0k&a|}$);B?2oCi%lW#M}X*^h&&gV1#V0h$sv7FS^Eb3AoIA_dT9
z4Mo}->j=+dQ>?J#U+t9tui|+%#+-paoKrA}-%Sew`QBT#SXD)2sO@xS$fr_g*gs+4
zcBFNPN;NQcYKz})_wwB;NTk@rR6uks>VNz&U_WrK8BpEys+gk8SrC@oRvUV&sK>Tl
zrail_^GmKdVLD*$2U`cdC3>q^456B8-L38T8JNSLM(GzMy1yMkb?Q#}jxpo9Y{`%2
z!d+M|`rBEh5k^Jz@p$PacCj-N*-F~I8=#a|Df1P8S^7!KjSuck~?R0%^p-toHOKWiWb^IDBq%`-C=*m5udr4_XcD&9wH(pMK%z
zKJ@+xe}F%=sJ2sah`Cl`Kdifx>S^0%I=sXFjtJO2sCx~^apFNbKkZEDd9?IDRbN)>
z6Vv^G4+Ym00Fyn21#HI#9mR*9ig-YR(q5@eRC<2-WgThmQmLl+;P8jtu4+eyM-Nde
zQpC#YC-#`Sb^cRbr2nHhoRKx}$Jy5mOkB+T3>vGN(4Np*%ighXs3Gg3$|jW`*U8#-
fmla5y(|?>t|Jxg1{#jr8|Bd_qZ!n_!`}4m5(^FXt
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable/button_login.xml b/app/src/main/res/drawable/button_login.xml
new file mode 100644
index 0000000..a13b012
--- /dev/null
+++ b/app/src/main/res/drawable/button_login.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_register.xml b/app/src/main/res/drawable/button_register.xml
new file mode 100644
index 0000000..3eb0673
--- /dev/null
+++ b/app/src/main/res/drawable/button_register.xml
@@ -0,0 +1,14 @@
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/chucheng.jpeg b/app/src/main/res/drawable/chucheng.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..ddafbb25d30dd9e23e09c08ac09abf66c7ecc1d1
GIT binary patch
literal 11438
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
UKv_NFAFO`p?f->^?tbb&0D2K+Hvj+t
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable/city.png b/app/src/main/res/drawable/city.png
new file mode 100644
index 0000000000000000000000000000000000000000..790fb2bf39c33588894e33135a78fc1c05ed6caf
GIT binary patch
literal 790
zcmV+x1L^#UP)&Rd)Azkx1s<6Vd&j0As9)Z*~+qJ9V@fa4!+P{tX}Cn;o^A
z0#97z2mE6~ArY9|$W0q=J1aL74vbT;Z%FVmj;V60)XN)l{^KlBNLW;uIF({2YuBE2
zcC5=9TWbna9I^Z8o0G7cl2!yYdy`1SwG$;-psw+IfN$Dm9
zVUm|{P*tj+F;%2fy_G)hks&M$df^`vz-0I;1liSc%k
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/juzi.png b/app/src/main/res/drawable/juzi.png
new file mode 100644
index 0000000000000000000000000000000000000000..106df92a6a38fdf5074c2969a512e2e19dde5f7d
GIT binary patch
literal 1898
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
($zq9(`}JMHAEUC?Ys6gP-W=AflrvxD5k-<1)&)
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