first commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.abbidot.tracker
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ExampleInstrumentedTest {
|
||||
@Test
|
||||
fun useAppContext() { // Context of the app under test.
|
||||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
assertEquals("com.abbidot.tracker", appContext.packageName)
|
||||
}
|
||||
}
|
||||
610
app/src/main/AndroidManifest.xml
Normal file
610
app/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,610 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> -->
|
||||
<!-- <uses-permission android:name="android.permission.READ_CALL_LOG" /> -->
|
||||
<!-- 联网权限 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 访问网络状态 -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" /> <!-- 拍照权限 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.CAMERA" /> <!-- 百度地图 start -->
|
||||
<!-- 这个权限用于进行网络定位 -->
|
||||
<!--
|
||||
// 清单文件中所注册的权限 maxSdkVersion 大小不符合最低要求,分为以下两种情况:
|
||||
// 1. 如果你的项目中注册了该属性,请根据报错提示修改 maxSdkVersion 属性值或者删除 maxSdkVersion 属性
|
||||
// 2. 如果你明明没有注册过 maxSdkVersion 属性,可以检查一下编译完成的 apk 包中是否有该属性,如果里面存在,证明框架的判断是没有问题的
|
||||
// 一般是第三方 sdk 或者框架在清单文件中注册了 <uses-permission android:name="xxx" android:maxSdkVersion="xx"/> 导致的
|
||||
// 解决方式也很简单,通过在项目中注册 <uses-permission android:name="xxx" tools:node="replace"/> 即可替换掉原先的配置
|
||||
-->
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_COARSE_LOCATION"
|
||||
tools:node="replace" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
|
||||
tools:ignore="ProtectedPermissions" /> <!-- 允许程序读取底层系统日志文件 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_LOGS"
|
||||
tools:ignore="ProtectedPermissions" /> <!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 允许程序读取或写入系统设置 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_SETTINGS"
|
||||
tools:ignore="ProtectedPermissions" /> <!-- android 9.0上使用前台服务,需要添加权限 -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 用于读取手机当前的状态 -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 读取缓存数据 -->
|
||||
<!-- 蓝牙扫描权限 -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 获取模拟定位信息 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_MOCK_LOCATION"
|
||||
tools:ignore="MockLocation,ProtectedPermissions" />
|
||||
|
||||
<permission
|
||||
android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
|
||||
android:protectionLevel="signature" /> <!-- *******************************************************极光推送start************************************************************************* -->
|
||||
<!-- Required -->
|
||||
<permission
|
||||
android:name="${applicationId}.permission.JPUSH_MESSAGE"
|
||||
android:protectionLevel="signature" /> <!-- Optional. Required for location feature -->
|
||||
<uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" /> <!-- 为了提高sdk识别唯一用户的能力,保证消息推送的精准送达,建议集成以下权限(可选) -->
|
||||
<!-- <uses-permission -->
|
||||
<!-- android:name="android.permission.QUERY_ALL_PACKAGES" -->
|
||||
<!-- tools:ignore="QueryAllPackagesPermission" /> -->
|
||||
<!-- 如您需要接入地理围栏业务,建议集成以下权限(可选) -->
|
||||
<uses-permission android:name="android.permission.GET_TASKS" /> <!-- 如您需要对应设备通知相关的能力,建议集成以下权限(可选) -->
|
||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 华为角标 -->
|
||||
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" /> <!-- VIVO角标权限 -->
|
||||
<uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" /> <!-- 允许访问振动设备 -->
|
||||
<uses-permission android:name="android.permission.VIBRATE" /> <!-- **************************************极光推送end********************************************* -->
|
||||
<!-- 权限是第三方应用使用的,可以用tools:node="remove"进行删除权限。隐私权限,方便上架谷歌市场 -->
|
||||
<!-- 没有使用后台获取位置(Android 10.0 新增的权限),只选择《仅在使用中允许》 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
|
||||
tools:node="remove" />
|
||||
<uses-permission
|
||||
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||
tools:node="remove" />
|
||||
<uses-permission
|
||||
android:name="com.android.permission.GET_INSTALLED_APPS"
|
||||
tools:node="remove" />
|
||||
<uses-permission
|
||||
android:name="android.permission.REQUEST_INSTALL_PACKAGES"
|
||||
tools:node="remove" /> <!-- Android 13上一新增运行时权限 -->
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <!-- 通知权限 -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <!-- Android 12新增权限适配 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.BLUETOOTH_SCAN"
|
||||
android:usesPermissionFlags="neverForLocation"
|
||||
tools:targetApi="s" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <!-- BLUETOOTH permissions are added by lib_dfu module. -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> <!-- 指定微信包名 -->
|
||||
<queries>
|
||||
<package android:name="com.tencent.mm" />
|
||||
</queries>
|
||||
|
||||
<application
|
||||
android:name=".MyApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/logo_abbidot"
|
||||
android:label="@string/app_name"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:roundIcon="@mipmap/logo_abbidot"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.Tracker"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:supportsRtl"
|
||||
tools:targetApi="n">
|
||||
<activity
|
||||
android:name=".ui.activity.device.set.PowerOffActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.DeleteTracker2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.DeleteTracker1Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.AddWifiPasswordActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.data.SharePetActivityActivity"
|
||||
android:exported="false"
|
||||
android:hardwareAccelerated="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.EmailAddressActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.ChangeNameActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.set.AdvancedSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.PetWeightActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.RequestRefundActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.SubscriptionHistoryActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.ShowInviteDeviceActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HelpCreatePetFenceActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HelpTrackerBatteryActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HelpTrackerStatusActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HelpActiveTrackerActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HelpPowerOnOffActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.help.HowWorkActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.ChoosePlanActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.ChangeEmailSuccessActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.ChangeEmailActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.UserProfileActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.AddPairedSuccessActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.SignupSuccessActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.set.PermissionsSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.set.LiveDurationSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.set.TrackingDurationSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.first.FirstSetPetTypeActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.PowerSavingSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.set.NotificationsSetActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.MySubscriptionActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.first.FirstPetProfileActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.first.FirstSetPetWeightActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.first.FirstSetPetHeightActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.first.FirstMeasurementUnitsActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.AddWifiPowerZone3Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.AddWifiPowerZone2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.AddWifiPowerZone1Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.SubscriptionDetailActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.set.FirstPermissionsActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.PaymentSuccessActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.AddCreditCardPaymentActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.PaymentMethodActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.SureSubscriptionPlanActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.subscribe.SubscriptionPlanActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.AddNewTracker4Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.AddNewTracker3Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.AddNewTracker2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.AddNewTracker1Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.MyTrackerV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.EditSafeZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.EditNoGoZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.PreviewFencesZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.ResetPasswordSuccessActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.ForgotPasswordV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.LoginV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.CreateAccountV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.SayHelloActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.BadgeDetailActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.BadgesListActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.FamilyMembersActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.PetHeightActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.PetProfileActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.pet.InviteFamilyActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.data.DataBoardActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.AddAndEditFencesZoneBaseActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.AddSafeZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.AddNoGoZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.fences.VirtualFencesActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.wifi.EditWifiPowerZoneActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.map.LiveActivityV2"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.data.MoreSleepActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.data.MoreActivityActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.NotificationV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.HomeV2Activity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.set.AboutActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.cn.RechargeHistoryCNActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.cn.RechargeDeviceDetailCNActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.cn.RechargeOrderDetailCNActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.cn.RechargeAmountCNActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".deprecated.ui.activity.LoginRegisterCNActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.DebugActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.MyCropImageActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.WebViewActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.AddCreditCardActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".deprecated.ui.activity.profile.recharge.PaymentResultActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.PaymentMethodPayPalActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<data android:scheme="${applicationId}.braintree" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.activity.help.FeedbackActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.recharge.PaymentMethodStripeActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.map.MapLiveActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.map.HomeMapNavigationActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.data.HistoryDataActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.device.set.LedLightActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.account.FencesAddActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.SwipeActionActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.DetailActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.activity.SplashActivity"
|
||||
android:exported="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/my_splash_theme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<service
|
||||
android:name=".service.DfuService"
|
||||
android:exported="false"
|
||||
android:foregroundServiceType="connectedDevice">
|
||||
<intent-filter>
|
||||
<action android:name="no.nordicsemi.android.action.DFU_UPLOAD" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</service> <!-- 微信登录 -->
|
||||
<activity
|
||||
android:name=".wxapi.WXEntryActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:taskAffinity="${applicationId}"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 微信支付 -->
|
||||
<activity
|
||||
android:name=".wxapi.WXPayEntryActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:taskAffinity="${applicationId}"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 支付宝客户端调用和H5页面调用 -->
|
||||
<activity
|
||||
android:name="com.alipay.sdk.app.H5PayActivity"
|
||||
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
|
||||
android:exported="false"
|
||||
android:screenOrientation="behind"
|
||||
android:windowSoftInputMode="adjustResize|stateHidden"
|
||||
tools:replace="android:configChanges" /> <!-- 支付宝客户端调用和H5页面调用 -->
|
||||
<activity
|
||||
android:name="com.alipay.sdk.app.H5AuthActivity"
|
||||
android:configChanges="orientation|keyboardHidden|navigation"
|
||||
android:exported="false"
|
||||
android:screenOrientation="behind"
|
||||
android:windowSoftInputMode="adjustResize|stateHidden"
|
||||
tools:replace="android:configChanges" /> <!-- 百度地图 -->
|
||||
<meta-data
|
||||
android:name="com.baidu.lbsapi.API_KEY"
|
||||
android:value="${BAIDU_MAP_KEY}" />
|
||||
|
||||
<service
|
||||
android:name="com.baidu.location.f"
|
||||
android:enabled="true"
|
||||
android:process=":remote" /> <!-- 谷歌地图 -->
|
||||
<meta-data
|
||||
android:name="com.google.android.geo.API_KEY"
|
||||
android:value="${GOOGLE_MAP_KEY}" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.fileprovider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider> <!-- LogcatActivity 默认是跟随手机屏幕方向的,如果你需要固定竖屏方向 -->
|
||||
<activity
|
||||
android:name="com.hjq.logcat.LogcatActivity"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||
android:launchMode="singleInstance"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
|
||||
android:windowSoftInputMode="stateHidden"
|
||||
tools:ignore="LockedOrientationActivity"
|
||||
tools:node="replace" /> <!-- **************************************极光推送start********************************************* -->
|
||||
<service
|
||||
android:name=".service.MyJPushService"
|
||||
android:enabled="true"
|
||||
android:exported="false"
|
||||
android:process=":pushcore">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jiguang.user.service.action" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:name=".receiver.MyJPushMessageReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
|
||||
<category android:name="${applicationId}" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- **************************************极光推送end********************************************* -->
|
||||
<meta-data
|
||||
android:name="com.abbidot.metadata.bugly.key"
|
||||
android:value="${BUGLY_KEY}" />
|
||||
<meta-data
|
||||
android:name="com.abbidot.metadata.mapbox.access.token"
|
||||
android:value="${MAPBOX_ACCESS_TOKEN}" />
|
||||
<meta-data
|
||||
android:name="com.abbidot.metadata.http.request.key"
|
||||
android:value="${HTTP_REQUEST_KEY}" /> <!-- **************************************Stripe支付start********************************************* -->
|
||||
<!-- <meta-data -->
|
||||
<!-- android:name="com.stripe.example.metadata.backend_url" -->
|
||||
<!-- android:value="${BACKEND_URL}" /> -->
|
||||
<!-- <meta-data -->
|
||||
<!-- android:name="com.stripe.example.metadata.publishable_key" -->
|
||||
<!-- android:value="${PUBLISHABLE_KEY}" /> -->
|
||||
<meta-data
|
||||
android:name="com.abbidot.metadata.stripe.release.key"
|
||||
android:value="${STRIPE_RELEASE_KEY}" />
|
||||
<meta-data
|
||||
android:name="com.abbidot.metadata.stripe.test.key"
|
||||
android:value="${STRIPE_TEST_KEY}" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
42
app/src/main/assets/annual_protection_plan_en.html
Normal file
42
app/src/main/assets/annual_protection_plan_en.html
Normal file
@@ -0,0 +1,42 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
|
||||
<body>
|
||||
<div>
|
||||
|
||||
<h3>Annual Replacement Protection Plan - Terms & Conditions</h3>
|
||||
<h4>1. Plan Coverage & Pricing</h4>
|
||||
<p>Annual Fee: $12.90 per year</p>
|
||||
<p>Coverage: Provides one free replacement per year for a damaged ABBIDOT Tracker</p>
|
||||
<p>Multi-Year Coverage:</p>
|
||||
<p>Purchasing 1 year entitles you to 1 replacement claim.</p>
|
||||
<p>Purchasing 2 years entitles you to 2 replacement claims (one per year).</p>
|
||||
<p>This pattern continues for longer plans (e.g., 3 years = 3 claims, one per year).</p>
|
||||
|
||||
<h4>2. Claim Process</h4>
|
||||
<p>To file a claim, submit the following via the ABBIDOT Support Portal:</p>
|
||||
<p>Proof of damage/loss (e.g., photos, police report for lost devices).</p>
|
||||
<p>Original purchase receipt and protection plan confirmation.</p>
|
||||
<p>All claims are subject to verification. Fraudulent claims will result in plan termination without refund.</p>
|
||||
|
||||
<h4>3.Cases Not Covered:</h4>
|
||||
<p>Intentional Damage - Verified cases of deliberate destruction</p>
|
||||
<p>Unauthorized Modifications - Damage caused by self-disassembly or non-official alterations</p>
|
||||
|
||||
<h4>4. Replacement Terms</h4>
|
||||
<p>Replacements may include refurbished or new devices (same or equivalent model).</p>
|
||||
<p>Customer covers any applicable shipping fees unless otherwise stated.</p>
|
||||
<p>Manual Refund (After 48 Hours): For subscriptions older than 48 hours but within 1 month, refunds require manual approval. Eligibility: Only applicable to annual (1-year) subscriptions.</p>
|
||||
|
||||
<h4>5. Cancellation & Refunds</h4>
|
||||
<p>Full refunds available within 48 hours of purchase.</p>
|
||||
<p>By purchasing this plan, you agree to these terms. </p>
|
||||
|
||||
<p>For claims, contact: support@abbidot.com.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
||||
BIN
app/src/main/assets/find_device.mp3
Normal file
BIN
app/src/main/assets/find_device.mp3
Normal file
Binary file not shown.
BIN
app/src/main/assets/fonts/Credit.ttf
Normal file
BIN
app/src/main/assets/fonts/Credit.ttf
Normal file
Binary file not shown.
BIN
app/src/main/assets/fonts/DinCond_Bold.otf
Normal file
BIN
app/src/main/assets/fonts/DinCond_Bold.otf
Normal file
Binary file not shown.
BIN
app/src/main/assets/fonts/Roboto_Bold.ttf
Normal file
BIN
app/src/main/assets/fonts/Roboto_Bold.ttf
Normal file
Binary file not shown.
BIN
app/src/main/assets/fonts/Roboto_Regular.ttf
Normal file
BIN
app/src/main/assets/fonts/Roboto_Regular.ttf
Normal file
Binary file not shown.
1
app/src/main/assets/lottie/active_dog.json
Normal file
1
app/src/main/assets/lottie/active_dog.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/cat_and_ball.json
Normal file
1
app/src/main/assets/lottie/cat_and_ball.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/dfu_loading.json
Normal file
1
app/src/main/assets/lottie/dfu_loading.json
Normal file
@@ -0,0 +1 @@
|
||||
{"nm":"Main Scene","ddd":0,"h":200,"w":380,"meta":{"g":"@lottiefiles/creator 1.31.1"},"layers":[{"ty":4,"nm":"Shape Layer 3","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":31},{"s":[50,50],"t":47}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[312,100],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[312,60],"t":31},{"s":[312,100],"t":47}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":31},{"s":[25],"t":47}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":23},{"s":[50,50],"t":39}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[192,100],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[192,60],"t":23},{"s":[192,100],"t":39}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":23},{"s":[25],"t":39}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":14},{"s":[50,50],"t":30}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[72,100],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[72,60],"t":14},{"s":[72,100],"t":30}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":14},{"s":[25],"t":30}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3}],"v":"5.7.0","fr":60,"op":81,"ip":0,"assets":[]}
|
||||
1
app/src/main/assets/lottie/fail_anim.json
Normal file
1
app/src/main/assets/lottie/fail_anim.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/loading_dog.json
Normal file
1
app/src/main/assets/lottie/loading_dog.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/logo_loader.json
Normal file
1
app/src/main/assets/lottie/logo_loader.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/map_lowpower.json
Normal file
1
app/src/main/assets/lottie/map_lowpower.json
Normal file
@@ -0,0 +1 @@
|
||||
{"v":"5.5.9","fr":60,"ip":0,"op":60,"w":20,"h":35,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":42,"s":[100]},{"t":56,"s":[4]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10,28.636363636363626,0],"ix":2},"a":{"a":0,"k":[6.75,2.25,0],"ix":1},"s":{"a":0,"k":[90.9090909090909,92.10526315789475,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.552,0],[0,0],[0,-0.553],[0,0],[0.553,0],[0,0],[0,0.553],[0,0]],"o":[[0,0],[0.553,0],[0,0],[0,0.553],[0,0],[-0.552,0],[0,0],[0,-0.553]],"v":[[-5.5,-2],[5.5,-2],[6.5,-1],[6.5,1],[5.5,2],[-5.5,2],[-6.5,1],[-6.5,-1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.75,2.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10,17.72727272727273,0],"ix":2},"a":{"a":0,"k":[12,19.5,0],"ix":1},"s":{"a":0,"k":[90.9090909090909,92.10526315789475,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.104,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[1.104,0],[0,0],[0,1.104],[0,0],[-1.104,0],[0,0],[0,-1.104]],"v":[[-8,-15.5],[8,-15.5],[10,-13.5],[10,13.5],[8,15.5],[-8,15.5],[-10,13.5],[-10,-13.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[12,21.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14,1.5],[10,1.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
|
||||
1
app/src/main/assets/lottie/pic_map_lost.json
Normal file
1
app/src/main/assets/lottie/pic_map_lost.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/pic_map_nosignal.json
Normal file
1
app/src/main/assets/lottie/pic_map_nosignal.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/searching_tracker.json
Normal file
1
app/src/main/assets/lottie/searching_tracker.json
Normal file
File diff suppressed because one or more lines are too long
1
app/src/main/assets/lottie/success_anim.json
Normal file
1
app/src/main/assets/lottie/success_anim.json
Normal file
File diff suppressed because one or more lines are too long
469
app/src/main/assets/privacy_cn.html
Normal file
469
app/src/main/assets/privacy_cn.html
Normal file
@@ -0,0 +1,469 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Administrator</o:Author><o:LastAuthor>Administrator</o:LastAuthor><o:Revision>1</o:Revision><o:Pages>3</o:Pages><o:Characters>3201</o:Characters></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string" >2052-11.1.0.11875</o:KSOProductBuildVer><o:ICV dt:dt="string" >C04E27608BE34562B8408B8D5F23791D</o:ICV></o:CustomDocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><o:OfficeDocumentSettings></o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8 <20><></w:DrawingGridVerticalSpacing><w:View>Web</w:View><w:Compatibility><w:AdjustLineHeightInTable/><w:DontGrowAutofit/><w:BalanceSingleByteDoubleByteWidth/><w:DoNotExpandShiftReturn/><w:UseFELayout/></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml><w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="260" >
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="header" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footer" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="caption" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of figures" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope address" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope return" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="line number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="page number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of authorities" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="macro" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toa heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Closing" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Signature" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Default Paragraph Font" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Message Header" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Salutation" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Date" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Note Heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Block Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Hyperlink" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="FollowedHyperlink" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Document Map" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Plain Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="E-mail Signature" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal (Web)" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Acronym" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Address" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Cite" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Code" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Definition" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Keyboard" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Preformatted" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Sample" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Typewriter" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Variable" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Normal Table" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation subject" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / a / i" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / 1.1 / 1.1.1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Article / Section" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Contemporary" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Elegant" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Professional" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Balloon Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Theme" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Placeholder Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No Spacing" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="List Paragraph" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Quote" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Intense Quote" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6" ></w:LsdException>
|
||||
</w:LatentStyles></xml><![endif]--><style>
|
||||
@font-face{
|
||||
font-family:"Times New Roman";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"<22><><EFBFBD><EFBFBD>";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"Wingdings";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"Calibri";
|
||||
}
|
||||
|
||||
p.MsoNormal{
|
||||
mso-style-name:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-style-parent:"";
|
||||
margin:0pt;
|
||||
margin-bottom:.0001pt;
|
||||
mso-pagination:none;
|
||||
text-align:justify;
|
||||
text-justify:inter-ideograph;
|
||||
font-family:Calibri;
|
||||
mso-fareast-font-family:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';
|
||||
font-size:10.5000pt;
|
||||
mso-font-kerning:1.0000pt;
|
||||
}
|
||||
|
||||
span.10{
|
||||
font-family:'Times New Roman';
|
||||
}
|
||||
|
||||
span.msoIns{
|
||||
mso-style-type:export-only;
|
||||
mso-style-name:"";
|
||||
text-decoration:underline;
|
||||
text-underline:single;
|
||||
color:blue;
|
||||
}
|
||||
|
||||
span.msoDel{
|
||||
mso-style-type:export-only;
|
||||
mso-style-name:"";
|
||||
text-decoration:line-through;
|
||||
color:red;
|
||||
}
|
||||
|
||||
table.MsoNormalTable{
|
||||
mso-style-name:<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-style-parent:"";
|
||||
mso-style-noshow:yes;
|
||||
mso-tstyle-rowband-size:0;
|
||||
mso-tstyle-colband-size:0;
|
||||
mso-padding-alt:0.0000pt 5.4000pt 0.0000pt 5.4000pt;
|
||||
mso-para-margin:0pt;
|
||||
mso-para-margin-bottom:.0001pt;
|
||||
mso-pagination:widow-orphan;
|
||||
font-family:'Times New Roman';
|
||||
font-size:10.0000pt;
|
||||
mso-ansi-language:#0400;
|
||||
mso-fareast-language:#0400;
|
||||
mso-bidi-language:#0400;
|
||||
}
|
||||
@page{mso-page-border-surround-header:no;
|
||||
mso-page-border-surround-footer:no;}@page Section0{
|
||||
margin-top:72.0000pt;
|
||||
margin-bottom:72.0000pt;
|
||||
margin-left:90.0000pt;
|
||||
margin-right:90.0000pt;
|
||||
size:595.3000pt 841.9000pt;
|
||||
layout-grid:15.6000pt;
|
||||
mso-header-margin:42.5500pt;
|
||||
mso-footer-margin:49.6000pt;
|
||||
}
|
||||
div.Section0{page:Section0;}</style></head><body style="tab-interval:21pt;text-justify-trim:punctuation;" ><!--StartFragment--><div class="Section0" style="layout-grid:15.6000pt;" >
|
||||
|
||||
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ƽ̨<C6BD>ύ<EFBFBD><E1BDBB><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>İ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ܱ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ͬ<EFBFBD>⣬<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>й¶<D0B9>κθ<CEBA><CEB8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ĵ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>⡣</p>
|
||||
|
||||
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ǿ<EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>˽Ȿ<EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD>ʵ<EFBFBD><EFBFBD>Ӧ<EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫʱ<EFBFBD>ɲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD>绰<EFBFBD><EFBFBD>0755-86352225<32><35></p>
|
||||
|
||||
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD>ɡ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>֮ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD></p>
|
||||
|
||||
<h3>һ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p>(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>洢<EFBFBD>κ<EFBFBD><CEBA>û<EFBFBD><C3BB>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>õ<EFBFBD><C3B5><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3>û<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ύ<EFBFBD><E1BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><D0A4><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ա<EFBFBD><D5A1><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD><EFBFBD>ء<EFBFBD><D8A1>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>롢<EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>罻ý<E7BDBB><C3BD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ͥ<EFBFBD><CDA5>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵȸ<CFB5><C8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>֧<EFBFBD><D6A7>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(2<><32><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>洢<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒʱ<C6B7><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>û<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ܱ<EFBFBD><DCB1>ɼ<EFBFBD><C9BC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ϵͳ<CFB5><CDB3><EFBFBD>͡<EFBFBD><CDA1>豸ʶ<E8B1B8><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IP <20><>ַ<EFBFBD><D6B7> MAC <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPS <20><>λ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EEB6AF><EFBFBD>ݡ<EFBFBD><DDA1>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD>Ϊƫ<CEAA>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>֡<EFBFBD>ͼƬ<CDBC><C6AC>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
|
||||
|
||||
<p>(3<><33><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>ý<EFBFBD>塢ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3A8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܽ<EFBFBD><DCBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD>ǵĻ<C7B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>ᱻ<EFBFBD><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC></p>
|
||||
|
||||
<p>(4<><34><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6>ض<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع涨<D8B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>18<31><38><EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͬ<EFBFBD><CDAC>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ͬ<EFBFBD>Ȿ<EFBFBD><E2B1BE>˽<EFBFBD><CBBD><EFBFBD>ߡ<EFBFBD></p>
|
||||
|
||||
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>ܱ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD></p>
|
||||
|
||||
<p>(1<><31>Ϊ<EFBFBD><CEAA><EFBFBD>ṩ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>(2<><32><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD></p>
|
||||
|
||||
<p>(3)<29><><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD>Ʒ<EFBFBD>ͻ<CDBB>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>ͨ<EFBFBD><CDA8></p>
|
||||
|
||||
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2></p>
|
||||
|
||||
<p>(5<><35>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒʹ<C6B7><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD>뱾<EFBFBD><EBB1BE>˾<EFBFBD><CBBE><EFBFBD><EFBFBD>ֱ<EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF>ƹ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ش<EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>á<EFBFBD></p>
|
||||
|
||||
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ</h3>
|
||||
|
||||
<p>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ά<EFBFBD>ֺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD>Ὣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD>ڲ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Ϊ<EFBFBD>û<EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ܻὫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(1<><31><EFBFBD>ڱ<EFBFBD><DAB1>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܻὫ<DCBB><E1BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>κα<CEBA><CEB1><EFBFBD>˾<EFBFBD><CBBE>Ȩ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̻<EFBFBD><CCBB>ⲿ<EFBFBD><E2B2BF>Ӧ<EFBFBD>̣<EFBFBD><CCA3>Դٽ<D4B4><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA>й<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ĺ<EFBFBD><C4B9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪Ϥ<D6AA><CFA4>ͬ<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>ˡ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD>Ա㿪չ<E3BFAA><D5B9><EFBFBD>ǵ<EFBFBD>ҵ<EFBFBD><EFBFBD><F1A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>κδ<CEBA><CEB4><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE>Ȩʹ<C8A8>øõ<C3B8><C3B5><EFBFBD><EFBFBD>Ϻͣ<CFBA><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>书<EFBFBD><E4B9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>Ҳ<EFBFBD><D2B2><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ķ<EFBFBD>ʹ<EFBFBD>á<EFBFBD></p>
|
||||
|
||||
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>ϽȨ<CFBD><C8A8>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EEA1A2><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊִ<CEAA><D6B4><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA1B7><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD>з<EFBFBD><D0B7>ɿ<EFBFBD><C9BF>硣</p>
|
||||
|
||||
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>з<EFBFBD><D0B7><EFBFBD>թ<EFBFBD><D5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>͵<EFBFBD><CDB5><EFBFBD>ְȨ<D6B0><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵķ<CFB5><C4B7>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ҫ<EFBFBD>ṩ<EFBFBD><E1B9A9></p>
|
||||
|
||||
<p>(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ռ<EFBFBD><D5BC>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾֮<CBBE><D6AE>ת<EFBFBD>ƻ档<F2B4A2B4><E6A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͬ<CEAA>Ⲣ<EFBFBD><E2B2A2>Ȩ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><C2B6>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
|
||||
|
||||
<p>(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><F2B2BFB7>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD>ۡ<EFBFBD>ת<EFBFBD>á<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ŷ<EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD></p>
|
||||
|
||||
<h3><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p>(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ض<EFBFBD><D8B6>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EEB6AF><CAB1><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3>к<EFBFBD>ͷ<EFBFBD><CDB7>ͼƬ<CDBC><C6AC></p>
|
||||
|
||||
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2B9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>á<EFBFBD></p>
|
||||
|
||||
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵİ<DDB5>ȫ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></p>
|
||||
|
||||
<p>(4<><34><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>ƹ㱾<C6B9><E3B1BE>˾<EFBFBD><CBBE>Ʒ<EFBFBD><C6B7>Ŀ<EFBFBD>Ŀ<EFBFBD><C4BF>ܻ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
|
||||
|
||||
<h3><EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p>(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵİ<DDB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>Ƿdz<C7B7><C7B3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD>ĽӴ<C4BD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ȫ<EFBFBD><C8AB></p>
|
||||
|
||||
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ȫ<EFBFBD><C8AB>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD>֤<EFBFBD><D6A4><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰٷ<DDB0>֮<EFBFBD>ٰ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD></p>
|
||||
|
||||
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ر<EFBFBD><D8B1>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD>ϢͨѶ<CDA8><D1B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>رն<D8B1>λ<EFBFBD><CEBB><EFBFBD>ܵȣ<DCB5><C8A3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ײ<EFBFBD><D7B2>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>ƽ̨<C6BD><CCA8><EFBFBD>Դٽ<D4B4><D9BD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>¼<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>ġ<EFBFBD></p>
|
||||
|
||||
<p>(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<CEBA><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<C7B7><F1BEADB9><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>⡣<EFBFBD><E2A1A3><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κλ<CEBA><CEBB><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й¶<D0B9><C2B6><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p>(8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><D7A1><EFBFBD>κι<CEBA><CEB9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ɹ涨<C9B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>ͣ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽҪ<CABD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ʸ<EFBFBD><CAB8><EFBFBD></p>
|
||||
|
||||
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>SDK<EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p>Bugly(<28><>ѶBugly)</p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> Ϊ<>˿<EFBFBD><CBBF>ٶ<EFBFBD>λӦ<CEBB>ò<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ԭCrash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Crash<73>豸ͳ<E8B1B8><CDB3></p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Crash<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Crash<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>̶߳<EFBFBD>ջ<EFBFBD><EFBFBD>ROM/RAM/SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>Ե<EFBFBD>״̬<D7B4><CCAC>App<70><70>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>IMEI<45><49><EFBFBD>豸ʶ<E8B1B8><CAB6><EFBFBD><EFBFBD></p>
|
||||
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://privacy.qq.com/document/preview/fc748b3d96224fdb825ea79e132c1a56</p>
|
||||
|
||||
|
||||
<p><EFBFBD>ٶȶ<EFBFBD>λ</p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ֶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5>汾<EFBFBD><E6B1BE><EFBFBD>豸Ʒ<E8B1B8>Ƽ<EFBFBD><C6BC>ͺš<CDBA><C5A1>豸<EFBFBD><E8B1B8><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-0</p>
|
||||
|
||||
|
||||
<p><EFBFBD>ٶȵ<EFBFBD>ͼ</p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD>켣<EFBFBD><ECBCA3><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>д<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ô洢<C3B4><E6B4A2>Ϣ<EFBFBD><CFA2></p>
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-1</p>
|
||||
|
||||
|
||||
<p>QQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> QQ<51><51>Ȩ<EFBFBD><C8A8>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD></p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ϣ<EFBFBD><CFA2></p>
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://wiki.connect.qq.com/qq%e4%ba%92%e8%81%94sdk%e9%9a%90%e7%a7%81%e4%bf%9d%e6%8a%a4%e5%a3%b0%e6%98%8e</p>
|
||||
|
||||
|
||||
<p><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <><CEA2><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD></p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ϣ<EFBFBD><CFA2></p>
|
||||
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8</p>
|
||||
|
||||
|
||||
<p>mapbox</p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>߹滮</p>
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8><C8A8>,<2C><>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2></p>
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://www.mapbox.com/legal/privacy</p>
|
||||
|
||||
|
||||
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><EFBFBD>豸Ψһ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ</p>
|
||||
|
||||
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IMEI<45><49>IDFA<46><41>IDFV<46><56><EFBFBD>豸MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>Ѱ<EFBFBD>װAPP<50><50>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>д<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ô洢<C3B4><E6B4A2>Ϣ<EFBFBD><CFA2></p>
|
||||
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://www.jiguang.cn/license/privacy</p>
|
||||
|
||||
|
||||
<h3><EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
|
||||
|
||||
<p><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ɴ˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>涨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||
|
||||
|
||||
<p><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD>绰<EFBFBD><EFBFBD>0755-86352225 <20><></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div><!--EndFragment--></body></html>
|
||||
72
app/src/main/assets/privacy_en.html
Normal file
72
app/src/main/assets/privacy_en.html
Normal file
@@ -0,0 +1,72 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
|
||||
<body>
|
||||
<div>
|
||||
<p>At ABBI PET INC, we respect and are committed to protecting your privacy. This Privacy Policy outlines how we collect, use, safeguard, and keep your information confidential when you use our mobile application ("App").</p>
|
||||
|
||||
<h3>1. Information We Collect</h3>
|
||||
<ul>
|
||||
<li>Personal Information: When you create an account, we may collect personal information such as your name, email address, and phone number.</li>
|
||||
<li>Pet Information: We collect information about your pets, including their name, age, breed, and weight, to provide tailored services.</li>
|
||||
<li>Usage Data: We collect information on how you interact with our App, such as the features you use and the time spent on the App.</li>
|
||||
<li>Device Information: We may collect information about the device you use to access the App, including the device type, operating system, and unique device identifiers.</li>
|
||||
<li>Location Data: With your permission, we may collect and process information about your device<63><65>s location and your pet's location to provide location-based services.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>2. How We Use Your Information</h3>
|
||||
<ul>
|
||||
<li>To Provide and Improve Our Services: We use your information to operate and improve the App and our services.</li>
|
||||
<li>To Communicate with You: We may use your information to send you updates, newsletters, marketing materials, and other information that may be of interest to you.</li>
|
||||
<li>To Personalize Your Experience: We use your information to tailor the content and services we offer to better meet your needs and preferences.</li>
|
||||
<li>To Ensure Security and Compliance: We use your information to ensure the security of our App and compliance with applicable laws and regulations.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>3. Data Confidentiality and Security</h3>
|
||||
<ul>
|
||||
<li>Data Encryption: We use industry-standard encryption protocols to protect your personal information during transmission and storage.</li>
|
||||
<li>Access Controls: Access to your personal information is restricted to authorized personnel only, and we implement strict access controls to prevent unauthorized access.</li>
|
||||
<li>Data Minimization: We only collect and retain the minimum amount of personal information necessary to provide our services.</li>
|
||||
<li>Regular Audits: We conduct regular security audits and assessments to ensure our data protection measures are up to date and effective.</li>
|
||||
</ul>
|
||||
<h3>4. Sharing Your Information</h3>
|
||||
<ul>
|
||||
<li>Service Providers: We may share your information with third-party service providers who perform services on our behalf, such as hosting, data analysis, and customer support. These service providers are contractually obligated to keep your information confidential and secure.</li>
|
||||
<li>Legal Requirements: We may disclose your information if required by law or in response to a legal request.</li>
|
||||
<li>Business Transfers: In the event of a merger, acquisition, or sale of all or a portion of our assets, your information may be transferred to the new owner, subject to the same data protection commitments.</li>
|
||||
</ul>
|
||||
|
||||
<h3>5. Your Choices</h3>
|
||||
<ul>
|
||||
<li>Account Information: You can update or delete your account information through the App's settings.</li>
|
||||
<li>Marketing Communications: You can opt-out of receiving marketing communications from us by following the unsubscribe instructions in those communications or by contacting us directly.</li>
|
||||
<li>Location Data: You can disable location services through your device settings, but this may affect certain features of the App.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>6. Security</h3>
|
||||
|
||||
<p>We take reasonable measures to protect your information from unauthorized access, use, or disclosure. However, no method of transmission over the Internet or method of electronic storage is 100% secure.</p>
|
||||
|
||||
<h3>7. Children's Privacy</h3>
|
||||
|
||||
<p>Our App is not intended for use by children under the age of 13, and we do not knowingly collect personal information from children under 13. If we become aware that we have collected personal information from a child under 13, we will take steps to delete that information.</p>
|
||||
|
||||
<h3>8. Changes to This Privacy Policy</h3>
|
||||
|
||||
<p>We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy within the App. You are advised to review this Privacy Policy periodically for any changes.</p>
|
||||
|
||||
<h3>9. Contact Us</h3>
|
||||
<p>If you have any questions about this Privacy Policy, please contact us at:</p>
|
||||
<p>ABBI PET INC</p>
|
||||
<p>10700 Richmond Ave Suite 143</p>
|
||||
<p>Houston, TX 77042</p>
|
||||
<p>Email: support@abbidot.com</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
||||
24
app/src/main/assets/subscription_terms_conditions_en.html
Normal file
24
app/src/main/assets/subscription_terms_conditions_en.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
|
||||
<body>
|
||||
<div>
|
||||
|
||||
<h3>ABBIDOT Tracker Subscription Terms and Conditions
|
||||
</h3>
|
||||
<p>1.Subscription Plans Users can choose between Basic and Prime plans. Basic plan subscribers can upgrade to Prime at any time. Prime plan subscribers can't change to Basic plan.
|
||||
|
||||
<p>2.Refund Policy Automatic Refund (Within 48 Hours): Full refund available if canceled within 48 hours of subscription. Processed automatically without manual review. Manual Refund (After 48 Hours): For subscriptions older than 48 hours but within 1 month, refunds require manual approval. Eligibility: Only applicable to annual (1-year) subscriptions. Refunds may be prorated based on usage. No Refund After 1 Month: Subscriptions active for over 1 month are non-refundable.</p>
|
||||
|
||||
<p>3.Pausing Subscription & Number Retention Users may pause their subscription. Number Retention: Paused numbers can be retained for up to 1 year. A small fee will apply for number retention during the pause period. Failure to reactivate within 1 year may result in number release.</p>
|
||||
|
||||
<p>4.Modifications ABBIDOT reserves the right to update these terms. Users will be notified of changes. By subscribing, you agree to these terms.</p>
|
||||
|
||||
<p>For support contact:</p>
|
||||
<p>support@abbidot.com</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
||||
476
app/src/main/assets/terms_cn.html
Normal file
476
app/src/main/assets/terms_cn.html
Normal file
@@ -0,0 +1,476 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Administrator</o:Author><o:LastAuthor>Administrator</o:LastAuthor><o:Revision>1</o:Revision><o:Pages>4</o:Pages><o:Characters>4655</o:Characters></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string" >2052-11.1.0.11875</o:KSOProductBuildVer><o:ICV dt:dt="string" >FBB05287C6EE4A78BF914DBD714C3B04</o:ICV></o:CustomDocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><o:OfficeDocumentSettings></o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8 <20><></w:DrawingGridVerticalSpacing><w:View>Web</w:View><w:Compatibility><w:AdjustLineHeightInTable/><w:DontGrowAutofit/><w:BalanceSingleByteDoubleByteWidth/><w:DoNotExpandShiftReturn/><w:UseFELayout/></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml><w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="260" >
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 9" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="header" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footer" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="caption" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of figures" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope address" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope return" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="line number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="page number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote reference" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of authorities" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="macro" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toa heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Closing" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Signature" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Default Paragraph Font" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Message Header" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Salutation" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Date" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Note Heading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Block Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Hyperlink" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="FollowedHyperlink" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Document Map" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Plain Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="E-mail Signature" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal (Web)" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Acronym" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Address" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Cite" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Code" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Definition" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Keyboard" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Preformatted" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Sample" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Typewriter" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Variable" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Normal Table" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation subject" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / a / i" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / 1.1 / 1.1.1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Article / Section" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 7" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 8" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Contemporary" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Elegant" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Professional" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Balloon Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Theme" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Placeholder Text" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No Spacing" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="List Paragraph" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Quote" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Intense Quote" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6" ></w:LsdException>
|
||||
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6" ></w:LsdException>
|
||||
</w:LatentStyles></xml><![endif]--><style>
|
||||
@font-face{
|
||||
font-family:"Times New Roman";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"<22><><EFBFBD><EFBFBD>";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"Wingdings";
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family:"Calibri";
|
||||
}
|
||||
|
||||
p.MsoNormal{
|
||||
mso-style-name:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-style-parent:"";
|
||||
margin:0pt;
|
||||
margin-bottom:.0001pt;
|
||||
mso-pagination:none;
|
||||
text-align:justify;
|
||||
text-justify:inter-ideograph;
|
||||
font-family:Calibri;
|
||||
mso-fareast-font-family:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';
|
||||
font-size:10.5000pt;
|
||||
mso-font-kerning:1.0000pt;
|
||||
}
|
||||
|
||||
span.10{
|
||||
font-family:'Times New Roman';
|
||||
}
|
||||
|
||||
span.msoIns{
|
||||
mso-style-type:export-only;
|
||||
mso-style-name:"";
|
||||
text-decoration:underline;
|
||||
text-underline:single;
|
||||
color:blue;
|
||||
}
|
||||
|
||||
span.msoDel{
|
||||
mso-style-type:export-only;
|
||||
mso-style-name:"";
|
||||
text-decoration:line-through;
|
||||
color:red;
|
||||
}
|
||||
|
||||
table.MsoNormalTable{
|
||||
mso-style-name:<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
mso-style-parent:"";
|
||||
mso-style-noshow:yes;
|
||||
mso-tstyle-rowband-size:0;
|
||||
mso-tstyle-colband-size:0;
|
||||
mso-padding-alt:0.0000pt 5.4000pt 0.0000pt 5.4000pt;
|
||||
mso-para-margin:0pt;
|
||||
mso-para-margin-bottom:.0001pt;
|
||||
mso-pagination:widow-orphan;
|
||||
font-family:'Times New Roman';
|
||||
font-size:10.0000pt;
|
||||
mso-ansi-language:#0400;
|
||||
mso-fareast-language:#0400;
|
||||
mso-bidi-language:#0400;
|
||||
}
|
||||
@page{mso-page-border-surround-header:no;
|
||||
mso-page-border-surround-footer:no;}@page Section0{
|
||||
margin-top:72.0000pt;
|
||||
margin-bottom:72.0000pt;
|
||||
margin-left:90.0000pt;
|
||||
margin-right:90.0000pt;
|
||||
size:595.3000pt 841.9000pt;
|
||||
layout-grid:15.6000pt;
|
||||
mso-header-margin:42.5500pt;
|
||||
mso-footer-margin:49.6000pt;
|
||||
}
|
||||
div.Section0{page:Section0;}</style></head><body style="tab-interval:21pt;text-justify-trim:punctuation;" ><!--StartFragment--><div class="Section0" style="layout-grid:15.6000pt;" ><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD></font>ABBIDOT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>лʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒǰ<EFBFBD><EFBFBD>ϸ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͬ<EFBFBD>Ȿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κι<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>顣<EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ܻ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD>ṩ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD>ɽ<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ѽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD></font>18<EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ø<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD>ض<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع涨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18<EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ṩ<EFBFBD><E1B9A9>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ȷ<D7BC><C8B7><EFBFBD><EFBFBD><EFBFBD>µĸ<C2B5><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD>ע<EFBFBD>ᡣ(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>˻<EFBFBD><CBBB><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ṩ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>ǡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<CEBA><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<C7B7><F1BEADB9><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>⡣<EFBFBD><E2A1A3><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롢<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>ͼ<EFBFBD>Ρ<EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>廭<EFBFBD><E5BBAD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><F2A1A2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>Ȩʹ<C8A8>õĵ<C3B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>̱ꡢר<EAA1A2><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ˵<C8B7><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱ꡢ<CCB1><EAA1A2>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD>磬<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺͱ<C6BA>־<EFBFBD><D6BE><EFBFBD>ƣ<EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>С<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><C9A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>IJ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>̱ꡢ<CCB1><EAA1A2>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD>ͬ<EFBFBD>ⲻ<EFBFBD><E2B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>κδ<CEBA><CEB4>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ӡ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵ġ<CBB5><C4A1><EFBFBD><EFBFBD>ġ<DEB5><C4A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>õġ<C3B5><C4A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɵġ<C9B5><C4A1>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD>Ľ<EFBFBD>Ϊ<EFBFBD><CEAA>Ԥ<EFBFBD><D4A4>ʹ<EFBFBD><CAB9>Ŀ<EFBFBD><C4BF><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڷ<EFBFBD><DAB7>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD>ز<EFBFBD>ʹ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>̱<EFBFBD><CCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ʶ<D6AA><CAB6>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ȨȨ<C8A8><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><DEB8><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ල<EFBFBD><E0B6BD><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵķ<DDB5><C4B7><EFBFBD>Ȩ<EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>֪ʶ<D6AA><CAB6>Ȩ<EFBFBD><C8A8>ɾ<EFBFBD><C9BE><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>κ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>ķ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>ض<EFBFBD>ʹ<EFBFBD><CAB9>Ȩ<EFBFBD><C8A8><EFBFBD>⣬δ<E2A3AC><CEB4><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>⣬<EFBFBD><E2A3AC>ʹ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD>롢<EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>κη<CEBA>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݡ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>غʹ<D8BA><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>Դ˲<D4B4><CBB2>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8>κη<CEBA><CEB7><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ص<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ф<EFBFBD><D0A4>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE><EFBFBD>ڵ<EFBFBD><DAB5>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1>ġ<DEB8><C4A1><EFBFBD><EFBFBD>롢<EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>ת<EFBFBD><D7AA><EFBFBD>ɡ<EFBFBD><C9A1>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD>õ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ѱ<EFBFBD>ת<EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⷢ<EFBFBD><E2B7A2><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE>ڷDZ<DAB7><C7B1>ܵĻ<DCB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>õġ<C3B5><C4A1>Ƕ<EFBFBD><C7B6>ҵġ<D2B5><C4A1><EFBFBD>ת<EFBFBD>õġ<C3B5><C4A1><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɵġ<C9B5><C4A1><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ġ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>緶Χ<E7B7B6><CEA7><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><C9A1><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>κ<EFBFBD>Ŀ<EFBFBD><C4BF>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<DEB8><C4BB>Ľ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ġ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>淶</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ϊרҵ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>罻<EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽Ⲣ<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩɸѡ<C9B8><D1A1><EFBFBD>ල<EFBFBD><E0B6BD>ɾ<EFBFBD><C9BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD>֤Υ<D6A4><CEA5><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F0B7A2B2>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1>ġ<F3B5BCB5>ɧ<EFBFBD>ŵġ<C5B5>ɫ<EFBFBD><C9AB><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵġ<D3B5><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĻ<D3B5><C4BB><EFBFBD><EFBFBD>˷<EFBFBD><CBB7>еġ<D0B5><C4A1><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD>Ļ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κξ<CEBA><CEBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F0B7A2B2>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4><D3B5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3>ֻ<EFBFBD><D6BB>ᵽ<EFBFBD><E1B5BD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ɡ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F0B7A2B2>κο<CEBA><CEBF><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD>绰<EFBFBD><E7BBB0><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >Ϣ<EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F0B7A2B2>κι<CEBA><CEB9>桢<EFBFBD><E6A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κε<CEBA><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>¡<EFBFBD>αװ<CEB1><D7B0><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>Զ<EFBFBD>ץȡ<D7A5><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F0B7A2B2>κο<CEBA><CEBF>ܹ<EFBFBD><DCB9>ܡ<EFBFBD><DCA1><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>۸<EFBFBD>ƽ̨<C6BD><CCA8>ȫϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>κο<CEBA><CEBF>ܸ<EFBFBD><DCB8>š<EFBFBD><C5A1><EFBFBD><F0BBB5A1><EFBFBD><EFBFBD>ơ<EFBFBD>ʹ<EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>ý<EFBFBD>塢ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⲣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>Ͽɡ<EFBFBD><EFBFBD>ල<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ге<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>ա<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>IJ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>ա<EFBFBD>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>κ<EFBFBD><CEBA><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>ա<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>֤ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵġ<CFB5><C4A1><EFBFBD><DEB2><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1>κδ<CEBA><CEB4><EFBFBD><F3B6BCBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʽ<EFBFBD>ij<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>Ʒ<EFBFBD><C6B7>ȷ<D7BC>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ԡ<EFBFBD><D4A1>ɿ<EFBFBD><C9BF>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ŵ<EFBFBD><C5B5></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ͨ<EFBFBD><CDA8>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><C3BB>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>֤<EFBFBD><D6A4><EFBFBD>𣬰<EFBFBD><F0A3ACB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>ʵ<EFBFBD><CAB5><EFBFBD>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>Եı<D4B5>֤<EFBFBD><D6A4></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD>Ĺ<EFBFBD><C4B9>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><E0BBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>Ρ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(9<><39><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>û<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>롣</span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>涨<EFBFBD>ķ<EFBFBD>Χ<EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(11<31><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>κν<CEBA><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD>䲻<EFBFBD><E4B2BB>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><DEB8>κ<EFBFBD><CEBA>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƻ<DBBC><C6BB><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɣ<EFBFBD><C9A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ԭ<EFBFBD>ᡢ<F2B6B3BD><E1A1A2>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<CEBA><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȫ<EFBFBD><C8AB><EFBFBD>ַ<F2B2BFB7><D6B7><EFBFBD><EFBFBD><EFBFBD><CDB9>ܡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⲣͬ<E2B2A2>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>ijЩ<C4B3><D0A9><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<DABB><EEB6AF>Ҫ<EFBFBD>л<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹͣʹ<D6B9><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB>Ч<EFBFBD><D0A7></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ˡ<EFBFBD><EFBFBD>⳥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>κ<EFBFBD><CEBA><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>⳥<EFBFBD><E2B3A5>Ϊ֮<CEAA>ṩ<EFBFBD>绤<EFBFBD><E7BBA4>ʹ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>̼<EFBFBD><CCBC><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ʹ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<CEBA><CEB7>ɻ<EFBFBD><C9BB>κε<CEBA><CEB5><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>κη<CEBA>ʽ<EFBFBD><CABD>֮<EFBFBD><D6AE><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD><EFBFBD>⡢<EFBFBD><E2A1A2>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ̳<C4BC><CCB3>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1>а<EFBFBD><D0B0>ˡ<EFBFBD><CBA1>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD>ش<EFBFBD><D8B4><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨<C6BD>йص<D0B9><D8B5><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8>ͨ<EFBFBD><CDA8>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<CFB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ʹ<CCA8><CAB9><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵġ<D3B5><C4A1><EFBFBD><EFBFBD>ӵġ<D3B5>żȻ<C5BC>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>е<F0BAA6B3><D0B5><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9>ֹͣʹ<D6B9>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ø<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>κ<EFBFBD><CEBA><EFBFBD><F0BAA6BB><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>⳥<EFBFBD><E2B3A5><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>1Ԫ<31><D4AA><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>š<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϽȨ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κι<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD>ͬ<EFBFBD>⣬<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>й<EFBFBD>ϽȨ<CFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD>⣬ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA1A2>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ܵ<EFBFBD><DCB5>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>ɹ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>кͽ<D0BA><CDBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>ɡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ִ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>飬˫<E9A3AC><CBAB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD>Э<EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>̲<EFBFBD><CCB2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>κ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ס<EFBFBD><D7A1><EFBFBD>صķ<D8B5>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>涨</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Χ<EFBFBD><CEA7>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>֪ͨ<CDA8><D6AA>Э<EFBFBD>顢<EFBFBD><E9A1A2>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ž<EFBFBD><C5BE><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й涨<D0B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD>⽫<EFBFBD><E2BDAB><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κβ<CEBA><CEB2>ֱ<EFBFBD><D6B1>϶<EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
|
||||
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD>绰<EFBFBD><EFBFBD></font>0755-86352225<32><35></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
|
||||
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p> </o:p></span></p></div><!--EndFragment--></body></html>
|
||||
77
app/src/main/assets/terms_en.html
Normal file
77
app/src/main/assets/terms_en.html
Normal file
@@ -0,0 +1,77 @@
|
||||
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<h3>1. Acceptance of Terms</h3>
|
||||
|
||||
<p>By downloading, installing, and using the ABBIDOT mobile application ("App"), you agree to be bound by these Terms and Conditions ("Terms"). If you do not agree to these Terms, do not use the App.</p>
|
||||
|
||||
|
||||
|
||||
<h3>2. Use of the App</h3>
|
||||
<ul>
|
||||
<li>Eligibility: You must be at least 13 years old to use the App. By using the App, you represent and warrant that you meet this eligibility requirement.</li>
|
||||
<li>License: ABBI PET INC grants you a limited, non-exclusive, non-transferable, and revocable license to use the App for personal, non-commercial use only.</li>
|
||||
<li>Restrictions: You agree not to:</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Modify, reverse engineer, decompile, or disassemble the App.</li>
|
||||
<li>Use the App for any unlawful purpose or in any way that could harm ABBI PET INC or its users.</li>
|
||||
<li>Access or use the App to build a competing service or product.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<h3>3. Accounts and Security</h3>
|
||||
<ul>
|
||||
<li>Account Creation: To use certain features of the App, you may need to create an account. You agree to provide accurate and complete information during the registration process.</li>
|
||||
<li>Account Security: You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account. You agree to notify ABBI PET INC immediately of any unauthorized use of your account.</li>
|
||||
</ul>
|
||||
<h3>4. Privacy</h3>
|
||||
|
||||
<p>Your use of the App is also governed by our Privacy Policy, which is incorporated by reference into these Terms. Please review our Privacy Policy to understand our practices regarding your information.</p>
|
||||
|
||||
<h3>5. User Content</h3>
|
||||
<ul>
|
||||
<li>Ownership: You retain ownership of any content you submit or post through the App ("User Content"). By submitting User Content, you grant ABBI PET INC a worldwide, non-exclusive, royalty-free license to use, reproduce, distribute, and display your User Content in connection with the App.</li>
|
||||
<li>Responsibility: You are solely responsible for your User Content. You agree not to post content that is illegal, harmful, or violates the rights of others.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>6. Intellectual Property</h3>
|
||||
|
||||
<p>All content, features, and functionality of the App, including but not limited to text, graphics, logos, and software, are the exclusive property of ABBI PET INC or its licensors and are protected by copyright, trademark, and other intellectual property laws.</p>
|
||||
|
||||
<h3>7. Termination</h3>
|
||||
|
||||
<p>ABBI PET INC may terminate or suspend your access to the App at any time, without prior notice or liability, for any reason, including if you breach these Terms. Upon termination, your right to use the App will immediately cease.</p>
|
||||
|
||||
<h3>8. Disclaimers and Limitation of Liability</h3>
|
||||
<ul>
|
||||
<li>Disclaimers: The App is provided "as is" and "as available" without warranties of any kind, either express or implied. ABBI PET INC does not warrant that the App will be uninterrupted or error-free.</li>
|
||||
<li>Limitation of Liability: To the maximum extent permitted by law, ABBI PET INC shall not be liable for any indirect, incidental, special, or consequential damages arising out of or in connection with your use of the App.</li>
|
||||
</ul>
|
||||
|
||||
<h3>9. Governing Law</h3>
|
||||
<p>These Terms shall be governed by and construed in accordance with the laws of the State of Texas, without regard to its conflict of law principles.</p>
|
||||
|
||||
<h3>10. Changes to Terms</h3>
|
||||
<p>ABBI PET INC reserves the right to modify these Terms at any time. We will notify you of any changes by posting the new Terms within the App. Your continued use of the App after the changes become effective constitutes your acceptance of the new Terms.</p>
|
||||
|
||||
<h3>11. Data Confidentiality</h3>
|
||||
<p>We are committed to maintaining the confidentiality of your data. We employ the following measures to ensure data protection:</p>
|
||||
<ul>
|
||||
<li>Confidentiality Agreements: All employees and third-party service providers who have access to your data are required to sign confidentiality agreements.</li>
|
||||
<li>Data Anonymization: Where possible, we anonymize your data to protect your privacy.</li>
|
||||
<li>Data Retention Policy: We retain your data only as long as necessary for the purposes outlined in our Privacy Policy, after which it is securely deleted or anonymized.</li>
|
||||
</ul>
|
||||
|
||||
<h3>12. Contact Us</h3>
|
||||
<p>If you have any questions about these Terms, please contact us at:</p>
|
||||
<p>ABBI PET INC</p>
|
||||
<p>10700 Richmond Ave Suite 143</p>
|
||||
<p>Houston, TX 77042</p>
|
||||
<p>Email: support@abbidot.com</p>
|
||||
|
||||
|
||||
</div></body></html>
|
||||
94
app/src/main/java/com/abbidot/tracker/MyApplication.kt
Normal file
94
app/src/main/java/com/abbidot/tracker/MyApplication.kt
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.abbidot.tracker
|
||||
|
||||
import android.app.ActivityManager
|
||||
import android.app.Application
|
||||
import android.os.Build
|
||||
import android.os.Process
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import coil.Coil
|
||||
import coil.ImageLoader
|
||||
import coil.decode.GifDecoder
|
||||
import coil.decode.ImageDecoderDecoder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.hjq.toast.Toaster
|
||||
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/2/002.
|
||||
* @link
|
||||
* @description:Application
|
||||
*/
|
||||
@HiltAndroidApp
|
||||
class MyApplication : Application() {
|
||||
|
||||
companion object {
|
||||
lateinit var instance: Application
|
||||
}
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
//强制浅色模式,使用 AppCompatDelegate 或 MaterialComponents 动态切换主题
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
||||
initInMainProcess {
|
||||
instance = this
|
||||
AppUtils.syncIsDebug(applicationContext)
|
||||
QMUISwipeBackActivityManager.init(this)
|
||||
MMKVUtil.init(this)
|
||||
|
||||
// 初始化 Toast 框架
|
||||
Toaster.init(this)
|
||||
Toaster.setView(R.layout.toast_my_layout)
|
||||
|
||||
// JPushInterface.setDebugMode(true)
|
||||
// JPushInterface.init(this)
|
||||
|
||||
// if (!AppUtils.isDebug()) {
|
||||
// //腾讯bugly初始化
|
||||
// CrashReport.initCrashReport(applicationContext, "06fc0a9cd1", AppUtils.isDebug())
|
||||
// }
|
||||
|
||||
// //同意协议
|
||||
// SDKInitializer.setAgreePrivacy(this, true)
|
||||
//// LocationClient.setAgreePrivacy(true);
|
||||
// //在使用SDK各组件之前初始化context信息,传入ApplicationContext
|
||||
// SDKInitializer.initialize(this)
|
||||
// //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
|
||||
// //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
|
||||
// SDKInitializer.setCoordType(CoordType.GCJ02)
|
||||
|
||||
// if (!AppUtils.isChina()) {
|
||||
// MapboxSearchSdk.initialize(application = this,
|
||||
// accessToken = getString(R.string.mapbox_access_token),
|
||||
// locationEngine = LocationEngineProvider.getBestLocationEngine(this))
|
||||
// }
|
||||
|
||||
//设置支持加载gif
|
||||
val imageLoader = ImageLoader.Builder(this).componentRegistry {
|
||||
if (Build.VERSION.SDK_INT >= 28) {
|
||||
add(ImageDecoderDecoder(this@MyApplication))
|
||||
} else {
|
||||
add(GifDecoder())
|
||||
}
|
||||
}.build()
|
||||
//设置全局唯一实例
|
||||
Coil.setImageLoader(imageLoader)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 主进程初始化
|
||||
*/
|
||||
private fun initInMainProcess(block: () -> Unit) {
|
||||
val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager
|
||||
val myPId = Process.myPid()
|
||||
val mainProcessName = packageName
|
||||
activityManager.runningAppProcesses.forEach {
|
||||
if (it.pid == myPId && it.processName == mainProcessName) {
|
||||
block()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import coil.load
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/5/30/030.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class AssignOptionsAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_bottom_sheet_add_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val circleImageView = holder!!.getImageView(R.id.il_bottom_sheet_circle_image)
|
||||
val wrapImageView = holder.getImageView(R.id.il_bottom_sheet_wrap_image)
|
||||
val name = holder.getTextView(R.id.tv_bottom_sheet_name)
|
||||
|
||||
name.text = item.name
|
||||
if (position == 0) {
|
||||
circleImageView.visibility = View.GONE
|
||||
wrapImageView.visibility = View.GONE
|
||||
} else {
|
||||
//处理设备类型
|
||||
if (item.menuType == ConstantInt.SpecialType) {
|
||||
wrapImageView.visibility = View.VISIBLE
|
||||
circleImageView.visibility = View.GONE
|
||||
wrapImageView.load(R.drawable.icon_tracker_device_small)
|
||||
} else {
|
||||
circleImageView.visibility = View.VISIBLE
|
||||
wrapImageView.visibility = View.GONE
|
||||
ViewUtil.instance.setPetTypeHead(circleImageView, item.value, item.menuType)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.baidu.mapapi.search.core.PoiInfo
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/7/4/004.
|
||||
* @link
|
||||
* @description:百度地图搜索地址返回结果
|
||||
*/
|
||||
class BaiduMapPoiSearchResultAdapter(ctx: Context, list: MutableList<PoiInfo>?) :
|
||||
BaseRecyclerAdapter<PoiInfo>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_baidu_map_poi_result
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PoiInfo) {
|
||||
holder!!.setText(R.id.baidu_map_poi_name, item.name)
|
||||
holder.setText(R.id.baidu_map_poi_address, item.address)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.PetBean
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.abbidot.tracker.widget.TypefaceRoundButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/1/8/008.
|
||||
* @link
|
||||
* @description:切换宠物列表弹窗适配器
|
||||
*/
|
||||
class ChangePetListDialogAdapter(ctx: Context, list: MutableList<PetBean>?) :
|
||||
BaseRecyclerAdapter<PetBean>(ctx, list) {
|
||||
|
||||
private var mOnChangeClickListener: OnChangeClickListener? = null
|
||||
|
||||
//选中的宠物下标
|
||||
private var mSelectPetPos = 0
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_pet_dialog
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PetBean) {
|
||||
val current =
|
||||
holder!!.itemView.findViewById<TypefaceRoundButton>(R.id.dialog_my_pet_current_btn)
|
||||
val change =
|
||||
holder.itemView.findViewById<TypefaceRoundButton>(R.id.dialog_my_pet_change_btn)
|
||||
|
||||
holder.setText(R.id.dialog_my_pet_name, item.petName)
|
||||
|
||||
holder.getImageView(R.id.dialog_my_pet_head).apply {
|
||||
ViewUtil.instance.setPetTypeHead(this, item.imgurl, item.petType)
|
||||
setOnClickListener {
|
||||
if (null != mOnChangeClickListener) {
|
||||
mOnChangeClickListener!!.onCurrentClick()
|
||||
}
|
||||
val intent = Intent(mContext, PetProfileActivity::class.java)
|
||||
intent.putExtra(ConstantString.Edit, true)
|
||||
intent.putExtra(ConstantString.Pet, item)
|
||||
mContext.startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
if (position == mSelectPetPos) {
|
||||
current.visibility = View.VISIBLE
|
||||
change.visibility = View.GONE
|
||||
} else {
|
||||
current.visibility = View.GONE
|
||||
change.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
current.setChangeAlphaWhenPress(true)
|
||||
current.setOnClickListener {
|
||||
if (null != mOnChangeClickListener) {
|
||||
mOnChangeClickListener!!.onCurrentClick()
|
||||
}
|
||||
}
|
||||
|
||||
change.setChangeAlphaWhenPress(true)
|
||||
change.setOnClickListener {
|
||||
mSelectPetPos = position
|
||||
notifyItemRangeChanged(0, getData().size)
|
||||
if (null != mOnChangeClickListener) {
|
||||
mOnChangeClickListener!!.onChangeClick(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setSelectPetPos(position: Int) {
|
||||
mSelectPetPos = position
|
||||
}
|
||||
|
||||
fun setOnChangeClickListener(onChangeClickListener: OnChangeClickListener) {
|
||||
mOnChangeClickListener = onChangeClickListener
|
||||
}
|
||||
|
||||
interface OnChangeClickListener {
|
||||
fun onCurrentClick()
|
||||
fun onChangeClick(position: Int)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Paint
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.PackageBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/8/6/006.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class ChoosePlanAdapter(
|
||||
ctx: Context, list: MutableList<PackageBean>?
|
||||
) : BaseRecyclerAdapter<PackageBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_choose_plan_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageBean) {
|
||||
holder?.apply {
|
||||
getView(R.id.rl_choose_plan_shade_item).let {
|
||||
if (item.selected) it.setBackgroundResource(R.drawable.shape20_yellow_border_cyan_bg)
|
||||
else it.setBackgroundResource(0)
|
||||
}
|
||||
|
||||
setText(R.id.tv_choose_plan_item_name, item.planName)
|
||||
|
||||
val price = if (item.discountedPrice > 0) item.discountedPrice else item.planPrice
|
||||
getTextView(R.id.tv_choose_plan_item_money).apply {
|
||||
text = if (item.mealUnit == ConstantString.PackageUnitMonth) {
|
||||
String.format(
|
||||
mContext.getString(R.string.txt_money_unit), Utils.formatDecimal(price, 2)
|
||||
)
|
||||
} else {
|
||||
val monthPrice = Utils.formatDecimal(price / (item.period * 12), 2)
|
||||
String.format(mContext.getString(R.string.txt_money_unit), monthPrice)
|
||||
}
|
||||
}
|
||||
|
||||
getTextView(R.id.tv_choose_plan_item_year_money).let {
|
||||
it.text = String.format(
|
||||
mContext.getString(R.string.txt_money_unit),
|
||||
Utils.formatDecimal(item.discountedPrice, 2)
|
||||
)
|
||||
|
||||
it.visibility = if (item.discount > 0) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
|
||||
getTextView(R.id.tv_choose_plan_item_discount_money).let {
|
||||
it.text = String.format(
|
||||
mContext.getString(R.string.txt_money_unit),
|
||||
Utils.formatDecimal(item.planPrice, 2)
|
||||
)
|
||||
it.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
|
||||
it.visibility = if (item.discount > 0) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
|
||||
|
||||
getView(R.id.ll_choose_plan_item_discount_percent).let {
|
||||
it.visibility = if (item.discount > 0) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
getTextView(R.id.tv_choose_plan_item_discount_percent).let {
|
||||
it.text = "${item.discount}%"
|
||||
}
|
||||
|
||||
getView(R.id.cv_choose_plan_item_popular).let {
|
||||
if (item.popularType == ConstantInt.Type1) it.visibility = View.VISIBLE
|
||||
else it.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import android.widget.RelativeLayout
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.CreditCardBean
|
||||
import com.abbidot.tracker.ui.activity.subscribe.PaymentMethodActivity
|
||||
import com.abbidot.tracker.ui.fragment.subscribe.CreditCardPaymentFragment
|
||||
import com.abbidot.tracker.util.Util
|
||||
import com.abbidot.tracker.widget.TypefaceRoundButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/21/021.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class CreditCardAdapter(
|
||||
ctx: Context, list: MutableList<CreditCardBean>?
|
||||
) : BaseRecyclerAdapter<CreditCardBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_credit_card_no_data
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_credit_card_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: CreditCardBean) {
|
||||
val relativeLayout = holder!!.itemView as RelativeLayout
|
||||
val primary = holder.getView(R.id.rb_credit_card_primary_item) as TypefaceRoundButton
|
||||
if (item.checked) {
|
||||
relativeLayout.setBackgroundResource(R.drawable.shape8_dark_border_pale_yellow_bg)
|
||||
} else {
|
||||
relativeLayout.setBackgroundResource(R.drawable.shape8_dark_gray_border_white_yellow_bg)
|
||||
}
|
||||
primary.visibility = if (item.isPrimary) View.VISIBLE else View.GONE
|
||||
holder.getTextView(R.id.tv_credit_card_number_item).apply {
|
||||
val formatCardNumber = Util.formatCardNumber(item.cardNumber)
|
||||
val cardLogoImageId = Util.getCreditCardType(item.cardNumber)
|
||||
text = formatCardNumber
|
||||
if (cardLogoImageId == 0) setCompoundDrawablesWithIntrinsicBounds(
|
||||
0, 0, 0, 0
|
||||
)
|
||||
else setCompoundDrawablesWithIntrinsicBounds(
|
||||
cardLogoImageId, 0, 0, 0
|
||||
)
|
||||
}
|
||||
holder.getView(R.id.iv_credit_card_edit_btn).setOnClickListener {
|
||||
(((mContext as PaymentMethodActivity).mFragments[0]) as CreditCardPaymentFragment).goEditCard(
|
||||
item
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DFUStateBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/4/17/017.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class DFUStateAdapter(
|
||||
ctx: Context, list: MutableList<DFUStateBean>?
|
||||
) : BaseRecyclerAdapter<DFUStateBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_tracker_dfu_state
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DFUStateBean) {
|
||||
val textView = holder!!.getTextView(R.id.item_dfu_state_name)
|
||||
val stateName = if (item.progress in 1..100) {
|
||||
"${item.stateName}${item.progress}%"
|
||||
} else {
|
||||
item.stateName
|
||||
}
|
||||
textView.text = stateName
|
||||
|
||||
if (position == getData().size - 1) {
|
||||
holder.getView(R.id.item_dfu_state_progress).visibility = View.VISIBLE
|
||||
holder.getView(R.id.item_dfu_state_ok).visibility = View.GONE
|
||||
} else {
|
||||
holder.getView(R.id.item_dfu_state_progress).visibility = View.GONE
|
||||
holder.getView(R.id.item_dfu_state_ok).visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.widget.AppCompatCheckBox
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.ui.activity.device.set.LiveDurationSetActivity
|
||||
import com.abbidot.tracker.ui.activity.device.set.TrackingDurationSetActivity
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/6/7/007.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class DurationSetAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
private var mTrackingDurationSetActivity: TrackingDurationSetActivity? = null
|
||||
private var mLiveDurationSetActivity: LiveDurationSetActivity? = null
|
||||
|
||||
init {
|
||||
if (ctx is TrackingDurationSetActivity) {
|
||||
mTrackingDurationSetActivity = ctx
|
||||
} else if (ctx is LiveDurationSetActivity) {
|
||||
mLiveDurationSetActivity = ctx
|
||||
}
|
||||
}
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_duration_set_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
holder!!.setText(R.id.tv_duration_name_item, item.name)
|
||||
val checkBox = holder.getView(R.id.cb_duration_set_check) as AppCompatCheckBox
|
||||
checkBox.apply {
|
||||
isChecked = item.selected
|
||||
setOnCheckedChangeListener(null)
|
||||
setOnClickListener {
|
||||
isChecked = item.selected
|
||||
if (mContext is TrackingDurationSetActivity) {
|
||||
mTrackingDurationSetActivity?.setTrackingDuration(position)
|
||||
} else if (mContext is LiveDurationSetActivity) {
|
||||
mLiveDurationSetActivity?.setLiveDuration(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/2/22/022.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class FamilyAvatarAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_invite_family_avatar_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val qMUIRadiusImageView =
|
||||
holder!!.getView(R.id.il_invite_family_avatar_layout) as QMUIRadiusImageView
|
||||
qMUIRadiusImageView.apply {
|
||||
setImageResource(item.imageId)
|
||||
borderColor = ContextCompat.getColor(mContext, R.color.select_color)
|
||||
borderWidth = if (item.selected) {
|
||||
AppUtils.dpToPx(2)
|
||||
} else {
|
||||
AppUtils.dpToPx(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.FamilyBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.ui.activity.pet.FamilyMembersActivity
|
||||
import com.qmuiteam.qmui.layout.QMUIButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/2/21/021.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class FamilyMembersAdapter(
|
||||
ctx: Context, list: MutableList<FamilyBean>?
|
||||
) : BaseRecyclerAdapter<FamilyBean>(ctx, list) {
|
||||
|
||||
private val mFamilyMembersActivity: FamilyMembersActivity
|
||||
|
||||
init {
|
||||
mFamilyMembersActivity = ctx as FamilyMembersActivity
|
||||
}
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_family_member_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FamilyBean) {
|
||||
val activeState = holder!!.getView(R.id.tv_family_member_active_state)
|
||||
val pendingState = holder.getView(R.id.tv_family_member_pending_state)
|
||||
val resendBtn = holder.getView(R.id.btn_family_member_resend) as QMUIButton
|
||||
val avatarImageView = holder.getImageView(R.id.il_family_member_head)
|
||||
resendBtn.setChangeAlphaWhenPress(true)
|
||||
if (item.status == ConstantInt.Open) {
|
||||
activeState.visibility = View.VISIBLE
|
||||
pendingState.visibility = View.GONE
|
||||
resendBtn.visibility = View.GONE
|
||||
} else {
|
||||
activeState.visibility = View.INVISIBLE
|
||||
pendingState.visibility = View.VISIBLE
|
||||
resendBtn.visibility = View.VISIBLE
|
||||
}
|
||||
holder.setText(R.id.tv_family_member_email, item.acceptEmail)
|
||||
|
||||
val avatarImageResId = if (item.avatar == ConstantInt.Man) {
|
||||
R.drawable.icon_family_boy_avatar
|
||||
} else {
|
||||
R.drawable.icon_family_girl_avatar
|
||||
}
|
||||
avatarImageView.setImageResource(avatarImageResId)
|
||||
|
||||
holder.setClickListener(R.id.iv_delete_family_member_btn, View.OnClickListener {
|
||||
mFamilyMembersActivity.deleteFamily(item)
|
||||
})
|
||||
resendBtn.setOnClickListener {
|
||||
mFamilyMembersActivity.resendFamily(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/2/22/022.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class FamilyRelationAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_invite_family_relation_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
holder!!.setText(R.id.tv_invite_family_relation_text, item.name)
|
||||
holder.itemView.isSelected = item.selected
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import coil.load
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.abbidot.tracker.ui.activity.help.FeedbackActivity
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/23/023.
|
||||
* @link
|
||||
* @description:反馈上传的图片
|
||||
*/
|
||||
class FeedbackImageAdapter(
|
||||
ctx: Context, activity: FragmentActivity, list: MutableList<MenuTxtBean>?
|
||||
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
|
||||
|
||||
private val mActivity = activity as FeedbackActivity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_feedback_image
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
|
||||
val imageView = holder!!.getImageView(R.id.show_select_image)
|
||||
val deleteView = holder.getTextView(R.id.delete_image_cancel)
|
||||
if (TextUtils.isEmpty(item.imageUrl)) {
|
||||
imageView.load(R.drawable.ico_photo)
|
||||
deleteView.visibility = View.GONE
|
||||
imageView.setOnClickListener {
|
||||
// ViewUtil.instance.goSelectPhoto(
|
||||
// mActivity,
|
||||
// ResultCode.ResultCode_1,
|
||||
// count = mActivity.mLimitPhotoCount - (getData().size - 1)
|
||||
// )
|
||||
}
|
||||
} else {
|
||||
imageView.setOnClickListener(null)
|
||||
imageView.load(File(item.imageUrl))
|
||||
deleteView.visibility = View.VISIBLE
|
||||
deleteView.setOnClickListener {
|
||||
val list = getData()
|
||||
mActivity.deletePhoto(list, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.ColorStateList
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.FencesBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.abbidot.tracker.widget.TypefaceRoundButton
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class FencesZoneAdapter(
|
||||
ctx: Context, list: MutableList<FencesBean>?, isShowRightArrow: Boolean = true
|
||||
) : BaseRecyclerAdapter<FencesBean>(ctx, list) {
|
||||
|
||||
private var isShowRightArrow = true
|
||||
|
||||
init {
|
||||
this.isShowRightArrow = isShowRightArrow
|
||||
}
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_virtual_fences_empty_view
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_virtual_fences_layout
|
||||
|
||||
override fun noData(holder: RecyclerViewHolder?) {
|
||||
holder?.apply {
|
||||
getView(R.id.btn_empty_fences_add_safe_zone).visibility =
|
||||
if (isShowNoDataAddButton) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FencesBean) {
|
||||
holder!!.getTextView(R.id.tv_virtual_fences_list_name).text = item.name
|
||||
holder.getTextView(R.id.tv_virtual_fences_list_address).text = item.address
|
||||
|
||||
val fenceNameTypeImage = ViewUtil.instance.getFenceNameImageType(item.fenceNameType)
|
||||
|
||||
holder.getImageView(R.id.iv_virtual_fences_list_type).setImageResource(fenceNameTypeImage)
|
||||
|
||||
val typefaceButton =
|
||||
holder.getView(R.id.tv_virtual_fences_list_switch_state) as TypefaceRoundButton
|
||||
val switchText: String
|
||||
val switchTextColor: Int
|
||||
val switchStrokeColor = if (item.isOn == ConstantInt.Open) {
|
||||
switchText = mContext.getString(R.string.txt_active)
|
||||
switchTextColor = ContextCompat.getColor(mContext, R.color.green_color100)
|
||||
ContextCompat.getColor(mContext, R.color.green_color100)
|
||||
} else {
|
||||
switchText = mContext.getString(R.string.txt_deactivate)
|
||||
switchTextColor = ContextCompat.getColor(mContext, R.color.block_color2)
|
||||
ContextCompat.getColor(mContext, R.color.white_gray_color1)
|
||||
}
|
||||
typefaceButton.apply {
|
||||
text = switchText
|
||||
setTextColor(switchTextColor)
|
||||
setStrokeColors(ColorStateList.valueOf(switchStrokeColor))
|
||||
}
|
||||
|
||||
if (isShowRightArrow) {
|
||||
holder.getView(R.id.iv_virtual_fences_list_arrow_right).visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.getView(R.id.iv_virtual_fences_list_arrow_right).visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.ui.activity.set.FirstPermissionsActivity
|
||||
import com.abbidot.tracker.widget.TypefaceButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/25/025.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class FirstPermissionsAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
private val mPermissionsActivity = ctx as FirstPermissionsActivity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_permission_state_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val stateView = holder!!.getImageView(R.id.cb_permission_state_item)
|
||||
val typefaceTextView = holder.getTextView(R.id.tv_permission_tip_item)
|
||||
val btnLayout = holder.getView(R.id.ll_permission_set_layout)
|
||||
val btnSkip = holder.getView(R.id.btn_permission_skip_set) as TypefaceButton
|
||||
val btnEnable = holder.getView(R.id.btn_permission_enable_set) as TypefaceButton
|
||||
btnSkip.setChangeAlphaWhenPress(true)
|
||||
btnEnable.setChangeAlphaWhenPress(true)
|
||||
|
||||
if (item.selected) {
|
||||
typefaceTextView.visibility = View.VISIBLE
|
||||
holder.itemView.setBackgroundResource(R.drawable.shape16_white_color_bg)
|
||||
|
||||
if (item.state == ConstantInt.Type1) {
|
||||
btnLayout.visibility = View.GONE
|
||||
} else {
|
||||
btnLayout.visibility = View.VISIBLE
|
||||
}
|
||||
} else {
|
||||
btnLayout.visibility = View.GONE
|
||||
typefaceTextView.visibility = View.GONE
|
||||
holder.itemView.setBackgroundResource(R.drawable.shape10_white_bg)
|
||||
}
|
||||
|
||||
when (item.state) {
|
||||
ConstantInt.SpecialType -> stateView.setImageResource(R.drawable.icon_permission_error_check_svg)
|
||||
ConstantInt.Type0 -> stateView.setImageResource(R.drawable.icon_permission_no_check_svg)
|
||||
ConstantInt.Type1 -> stateView.setImageResource(R.drawable.icon_permission_check_svg)
|
||||
}
|
||||
|
||||
holder.setText(R.id.tv_permission_name_item, item.name)
|
||||
typefaceTextView.text = item.value
|
||||
|
||||
btnSkip.setOnClickListener {
|
||||
item.state = ConstantInt.SpecialType
|
||||
item.selected = false
|
||||
notifyItemChanged(position)
|
||||
// if (position + 1 < getData().size) {
|
||||
// getData()[position + 1].
|
||||
// }
|
||||
}
|
||||
btnEnable.setOnClickListener {
|
||||
when (position) {
|
||||
0 -> mPermissionsActivity.mPermissionsCommon.operateBluetooth()
|
||||
1 -> mPermissionsActivity.mPermissionsCommon.operateGPSLocation()
|
||||
2 -> mPermissionsActivity.mPermissionsCommon.operateNotifications(
|
||||
this, ConstantInt.SpecialType
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
mPermissionsActivity.updateNextBtnState()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Rect
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
||||
|
||||
/**
|
||||
*Created by .
|
||||
* @link https://blog.csdn.net/Lee465357793/article/details/130830127
|
||||
* @description:RecyclerView GridLayoutManager item间距设置,两端对齐
|
||||
* @param offset 控件的外边距,不使用屏幕宽度来计算
|
||||
*/
|
||||
class GridItemDecoration(
|
||||
context: Context, spanCount: Int, private var itemWidth: Int, top: Int, bottom: Int, offset: Int
|
||||
) : RecyclerView.ItemDecoration() {
|
||||
|
||||
private var mSpanCount = spanCount
|
||||
private val mContext = context
|
||||
private var mColumnSpacing = 0
|
||||
private val mTop = top
|
||||
private val mBottom = bottom
|
||||
|
||||
private val rvWidth by lazy {
|
||||
QMUIDisplayHelper.getScreenWidth(mContext) - offset
|
||||
}
|
||||
|
||||
init {
|
||||
mColumnSpacing = (rvWidth - (itemWidth * mSpanCount)) / (mSpanCount - 1)
|
||||
}
|
||||
|
||||
fun updateSpaceCount(count: Int) {
|
||||
mSpanCount = count
|
||||
mColumnSpacing = (rvWidth - (itemWidth * mSpanCount)) / (mSpanCount - 1)
|
||||
}
|
||||
|
||||
override fun getItemOffsets(
|
||||
outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State
|
||||
) {
|
||||
// 获取view 在adapter中的位置。
|
||||
val position = parent.getChildAdapterPosition(view)
|
||||
// view 所在的列
|
||||
val column = position % mSpanCount
|
||||
// column * (列间距 * (1f / 列数))
|
||||
outRect.left = (column * mColumnSpacing / mSpanCount)
|
||||
// 列间距 - (column + 1) * (列间距 * (1f /列数))
|
||||
outRect.right = (mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount)
|
||||
|
||||
if (mTop > 0) {
|
||||
outRect.top = mTop
|
||||
}
|
||||
if (mBottom > 0) {
|
||||
outRect.bottom = mBottom
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.graphics.Typeface
|
||||
import android.widget.ImageView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.abbidot.tracker.constant.MultipleEntity
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.viewholder.BaseViewHolder
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/8/12/012.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class HelpTextImageTypeAdapter(list: MutableList<MenuTxtBean>?) :
|
||||
BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
|
||||
|
||||
init {
|
||||
//加粗的标题文字
|
||||
addItemType(MultipleEntity.TEXT, R.layout.layout_help_title1)
|
||||
//只是图片的
|
||||
addItemType(MultipleEntity.IMG, R.layout.layout_help_image)
|
||||
//显示不同颜色的文字
|
||||
addItemType(MultipleEntity.IMG_TEXT, R.layout.layout_help_title1)
|
||||
//显示16sp大小的文字内容
|
||||
addItemType(MultipleEntity.IMG_IMG, R.layout.layout_help_title1)
|
||||
//显示14sp大小的文字内容
|
||||
addItemType(MultipleEntity.IMG_TEXT_IMG, R.layout.layout_help_title2)
|
||||
}
|
||||
|
||||
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
|
||||
// val position = getItemPosition(item)
|
||||
when (item.itemType) {
|
||||
MultipleEntity.TEXT -> {
|
||||
// 创建一个Typeface对象,指定加粗字体
|
||||
val typefaceBold = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
|
||||
holder.getView<TypefaceTextView>(R.id.tv_help_title_one).apply {
|
||||
text = item.menuName
|
||||
typeface = typefaceBold
|
||||
}
|
||||
holder.itemView.setPadding(0, AppUtils.dpToPx(8), 0, 0)
|
||||
}
|
||||
|
||||
MultipleEntity.IMG_TEXT -> holder.getView<TypefaceTextView>(R.id.tv_help_title_one)
|
||||
.apply {
|
||||
text = item.menuName
|
||||
setTextColor(ContextCompat.getColor(context, item.colorRedId))
|
||||
}
|
||||
|
||||
MultipleEntity.IMG -> {
|
||||
holder.getView<AppCompatImageView>(R.id.iv_help_image_type)
|
||||
.setImageResource(item.imageId)
|
||||
}
|
||||
|
||||
MultipleEntity.IMG_IMG -> {
|
||||
holder.getView<TypefaceTextView>(R.id.tv_help_title_one).text = item.menuName
|
||||
holder.itemView.setPadding(0, AppUtils.dpToPx(20), 0, 0)
|
||||
}
|
||||
|
||||
MultipleEntity.IMG_TEXT_IMG -> {
|
||||
holder.getView<TypefaceTextView>(R.id.tv_help_title_two).text = item.menuName
|
||||
holder.itemView.setPadding(0, AppUtils.dpToPx(14), 0, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Intent
|
||||
import android.text.TextUtils
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseDialog
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.MultipleEntity
|
||||
import com.abbidot.tracker.ui.activity.HomeV2Activity
|
||||
import com.abbidot.tracker.ui.activity.help.FeedbackActivity
|
||||
import com.abbidot.tracker.ui.activity.help.HowWorkActivity
|
||||
import com.abbidot.tracker.ui.activity.set.AboutActivity
|
||||
import com.abbidot.tracker.ui.activity.set.AdvancedSetActivity
|
||||
import com.abbidot.tracker.ui.activity.set.NotificationsSetActivity
|
||||
import com.abbidot.tracker.ui.activity.set.PermissionsSetActivity
|
||||
import com.abbidot.tracker.ui.common.UnitSelectDialog
|
||||
import com.abbidot.tracker.ui.fragment.account.AccountV2Fragment
|
||||
import com.abbidot.tracker.util.Util
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.viewholder.BaseViewHolder
|
||||
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/12/27/027.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class HomeAccountMenuAdapter(
|
||||
accountV2Fragment: AccountV2Fragment, list: MutableList<MenuTxtBean>?
|
||||
) : BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
|
||||
|
||||
private val mLogOutTipsType = 0
|
||||
private val mClearCacheTipsType = 1
|
||||
private val mCloseAccountTipsType = 2
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
private lateinit var mUnitSelectDialog: UnitSelectDialog
|
||||
private val mAccountV2Fragment = accountV2Fragment
|
||||
|
||||
init {
|
||||
addItemType(MultipleEntity.TEXT, R.layout.item_title_text_type)
|
||||
addItemType(MultipleEntity.IMG_TEXT, R.layout.item_qmui_common_item_view)
|
||||
}
|
||||
|
||||
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
||||
super.onAttachedToRecyclerView(recyclerView)
|
||||
mHomeV2Activity = context as HomeV2Activity
|
||||
mUnitSelectDialog = UnitSelectDialog(context)
|
||||
}
|
||||
|
||||
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
|
||||
val position = getItemPosition(item)
|
||||
when (item.itemType) {
|
||||
MultipleEntity.TEXT -> {
|
||||
val typefaceTextView = holder.getView<TypefaceTextView>(R.id.tv_title_name)
|
||||
typefaceTextView.text = item.menuName
|
||||
}
|
||||
|
||||
MultipleEntity.IMG_TEXT -> {
|
||||
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).run {
|
||||
ViewUtil.instance.showQMUICommonListItemView(
|
||||
context, this, {
|
||||
// Toaster.show("$position")
|
||||
when (position) {
|
||||
1 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, HowWorkActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
2 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, FeedbackActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
4 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, NotificationsSetActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
5 -> mUnitSelectDialog.showUnitDialog(object :
|
||||
BaseDialog.OnDialogSelectListener {
|
||||
override fun onSelectClick(dialog: BaseDialog<*>, any: Any) {
|
||||
if (any is Int) {
|
||||
val unit = any
|
||||
val oldUnit = Util.getMeasureSpUnit()
|
||||
if (unit == oldUnit) {
|
||||
return
|
||||
}
|
||||
item.menuValue =
|
||||
if (unit == ConstantInt.Type1) context.getString(R.string.txt_imperial)
|
||||
else context.getString(R.string.txt_metric)
|
||||
mAccountV2Fragment.setMeasureUnit(unit)
|
||||
}
|
||||
}
|
||||
})
|
||||
// mHomeV2Activity.startActivity(
|
||||
// Intent(
|
||||
// context, FirstMeasurementUnitsActivity::class.java
|
||||
// )
|
||||
// )
|
||||
|
||||
|
||||
6 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, PermissionsSetActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
7 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, AdvancedSetActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
9 -> mHomeV2Activity.startActivity(
|
||||
Intent(
|
||||
context, AboutActivity::class.java
|
||||
)
|
||||
)
|
||||
|
||||
10 -> dialogShowType(
|
||||
mLogOutTipsType,
|
||||
mHomeV2Activity.getString(R.string.txt_log_out_tips),
|
||||
position
|
||||
)
|
||||
|
||||
}
|
||||
}, item.menuName
|
||||
)
|
||||
if (!TextUtils.isEmpty(item.menuValue)) {
|
||||
detailText = item.menuValue
|
||||
}
|
||||
setImageDrawable(ContextCompat.getDrawable(context, item.imageId))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun dialogShowType(type: Int, string: String, pos: Int) {
|
||||
ViewUtil.instance.showDialog(context, string, object : BaseDialog.OnDialogOkListener {
|
||||
override fun onOkClick(dialog: BaseDialog<*>) {
|
||||
dialog.dismiss()
|
||||
when {
|
||||
mLogOutTipsType == type -> {
|
||||
Util.logOut(mHomeV2Activity, mHomeV2Activity.lifecycleScope)
|
||||
}
|
||||
|
||||
mCloseAccountTipsType == type -> {
|
||||
// closeAccount()
|
||||
}
|
||||
|
||||
else -> {
|
||||
// mHomeV2Activity.clearCache(this@HomeAccountMenuAdapter, pos)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, okTextResId = R.string.txt_sure)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.widget.TypefaceButton
|
||||
|
||||
/**
|
||||
* 首页地图宠物警告适配器
|
||||
*/
|
||||
class HomeMapDeviceMsgAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_map_device_msg
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val typefaceTextView = holder!!.getView(R.id.tv_device_msg_content) as TypefaceButton
|
||||
typefaceTextView.apply {
|
||||
text = item.value
|
||||
val colorId = if (item.state == ConstantInt.Type1) R.color.green_color10
|
||||
else R.color.device_msg_color1
|
||||
|
||||
setBackgroundColor(ContextCompat.getColor(context, colorId))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.widget.BatteryView
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
|
||||
/**
|
||||
* 首页地图宠物警告适配器
|
||||
*/
|
||||
class HomeMapDeviceStateAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_map_device_state
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val typefaceTextView =
|
||||
holder!!.getView(R.id.tv_home_map_device_name_item) as TypefaceTextView
|
||||
val iv = holder.getView(R.id.iv_home_map_device_item) as AppCompatImageView
|
||||
val bv = holder.getView(R.id.bv_home_map_device_power) as BatteryView
|
||||
val ivState = holder.getView(R.id.iv_home_map_device_state_item) as AppCompatImageView
|
||||
val detailTextView =
|
||||
holder.getTextView(R.id.tv_map_device_state_detail_item) as TypefaceTextView
|
||||
|
||||
if (item.menuType == ConstantInt.Open) {
|
||||
ivState.setImageResource(R.drawable.icon_map_online)
|
||||
} else {
|
||||
ivState.setImageResource(R.drawable.icon_map_offline)
|
||||
}
|
||||
|
||||
if (item.imageId == 0) {
|
||||
iv.visibility = View.GONE
|
||||
bv.visibility = View.VISIBLE
|
||||
bv.setValue(item.state)
|
||||
} else {
|
||||
iv.visibility = View.VISIBLE
|
||||
bv.visibility = View.GONE
|
||||
iv.setImageResource(item.imageId)
|
||||
}
|
||||
|
||||
typefaceTextView.text = item.name
|
||||
detailTextView.text = item.value
|
||||
|
||||
if (item.selected) {
|
||||
detailTextView.visibility = View.VISIBLE
|
||||
typefaceTextView.visibility = View.GONE
|
||||
} else {
|
||||
detailTextView.visibility = View.GONE
|
||||
if (TextUtils.isEmpty(item.name)) {
|
||||
typefaceTextView.visibility = View.GONE
|
||||
} else {
|
||||
typefaceTextView.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
holder.itemView.setOnClickListener {
|
||||
item.selected = !item.selected
|
||||
notifyItemChanged(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.FamilyBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/12/25/025.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class HomePetFamilyAdapter(
|
||||
ctx: Context, list: MutableList<FamilyBean>?
|
||||
) : BaseRecyclerAdapter<FamilyBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_family_empty_view
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_pet_family
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FamilyBean) {
|
||||
holder!!.setText(R.id.item_home_pet_family_name, item.acceptEmail)
|
||||
val avatarImageView = holder.getImageView(R.id.item_home_pet_family_head)
|
||||
|
||||
val avatarImageResId = if (item.avatar == ConstantInt.Man) {
|
||||
R.drawable.icon_family_boy_avatar
|
||||
} else {
|
||||
R.drawable.icon_family_girl_avatar
|
||||
}
|
||||
avatarImageView.setImageResource(avatarImageResId)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.graphics.Typeface
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.MultipleEntity
|
||||
import com.abbidot.tracker.ui.activity.device.set.LedLightActivity
|
||||
import com.abbidot.tracker.ui.activity.device.set.LiveDurationSetActivity
|
||||
import com.abbidot.tracker.ui.activity.device.set.PowerOffActivity
|
||||
import com.abbidot.tracker.ui.activity.device.set.TrackingDurationSetActivity
|
||||
import com.abbidot.tracker.ui.fragment.device.HomeTrackFragment
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.viewholder.BaseViewHolder
|
||||
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class HomePetTrackMenuAdapter(
|
||||
fragment: HomeTrackFragment, list: MutableList<MenuTxtBean>?
|
||||
) : BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
|
||||
|
||||
private var mTypeface: Typeface
|
||||
private var mHomeTrackFragment: HomeTrackFragment = fragment
|
||||
|
||||
init {
|
||||
addItemType(MultipleEntity.TEXT, R.layout.item_qmui_common_item_view)
|
||||
addItemType(MultipleEntity.IMG_TEXT, R.layout.item_qmui_common_item_view)
|
||||
addItemType(MultipleEntity.TEXT_NAME, R.layout.item_qmui_common_item_view)
|
||||
addItemType(MultipleEntity.IMG_TEXT_IMG, R.layout.item_qmui_common_item_view)
|
||||
mTypeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
|
||||
}
|
||||
|
||||
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
|
||||
val position = getItemPosition(item)
|
||||
val qMUICommonItemView =
|
||||
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).apply {
|
||||
ViewUtil.instance.showQMUICommonListItemView(
|
||||
context, this, null, item.menuName
|
||||
)
|
||||
background =
|
||||
ContextCompat.getDrawable(context, R.drawable.selector_transparent_pressed)
|
||||
}
|
||||
qMUICommonItemView.textView.typeface = mTypeface
|
||||
qMUICommonItemView.setOnClickListener {
|
||||
when (position) {
|
||||
0 -> mHomeTrackFragment.goPetDataActivity(LedLightActivity::class.java)
|
||||
1 -> mHomeTrackFragment.goMapDeviceDataActivity(TrackingDurationSetActivity::class.java)
|
||||
2 -> mHomeTrackFragment.goMapDeviceDataActivity(LiveDurationSetActivity::class.java)
|
||||
3 -> mHomeTrackFragment.firmwareCheckUpdate()
|
||||
4 -> mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
when (item.itemType) {
|
||||
MultipleEntity.TEXT -> qMUICommonItemView.detailText = item.menuValue
|
||||
|
||||
MultipleEntity.IMG_TEXT -> {
|
||||
}
|
||||
|
||||
MultipleEntity.TEXT_NAME -> {
|
||||
qMUICommonItemView.accessoryType = QMUICommonListItemView.ACCESSORY_TYPE_SWITCH
|
||||
qMUICommonItemView.detailText = ""
|
||||
qMUICommonItemView.switch.apply {
|
||||
isChecked = item.menuValue == ConstantInt.Open.toString()
|
||||
isEnabled = isChecked
|
||||
setOnClickListener {
|
||||
if (!isChecked) {
|
||||
//turnOff
|
||||
mHomeTrackFragment.operateDeviceTips(R.string.txt_turnoff_tips, 0)
|
||||
}
|
||||
//屏蔽点击就变状态
|
||||
isChecked = !isChecked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MultipleEntity.IMG_TEXT_IMG -> setQMUICommonItemViewHead(qMUICommonItemView, item)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置QMUICommonItemView 自定义布局
|
||||
*/
|
||||
private fun setQMUICommonItemViewHead(
|
||||
qMUICommonItemView: QMUICommonListItemView, item: MenuTxtBean
|
||||
) {
|
||||
qMUICommonItemView.detailText = ""
|
||||
qMUICommonItemView.accessoryType = QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM
|
||||
val view =
|
||||
LayoutInflater.from(context).inflate(R.layout.layout_dfu_custom_qmui_group_right, null)
|
||||
qMUICommonItemView.addAccessoryCustomView(view)
|
||||
|
||||
view.findViewById<AppCompatImageView>(R.id.iv_dfu_red_dot).visibility =
|
||||
if (item.isSwitch) View.VISIBLE else View.GONE
|
||||
val firmwareName = view.findViewById<TypefaceTextView>(R.id.tv_custom_group_dfu_detail_text)
|
||||
firmwareName.text = item.menuValue
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.abbidot.tracker.constant.MultipleEntity
|
||||
import com.abbidot.tracker.widget.BatteryView
|
||||
import com.abbidot.tracker.widget.MyBluetoothAnimView
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
|
||||
/**
|
||||
* 首页宠物设备状态
|
||||
*/
|
||||
class HomePetTrackStateAdapter(
|
||||
ctx: Context, list: MutableList<MenuTxtBean>?
|
||||
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_pet_device_state
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
|
||||
val stateTextView = holder!!.getView(R.id.tv_home_pet_device_state_item) as TypefaceTextView
|
||||
stateTextView.text = item.menuName
|
||||
|
||||
holder.getTextView(R.id.tv_home_pet_device_state_name_item).apply {
|
||||
text = item.menuValue
|
||||
setTextColor(ContextCompat.getColor(mContext, item.colorRedId))
|
||||
}
|
||||
|
||||
val bv = holder.getView(R.id.bv_home_pet_device_power) as BatteryView
|
||||
val bluetoothAnimView =
|
||||
holder.getView(R.id.mba_home_pet_device_search_anim_item) as MyBluetoothAnimView
|
||||
when (item.menuType) {
|
||||
MultipleEntity.IMG_TEXT_IMG -> {
|
||||
bluetoothAnimView.visibility = View.GONE
|
||||
bv.visibility = View.VISIBLE
|
||||
bv.setValue(item.imageId)
|
||||
bluetoothAnimView.setBluetoothAnimStartAndStop(item.isSwitch)
|
||||
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
|
||||
}
|
||||
|
||||
MultipleEntity.TEXT_TEXT_IMG -> {
|
||||
bluetoothAnimView.visibility = View.VISIBLE
|
||||
bv.visibility = View.GONE
|
||||
bluetoothAnimView.setBluetoothAnimStartAndStop(item.isSwitch)
|
||||
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
|
||||
}
|
||||
|
||||
else -> {
|
||||
bv.visibility = View.GONE
|
||||
bluetoothAnimView.visibility = View.GONE
|
||||
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, item.imageId, 0, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/22/022.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class HowWorkAdapter(ctx: Context, list: MutableList<MenuTxtBean>?) :
|
||||
BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_qmui_common_item_view
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
|
||||
val qMUICommonListItemView =
|
||||
holder!!.getView(R.id.tracker_manage_setting_item) as QMUICommonListItemView
|
||||
qMUICommonListItemView.detailText = item.menuValue
|
||||
qMUICommonListItemView.text = item.menuName
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/12/30/030.
|
||||
* @link
|
||||
* @description:LedLight默认可以选择颜色适配器
|
||||
*/
|
||||
class LedLightColorAdapter(ctx: Context, list: MutableList<Int>?) :
|
||||
BaseRecyclerAdapter<Int>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_led_color_select
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: Int) {
|
||||
val radiusImageView =
|
||||
holder!!.itemView.findViewById<QMUIRadiusImageView>(R.id.show_current_color_select)
|
||||
radiusImageView.setImageResource(item)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.constant.MMKVKey
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.SubscriptionsOrderBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
import com.abbidot.tracker.ui.activity.subscribe.ChoosePlanActivity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.MySubscriptionActivity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionHistoryActivity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
|
||||
import com.abbidot.tracker.widget.TypefaceTextView
|
||||
import com.qmuiteam.qmui.skin.QMUISkinManager
|
||||
import com.qmuiteam.qmui.widget.popup.QMUIPopup
|
||||
import com.qmuiteam.qmui.widget.popup.QMUIPopups
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/29/029.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class MySubscriptionAdapter(
|
||||
ctx: Context, list: MutableList<SubscriptionsOrderBean>?
|
||||
) : BaseRecyclerAdapter<SubscriptionsOrderBean>(ctx, list) {
|
||||
|
||||
private val mMySubscriptionActivity = ctx as MySubscriptionActivity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_subscription_layout
|
||||
|
||||
override fun bindData(
|
||||
holder: RecyclerViewHolder?, position: Int, item: SubscriptionsOrderBean
|
||||
) {
|
||||
holder!!.setText(R.id.tv_my_subscription_device_out_id, item.deviceOutId)
|
||||
holder.setText(R.id.tv_my_subscription_plan_name, "${item.mealName}(${item.planCategory})")
|
||||
holder.getTextView(R.id.tv_my_subscription_auto_subscription_tips).apply {
|
||||
visibility = if (item.subscriptionStatus == ConstantInt.Open) {
|
||||
text = if (item.mealUnit == ConstantString.PackageUnitYear) String.format(
|
||||
mContext.getString(R.string.txt_auto_subscription_year),
|
||||
item.autoRenewPrice.toString()
|
||||
)
|
||||
else String.format(
|
||||
mContext.getString(R.string.txt_auto_subscription_month),
|
||||
item.autoRenewPrice.toString()
|
||||
)
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
}
|
||||
holder.setText(
|
||||
R.id.tv_my_subscription_active_time,
|
||||
Utils.stringToDate(item.updateTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN6)
|
||||
)
|
||||
|
||||
holder.getTextView(R.id.tv_my_subscription_annual_care).apply {
|
||||
text =
|
||||
if (item.annualCareType == ConstantInt.Type1) mContext.getString(R.string.start_txt_yes)
|
||||
else mContext.getString(R.string.txt_no)
|
||||
}
|
||||
|
||||
// val timestamp = getAfterHowTimestamp(
|
||||
// Utils.stringToTimestamp(item.currentTime), item.surplusDays
|
||||
// )
|
||||
holder.setText(
|
||||
R.id.tv_my_subscription_expires_on,
|
||||
Utils.formatTime(item.endTime, Utils.DATE_FORMAT_PATTERN_EN7)
|
||||
)
|
||||
|
||||
if (item.subscriptionStatus == ConstantInt.Close) {
|
||||
holder.setText(
|
||||
R.id.tv_my_subscription_auto_renew,
|
||||
mContext.getString(R.string.tracker_manage_set_led_off)
|
||||
)
|
||||
} else {
|
||||
holder.setText(
|
||||
R.id.tv_my_subscription_auto_renew,
|
||||
mContext.getString(R.string.tracker_manage_set_led_on)
|
||||
)
|
||||
}
|
||||
|
||||
val expiresTitle = holder.getTextView(R.id.tv_my_subscription_expires_title)
|
||||
holder.getButton(R.id.btn_my_subscription_recharge).apply {
|
||||
visibility =
|
||||
if (item.orderStatus == 6 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
|
||||
setText(R.string.txt_card_recharge)
|
||||
expiresTitle.setText(R.string.txt_expires_on2)
|
||||
View.VISIBLE
|
||||
} else if (item.subscriptionStatus == ConstantInt.Close) {
|
||||
setText(R.string.txt_enable_auto_renew)
|
||||
expiresTitle.setText(R.string.txt_expires_on1)
|
||||
View.VISIBLE
|
||||
} else {
|
||||
expiresTitle.setText(R.string.txt_expires_on1)
|
||||
View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
holder.getView(R.id.il_my_subscription_count_down).apply {
|
||||
visibility =
|
||||
if (item.orderStatus == 6 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
val times = Utils.getDayToYearMonthDay(item.surplusDays)
|
||||
holder.setText(R.id.tv_add_success_device_expires_days, times[0])
|
||||
holder.setText(R.id.tv_add_success_device_expires_hours, times[1])
|
||||
holder.setText(R.id.tv_add_success_device_expires_min, times[2])
|
||||
|
||||
holder.getView(R.id.fl_my_subscription_btn_layout).apply {
|
||||
val userId = MMKVUtil.getString(MMKVKey.UserId)
|
||||
//UserId不一样就是共享设备的订单
|
||||
visibility = if (item.userId == userId) {
|
||||
setOnClickListener {
|
||||
showPop(holder.getView(R.id.iv_my_subscription_btn), item, position)
|
||||
}
|
||||
View.VISIBLE
|
||||
} else View.GONE
|
||||
}
|
||||
holder.setClickListener(R.id.btn_my_subscription_recharge) {
|
||||
if (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close) {
|
||||
Intent(mContext, SubscriptionPlanActivity::class.java).let {
|
||||
it.putExtra(ConstantString.LkSetMeal, item)
|
||||
mMySubscriptionActivity.startActivity(it)
|
||||
}
|
||||
} else {
|
||||
mMySubscriptionActivity.updateSubscriptionStatus(item.subscriptionId, 1, position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showPop(v: View, item: SubscriptionsOrderBean, position: Int) {
|
||||
val view = LayoutInflater.from(mContext).inflate(R.layout.pop_subscription_item, null)
|
||||
val qMUIPopups =
|
||||
QMUIPopups.popup(mContext).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(view)
|
||||
// .edgeProtection(QMUIDisplayHelper.dp2px(mContext, 20))
|
||||
.dimAmount(0.6f).arrowSize(AppUtils.dpToPx(6), AppUtils.dpToPx(4))
|
||||
.radius(AppUtils.dpToPx(16)).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER)
|
||||
.skinManager(QMUISkinManager.defaultInstance(mContext)).show(v)
|
||||
|
||||
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_history).apply {
|
||||
setOnClickListener {
|
||||
qMUIPopups.dismiss()
|
||||
Intent(mContext, SubscriptionHistoryActivity::class.java).let {
|
||||
it.putExtra(ConstantString.DeviceId, item.deviceId)
|
||||
mMySubscriptionActivity.startActivity(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
//升级套餐
|
||||
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_auto_renew).apply {
|
||||
visibility =
|
||||
if (item.planCategory == "Premium" || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
setOnClickListener {
|
||||
qMUIPopups.dismiss()
|
||||
val intent = Intent(mContext, ChoosePlanActivity::class.java)
|
||||
intent.putExtra(ConstantString.Title, "Premium")
|
||||
intent.putExtra(ConstantString.Upgrade, true)
|
||||
intent.putExtra(ConstantString.LkSetMeal, item)
|
||||
mMySubscriptionActivity.startActivity(intent)
|
||||
}
|
||||
}
|
||||
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_cancel).apply {
|
||||
visibility = if (item.subscriptionStatus == ConstantInt.Open) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
setOnClickListener {
|
||||
qMUIPopups.dismiss()
|
||||
mMySubscriptionActivity.updateSubscriptionStatus(item.subscriptionId, 0, position)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DeviceBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
|
||||
import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity
|
||||
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/7/007.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class MyTrackerV2Adapter(
|
||||
ctx: Context, list: MutableList<DeviceBean>?
|
||||
) : BaseRecyclerAdapter<DeviceBean>(ctx, list) {
|
||||
|
||||
private val mMyTrackerActivity = mContext as MyTrackerV2Activity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_tracker_v2_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DeviceBean) {
|
||||
val batteryTextView = holder!!.getTextView(R.id.iv_item_my_tracker_v2_battery)
|
||||
val trackerImageView = holder.getImageView(R.id.iv_item_my_tracker_v2_device)
|
||||
val addTrackerLayout = holder.getView(R.id.ll_my_tracker_v2_add_tracker_layout)
|
||||
val petHead = holder.getView(R.id.il_my_tracker_v2_pet_head) as QMUIRadiusImageView
|
||||
val addPetLayout = holder.getView(R.id.ll_my_tracker_v2_add_pet_layout)
|
||||
val trackerName = holder.getTextView(R.id.tv_my_tracker_v2_device_name)
|
||||
val petName = holder.getTextView(R.id.tv_my_tracker_v2_pet_name)
|
||||
|
||||
holder.getImageView(R.id.iv_my_tracker_v2_share).apply {
|
||||
visibility = if (item.shared == ConstantInt.NoShare) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
addTrackerLayout.setOnClickListener {
|
||||
if (itemCount - 1 == position) {
|
||||
mMyTrackerActivity.startActivity(
|
||||
Intent(
|
||||
mContext, AddNewTracker1Activity::class.java
|
||||
)
|
||||
)
|
||||
} else {
|
||||
mMyTrackerActivity.getAssignData(position)
|
||||
}
|
||||
}
|
||||
addPetLayout.setOnClickListener {
|
||||
if (itemCount - 1 == position) {
|
||||
mMyTrackerActivity.startActivity(Intent(mContext, PetProfileActivity::class.java))
|
||||
} else {
|
||||
mMyTrackerActivity.getAssignData(position)
|
||||
}
|
||||
}
|
||||
|
||||
trackerImageView.setOnClickListener {
|
||||
if (item.shared == ConstantInt.NoShare) {
|
||||
mMyTrackerActivity.showDeviceBottomSheetMenu(position)
|
||||
}
|
||||
}
|
||||
petHead.setOnClickListener {
|
||||
if (item.shared == ConstantInt.NoShare) {
|
||||
mMyTrackerActivity.showPetBottomSheetMenu(position)
|
||||
}
|
||||
}
|
||||
|
||||
if (itemCount - 1 == position) {
|
||||
batteryTextView.visibility = View.GONE
|
||||
trackerImageView.visibility = View.GONE
|
||||
trackerName.visibility = View.GONE
|
||||
addTrackerLayout.visibility = View.VISIBLE
|
||||
|
||||
addPetLayout.visibility = View.VISIBLE
|
||||
petHead.visibility = View.GONE
|
||||
petName.visibility = View.GONE
|
||||
} else {
|
||||
if (TextUtils.isEmpty(item.deviceOutId)) {
|
||||
addTrackerLayout.visibility = View.VISIBLE
|
||||
batteryTextView.visibility = View.GONE
|
||||
trackerImageView.visibility = View.GONE
|
||||
trackerName.visibility = View.GONE
|
||||
} else {
|
||||
addTrackerLayout.visibility = View.GONE
|
||||
batteryTextView.visibility = View.VISIBLE
|
||||
trackerImageView.visibility = View.VISIBLE
|
||||
trackerName.visibility = View.VISIBLE
|
||||
|
||||
trackerName.text = item.deviceOutId
|
||||
val battery = "${item.batteryCapacity} "
|
||||
batteryTextView.text = battery
|
||||
}
|
||||
if (null == item.pet) {
|
||||
addPetLayout.visibility = View.VISIBLE
|
||||
petHead.visibility = View.GONE
|
||||
petName.visibility = View.GONE
|
||||
} else {
|
||||
addPetLayout.visibility = View.GONE
|
||||
petHead.visibility = View.VISIBLE
|
||||
petName.visibility = View.VISIBLE
|
||||
item.pet?.let {
|
||||
petName.text = it.petName
|
||||
ViewUtil.instance.setPetTypeHead(petHead, it.imgurl, it.petType)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import android.text.format.DateUtils
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MessageBean
|
||||
import com.abbidot.tracker.widget.TypefaceRoundButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/12/26/026.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class NotificationV2Adapter(
|
||||
ctx: Context, list: MutableList<MessageBean>?
|
||||
) : BaseRecyclerAdapter<MessageBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_route_notification
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MessageBean) {
|
||||
val roundButton =
|
||||
holder!!.getView(R.id.iv_home_route_notification_state) as TypefaceRoundButton
|
||||
val textColor = if (item.isRead) {
|
||||
roundButton.visibility = View.GONE
|
||||
R.color.black70
|
||||
} else {
|
||||
roundButton.visibility = View.VISIBLE
|
||||
R.color.data_black_color
|
||||
}
|
||||
holder.getTextView(R.id.tv_home_route_notification_content).apply {
|
||||
text = item.message
|
||||
if (item.isSelect) {
|
||||
ellipsize = null
|
||||
isSingleLine = false
|
||||
} else {
|
||||
ellipsize = TextUtils.TruncateAt.END
|
||||
isSingleLine = true
|
||||
}
|
||||
setTextColor(ContextCompat.getColor(mContext, textColor))
|
||||
}
|
||||
holder.getTextView(R.id.tv_home_route_notification_type).apply {
|
||||
text = item.title
|
||||
setTextColor(ContextCompat.getColor(mContext, textColor))
|
||||
}
|
||||
holder.getTextView(R.id.tv_home_route_notification_date).apply {
|
||||
text = getRelativeTimeString(Utils.stringToTimestamp(item.sendTime))
|
||||
setTextColor(ContextCompat.getColor(mContext, textColor))
|
||||
}
|
||||
}
|
||||
|
||||
private fun getRelativeTimeString(time: Long): String {
|
||||
var formatDateStr = ""
|
||||
val now = System.currentTimeMillis()
|
||||
formatDateStr = if (DateUtils.isToday(time)) {
|
||||
mContext.getString(R.string.txt_today) + " " + Utils.formatTime(
|
||||
time, Utils.DATE_FORMAT_PATTERN_EN8
|
||||
)
|
||||
} else if (now - time < (48 * 60 * 60 * 1000)) {
|
||||
mContext.getString(R.string.txt_yesterday)
|
||||
} else {
|
||||
Utils.formatTime(time, Utils.DATE_FORMAT_PATTERN_EN9)
|
||||
}
|
||||
return formatDateStr
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.ui.activity.set.PermissionsSetActivity
|
||||
import com.abbidot.tracker.widget.TypefaceButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/25/025.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class PermissionsSetAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
private val mPermissionsSetActivity = ctx as PermissionsSetActivity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_permission_state_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val stateView = holder!!.getImageView(R.id.cb_permission_state_item)
|
||||
val typefaceTextView = holder.getTextView(R.id.tv_permission_tip_item)
|
||||
val btnLayout = holder.getView(R.id.ll_permission_set_layout)
|
||||
val btnSkip = holder.getView(R.id.btn_permission_skip_set) as TypefaceButton
|
||||
val btnEnable = holder.getView(R.id.btn_permission_enable_set) as TypefaceButton
|
||||
btnSkip.visibility = View.INVISIBLE
|
||||
btnEnable.setChangeAlphaWhenPress(true)
|
||||
btnEnable.setText(R.string.txt_turn_on_upper)
|
||||
|
||||
if (item.selected) {
|
||||
typefaceTextView.visibility = View.VISIBLE
|
||||
btnLayout.visibility = View.VISIBLE
|
||||
holder.itemView.setBackgroundResource(R.drawable.shape16_white_color_bg)
|
||||
} else {
|
||||
btnLayout.visibility = View.GONE
|
||||
typefaceTextView.visibility = View.GONE
|
||||
holder.itemView.setBackgroundResource(R.drawable.shape10_white_bg)
|
||||
}
|
||||
|
||||
when (item.state) {
|
||||
ConstantInt.Type0 -> stateView.setImageResource(R.drawable.icon_permission_error_check_svg)
|
||||
ConstantInt.Type1 -> stateView.setImageResource(R.drawable.icon_permission_check_svg)
|
||||
}
|
||||
|
||||
holder.setText(R.id.tv_permission_name_item, item.name)
|
||||
typefaceTextView.text = item.value
|
||||
|
||||
btnEnable.setOnClickListener {
|
||||
when (position) {
|
||||
0 -> mPermissionsSetActivity.mPermissionsCommon.operateBluetooth()
|
||||
1 -> mPermissionsSetActivity.mPermissionsCommon.operateGPSLocation()
|
||||
2 -> mPermissionsSetActivity.mPermissionsCommon.operateNotifications(
|
||||
this, ConstantInt.Type0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.LabelBean
|
||||
import com.qmuiteam.qmui.layout.QMUILinearLayout
|
||||
import kotlin.random.Random
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/2/21/021.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class PetLabelsAdapter(ctx: Context, list: MutableList<LabelBean>?) :
|
||||
BaseRecyclerAdapter<LabelBean>(ctx, list) {
|
||||
|
||||
private val mLabelBgColorList = mutableListOf(
|
||||
R.color.green_color10,
|
||||
R.color.label_color2,
|
||||
R.color.label_color3,
|
||||
R.color.label_color4,
|
||||
R.color.label_color5,
|
||||
R.color.label_color6,
|
||||
R.color.label_color7,
|
||||
R.color.label_color8,
|
||||
R.color.label_color9,
|
||||
R.color.label_color10,
|
||||
R.color.label_color11,
|
||||
R.color.label_color12,
|
||||
R.color.label_color13,
|
||||
R.color.label_color14
|
||||
)
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_pet_label_layout_v2
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: LabelBean) {
|
||||
val textView = holder!!.getTextView(R.id.tv_label_v2_name)
|
||||
val rootView = holder.itemView as QMUILinearLayout
|
||||
val imageView = holder.getImageView(R.id.iv_label_v2_is_select)
|
||||
if (item.check) {
|
||||
imageView.visibility = View.VISIBLE
|
||||
} else {
|
||||
imageView.visibility = View.GONE
|
||||
}
|
||||
textView.text = item.name
|
||||
|
||||
rootView.setBackgroundResource(mLabelBgColorList[Random.nextInt(mLabelBgColorList.size)])
|
||||
|
||||
rootView.radius = AppUtils.dpToPx(6)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/12/30/030.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class PetsBadgesAdapter(ctx: Context, list: MutableList<DataBean>?,itemViewWidthDp:Int=80) :
|
||||
BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
private val mItemViewWidthDp=AppUtils.dpToPx(itemViewWidthDp)
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_pets_badges_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
holder!!.getTextView(R.id.tv_item_my_pets_badge).apply {
|
||||
text = item.name
|
||||
}
|
||||
holder.itemView.layoutParams.width= mItemViewWidthDp
|
||||
holder.getImageView(R.id.iv_item_my_pets_badge).setImageResource(item.imageId)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.bean.ParentBadgeBean
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
import com.abbidot.tracker.ui.activity.pet.BadgeDetailActivity
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.abbidot.tracker.widget.TypefaceButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/12/30/030.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class PetsParentBadgesAdapter(ctx: Context, list: MutableList<ParentBadgeBean>?) :
|
||||
BaseRecyclerAdapter<ParentBadgeBean>(ctx, list) {
|
||||
|
||||
//默认显示的勋章个数
|
||||
private val defaultShowCount = 9
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_pets_parent_badges_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: ParentBadgeBean) {
|
||||
val recyclerView = holder!!.getView(R.id.rv_pet_badges_list) as RecyclerView
|
||||
holder.setText(R.id.tv_pets_parent_badges_name, item.parentName)
|
||||
val btn = (holder.getView(R.id.btn_parent_badges_expand_fold) as TypefaceButton).apply {
|
||||
visibility = View.GONE
|
||||
if (item.isExpand) {
|
||||
setText(R.string.txt_view_less)
|
||||
} else {
|
||||
setText(R.string.txt_see_all)
|
||||
}
|
||||
setOnClickListener {
|
||||
item.isExpand = !item.isExpand
|
||||
notifyItemChanged(position)
|
||||
}
|
||||
}
|
||||
item.badgeList?.apply {
|
||||
if (size > defaultShowCount) {
|
||||
btn.visibility = View.VISIBLE
|
||||
} else {
|
||||
btn.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
val list = if (item.isExpand || null == item.badgeList || item.badgeList!!.size < 4) {
|
||||
item.badgeList
|
||||
} else {
|
||||
item.badgeList!!.subList(0, defaultShowCount)
|
||||
}
|
||||
if (null == recyclerView.adapter) {
|
||||
val petsBadgesAdapter = PetsBadgesAdapter(mContext, list).apply {
|
||||
setOnItemClickListener(object : OnItemClickListener {
|
||||
override fun onItemClick(itemView: View?, pos: Int) {
|
||||
val activity = mContext as BaseActivity<*>
|
||||
Intent(mContext, BadgeDetailActivity::class.java).let {
|
||||
it.putExtra(ConstantString.PetLabels, list!![pos])
|
||||
activity.startActivity(it)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
ViewUtil.instance.setRecyclerViewGridLayout(
|
||||
mContext,
|
||||
recyclerView,
|
||||
petsBadgesAdapter,
|
||||
3,
|
||||
AppUtils.dpToPx(80),
|
||||
top = AppUtils.dpToPx(16),
|
||||
bottom = AppUtils.dpToPx(18),
|
||||
offset = AppUtils.dpToPx(32)
|
||||
)
|
||||
} else {
|
||||
val adapter = recyclerView.adapter as PetsBadgesAdapter
|
||||
adapter.setData(list, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.cardview.widget.CardView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
||||
|
||||
/**
|
||||
*/
|
||||
class SelectFencesTypeCardShadeAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_select_type_card_shade_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val imageView = holder!!.getImageView(R.id.iv_select_type_image)
|
||||
imageView.setImageResource(item.imageId)
|
||||
val cardView = holder.itemView as CardView
|
||||
cardView.apply {
|
||||
isSelected = item.selected
|
||||
cardElevation = if (item.selected) {
|
||||
setCardBackgroundColor(ContextCompat.getColor(context, R.color.select_color))
|
||||
QMUIDisplayHelper.dpToPx(4).toFloat()
|
||||
} else {
|
||||
setCardBackgroundColor(ContextCompat.getColor(context, R.color.transparent))
|
||||
0f
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/1/10/010.
|
||||
* @link
|
||||
* @description:选择地图应用列表弹窗
|
||||
*/
|
||||
class SelectMapListDialogAdapter(ctx: Context, list: MutableList<MenuTxtBean>?) :
|
||||
BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_select_map
|
||||
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
|
||||
val textView = holder!!.getTextView(R.id.item_select_map_name)
|
||||
textView.text = item.menuName
|
||||
textView.setCompoundDrawablesWithIntrinsicBounds(
|
||||
item.imageId, 0, 0, 0)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.cardview.widget.CardView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
|
||||
/**
|
||||
*/
|
||||
class SelectMapTypeCardShadeAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_map_type_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val imageView = holder!!.getImageView(R.id.iv_select_type_image)
|
||||
imageView.setImageResource(item.imageId)
|
||||
holder.setText(R.id.tv_map_type_name, item.name)
|
||||
val cardView = holder.getView(R.id.il_map_type_shade_image) as CardView
|
||||
cardView.apply {
|
||||
isSelected = item.selected
|
||||
cardElevation = if (item.selected) {
|
||||
setCardBackgroundColor(ContextCompat.getColor(context, R.color.white))
|
||||
val padding = AppUtils.dpToPx(3)
|
||||
setContentPadding(padding, padding, padding, padding)
|
||||
AppUtils.dpToPx(4).toFloat()
|
||||
} else {
|
||||
setCardBackgroundColor(ContextCompat.getColor(context, R.color.transparent))
|
||||
setContentPadding(0, 0, 0, 0)
|
||||
0f
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.graphics.Rect
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/12/24/024.
|
||||
* @link https://qa.1r1g.com/sf/ask/1997239751/
|
||||
* @description:RecyclerView的LinearLayoutManager和FlexboxLayoutManager通用item间距设置
|
||||
*/
|
||||
class SpaceItemDecoration(
|
||||
left: Int = 0, right: Int = 0, top: Int = 0, bottom: Int = 0
|
||||
) : RecyclerView.ItemDecoration() {
|
||||
|
||||
private var mLeft = left
|
||||
private var mRight = right
|
||||
private var mTop = top
|
||||
private var mBottom = bottom
|
||||
|
||||
override fun getItemOffsets(
|
||||
outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State
|
||||
) {
|
||||
if (mLeft > 0) {
|
||||
outRect.left = mLeft
|
||||
}
|
||||
if (mRight > 0) {
|
||||
outRect.right = mRight
|
||||
}
|
||||
if (mTop > 0) {
|
||||
outRect.top = mTop
|
||||
}
|
||||
if (mBottom > 0) {
|
||||
outRect.bottom = mBottom
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.SubscriptionsOrderBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
import com.abbidot.tracker.ui.activity.subscribe.RequestRefundActivity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionHistoryActivity
|
||||
import com.abbidot.tracker.widget.TypefaceRoundButton
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/8/19/019.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class SubscriptionHistoryAdapter(
|
||||
ctx: Context, list: MutableList<SubscriptionsOrderBean>?
|
||||
) : BaseRecyclerAdapter<SubscriptionsOrderBean>(ctx, list) {
|
||||
|
||||
private val mHistoryActivity = ctx as SubscriptionHistoryActivity
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_history_layout
|
||||
|
||||
override fun bindData(
|
||||
holder: RecyclerViewHolder?, position: Int, item: SubscriptionsOrderBean
|
||||
) {
|
||||
holder!!.setText(
|
||||
R.id.tv_subscription_history_order_id,
|
||||
mContext.getString(R.string.txt_order_id) + item.orderNum
|
||||
)
|
||||
holder.setText(
|
||||
R.id.tv_subscription_history_order_time,
|
||||
Utils.stringToDate(item.createTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN10)
|
||||
)
|
||||
holder.setText(R.id.tv_subscription_history_package_name, item.mealName)
|
||||
holder.setText(
|
||||
R.id.tv_subscription_history_package_price,
|
||||
String.format(mContext.getString(R.string.txt_money_unit), "${item.totalAmountWithTax}")
|
||||
)
|
||||
|
||||
|
||||
(holder.getView(R.id.btn_subscription_history_operate) as TypefaceRoundButton).apply {
|
||||
|
||||
setTextColor(ContextCompat.getColor(mContext, R.color.line_color1))
|
||||
|
||||
if (item.enabled == ConstantInt.Type0) visibility = View.GONE
|
||||
else {
|
||||
visibility = View.VISIBLE
|
||||
when (item.orderStatus) {
|
||||
1 -> {
|
||||
val updateTimestamp = Utils.stringToTimestamp(item.updateTime)
|
||||
val nowTimestamp = System.currentTimeMillis()
|
||||
// val nowTimestamp = Utils.stringToTimestamp(item.currentTime)
|
||||
if (item.mealUnit == ConstantString.PackageUnitMonth) {
|
||||
val day7Timestamp = 7 * 24 * 60 * 60 * 1000L
|
||||
//套餐超出7天不能退款
|
||||
if (nowTimestamp - updateTimestamp <= day7Timestamp) {
|
||||
visibility = View.VISIBLE
|
||||
setText(R.string.txt_refund)
|
||||
} else {
|
||||
visibility = View.GONE
|
||||
}
|
||||
} else {
|
||||
val day30Timestamp = 30 * 24 * 60 * 60 * 1000L
|
||||
//套餐超出30天不能退款
|
||||
if (nowTimestamp - updateTimestamp <= day30Timestamp) {
|
||||
visibility = View.VISIBLE
|
||||
setText(R.string.txt_refund)
|
||||
} else {
|
||||
visibility = View.GONE
|
||||
}
|
||||
}
|
||||
setTextColor(ContextCompat.getColor(mContext, R.color.select_color))
|
||||
}
|
||||
|
||||
4 -> setText(R.string.txt_waiting)
|
||||
5 -> setText(R.string.txt_refunding)
|
||||
6 -> setText(R.string.txt_refunded)
|
||||
7, 8 -> {
|
||||
setTextColor(ContextCompat.getColor(mContext, R.color.orange_red_color))
|
||||
setText(R.string.txt_rejected)
|
||||
}
|
||||
|
||||
else -> visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
setChangeAlphaWhenPress(true)
|
||||
setOnClickListener {
|
||||
if (item.orderStatus == ConstantInt.Type1) {
|
||||
Intent(mContext, RequestRefundActivity::class.java).apply {
|
||||
putExtra(ConstantString.SetMeal, item)
|
||||
mHistoryActivity.startActivity(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val state =
|
||||
if (item.enabled == ConstantInt.Type0 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
|
||||
mContext.getString(R.string.txt_expired)
|
||||
} else {
|
||||
mContext.getString(R.string.txt_active)
|
||||
}
|
||||
holder.setText(R.id.tv_subscription_history_subscription_state, state)
|
||||
|
||||
holder.getTextView(R.id.tv_subscription_history_annual_care).apply {
|
||||
text =
|
||||
if (item.annualCareType == ConstantInt.Type1) mContext.getString(R.string.start_txt_yes)
|
||||
else mContext.getString(R.string.txt_no)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.RelativeLayout
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.PackageTypeBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/19/019.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class SubscriptionPlanAdapter(
|
||||
ctx: Context, list: MutableList<PackageTypeBean>?
|
||||
) : BaseRecyclerAdapter<PackageTypeBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_plan_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageTypeBean) {
|
||||
val relativeLayout = holder!!.getView(R.id.rl_subscribe_plan_shade_item) as RelativeLayout
|
||||
// val popularCardView = holder.getView(R.id.cv_subscribe_plan_item_popular) as CardView
|
||||
// val subscription = holder.getTextView(R.id.tv_subscribe_plan_item_per_year)
|
||||
|
||||
if (item.selected) {
|
||||
relativeLayout.setBackgroundResource(R.drawable.shape20_yellow_border_cyan_bg)
|
||||
// popularCardView.visibility = View.VISIBLE
|
||||
} else {
|
||||
relativeLayout.setBackgroundResource(0)
|
||||
// popularCardView.visibility = View.GONE
|
||||
}
|
||||
holder.setText(R.id.tv_subscribe_plan_item_name, item.name)
|
||||
holder.setText(
|
||||
R.id.tv_subscribe_plan_item_money,
|
||||
String.format(mContext.getString(R.string.txt_money_unit), Utils.formatDecimal( item.price, 2))
|
||||
)
|
||||
// subscription.text =
|
||||
// String.format(mContext.getString(R.string.txt_per_year_money), item.subscriptionFee)
|
||||
// subscription.visibility = if (item.subscriptionFee == 0.0) View.INVISIBLE
|
||||
// else View.VISIBLE
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.widget.AppCompatCheckBox
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.PackageBenefitsBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/19/019.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class SubscriptionPlanDetailAdapter(
|
||||
ctx: Context, list: MutableList<PackageBenefitsBean>?
|
||||
) : BaseRecyclerAdapter<PackageBenefitsBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_plan_detail_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageBenefitsBean) {
|
||||
val checkBox = holder!!.getView(R.id.cb_subscribe_plan_detail_item) as AppCompatCheckBox
|
||||
checkBox.setOnClickListener {
|
||||
checkBox.isChecked = !checkBox.isChecked
|
||||
}
|
||||
holder.setText(R.id.tv_subscribe_plan_detail_name, item.title)
|
||||
checkBox.isChecked = item.status == ConstantInt.Open
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.MenuTxtBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/9/9/009.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class SureSubscribeSummaryAdapter(
|
||||
ctx: Context, list: MutableList<MenuTxtBean>?
|
||||
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscribe_summary_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
|
||||
holder?.apply {
|
||||
setText(R.id.tv_subscribe_summary_item_name, item.menuName)
|
||||
getTextView(R.id.tv_subscribe_summary_item_money).let {
|
||||
val string =
|
||||
String.format(mContext.getString(R.string.txt_money_unit), item.menuValue)
|
||||
it.text = if (item.isSwitch) "-$string"
|
||||
else string
|
||||
it.setTextColor(ContextCompat.getColor(mContext, item.colorRedId))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/2/20/020.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class TextViewAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_text_view
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
holder!!.setText(R.id.tv_text_view_item, item.name)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/19/019.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class ViewPagerAdapter(list: MutableList<Fragment>, fragmentActivity: FragmentActivity) :
|
||||
FragmentStateAdapter(fragmentActivity) {
|
||||
|
||||
private val mFragmentList = list
|
||||
|
||||
override fun getItemCount() = mFragmentList.size
|
||||
|
||||
override fun createFragment(position: Int) = mFragmentList[position]
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import androidx.cardview.widget.CardView
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
||||
|
||||
/**
|
||||
*围栏类型
|
||||
*/
|
||||
class VirtualFencesZoneShadeAdapter(
|
||||
ctx: Context, list: MutableList<DataBean>?
|
||||
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_shadow_image_view
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
|
||||
val imageView = holder!!.getImageView(R.id.iv_item_shadow_image_view)
|
||||
val cardView = holder.itemView as CardView
|
||||
|
||||
if (item.selected) {
|
||||
imageView.setImageResource(item.selectImageId)
|
||||
cardView.cardElevation = QMUIDisplayHelper.dpToPx(4).toFloat()
|
||||
} else {
|
||||
imageView.setImageResource(item.imageId)
|
||||
cardView.cardElevation = 0f
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.WiFiBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.widget.MyWiFiSignalView
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/3/26/026.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class WiFiListAdapter(
|
||||
ctx: Context, list: MutableList<WiFiBean>?
|
||||
) : BaseRecyclerAdapter<WiFiBean>(ctx, list) {
|
||||
override fun getEmptyLayoutId(viewType: Int) = 0
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_wifi_info_layout
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: WiFiBean) {
|
||||
// val wifiName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// item.wifiSsid.toString()
|
||||
// } else {
|
||||
// item.SSID
|
||||
// }
|
||||
holder!!.setText(R.id.tv_wifi_item_name, item.name)
|
||||
val signalView = holder.getView(R.id.tv_wifi_item_signal) as MyWiFiSignalView
|
||||
val signal = Utils.calculateSignalLevel(item.signal, 3)
|
||||
if (item.auth_type == ConstantInt.Type0) {
|
||||
signalView.setValue(signal)
|
||||
} else {
|
||||
signalView.setValue(signal, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.abbidot.tracker.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.bean.WiFiZoneBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
|
||||
/**
|
||||
*/
|
||||
class WiFiZoneAdapter(
|
||||
ctx: Context, list: MutableList<WiFiZoneBean>?, isShowArrowRight: Boolean = true
|
||||
) : BaseRecyclerAdapter<WiFiZoneBean>(ctx, list) {
|
||||
|
||||
private val isShowArrow = isShowArrowRight
|
||||
|
||||
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_virtual_fences_empty_view
|
||||
|
||||
override fun getItemLayoutId(viewType: Int) = R.layout.item_wifi_zone_layout
|
||||
|
||||
override fun noData(holder: RecyclerViewHolder?) {
|
||||
holder?.apply {
|
||||
getView(R.id.btn_empty_fences_add_safe_zone).visibility =
|
||||
if (isShowNoDataAddButton) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: WiFiZoneBean) {
|
||||
holder!!.setText(R.id.tv_wifi_zone_name, item.wifiZoneName)
|
||||
holder.setText(R.id.tv_wifi_zone_address, item.address)
|
||||
val wifiZoneTypeImage =
|
||||
if (item.type == ConstantInt.Type1) R.drawable.icon_wifi_zone_type1_svg
|
||||
else R.drawable.icon_wifi_zone_type2_svg
|
||||
holder.getImageView(R.id.iv_wifi_zone_type).setBackgroundResource(wifiZoneTypeImage)
|
||||
|
||||
holder.getImageView(R.id.iv_wifi_zone_list_arrow_right).visibility =
|
||||
if (isShowArrow) View.VISIBLE
|
||||
else View.GONE
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
package com.abbidot.tracker.alipay
|
||||
799
app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt
Normal file
799
app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt
Normal file
@@ -0,0 +1,799 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Rect
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.Window
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.Button
|
||||
import android.widget.EditText
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.abbidot.baselibrary.network.exception.ErrorCode
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.GetResultCallback
|
||||
import com.abbidot.tracker.util.ViewUtil
|
||||
import com.hjq.toast.Toaster
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
||||
import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
||||
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
|
||||
import com.qmuiteam.qmui.widget.QMUITopBar
|
||||
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/2/002.
|
||||
* @link
|
||||
* @description: Activity基类
|
||||
*/
|
||||
abstract class BaseActivity<T : ViewBinding>(val inflater: (inflater: LayoutInflater) -> T) :
|
||||
AppCompatActivity(), View.OnClickListener {
|
||||
|
||||
protected lateinit var mViewBinding: T
|
||||
var mTopBar: QMUITopBar? = null
|
||||
lateinit var mContext: Context
|
||||
lateinit var mActivity: Activity
|
||||
private var mLoadingDialog: QMUITipDialog? = null
|
||||
|
||||
//默认删除去掉titleTopBar底部间隔下划线
|
||||
var mDeleteBottomDivider: Boolean = true
|
||||
|
||||
//Activity是否在前台显示运行
|
||||
var isFrontRunning = false
|
||||
|
||||
//是否需要通知上个页面更新数据
|
||||
var isNotifyUpdate = false
|
||||
|
||||
//右边图标按钮
|
||||
var mRightImageButton: QMUIAlphaImageButton? = null
|
||||
|
||||
//右边按钮
|
||||
var mRightTextButton: Button? = null
|
||||
|
||||
//网络请求失败,需要重试次数
|
||||
var mNetworkRequestsFailRetryCount = 0
|
||||
val mNetworkRequestsFailMaxCount = 3
|
||||
val mNetworkRequestsFailLimit = "networkRequestsFailLimit"
|
||||
|
||||
//是否拦截网络请求错误code提示
|
||||
var isInterceptNetErrorCodeTip = false
|
||||
|
||||
//软键盘管理
|
||||
private var mInputMethodManager: InputMethodManager? = null
|
||||
|
||||
// 监听因输入框弹出,遮挡输入框,界面移动,需要移动的view
|
||||
private var mTranslateView: View? = null
|
||||
|
||||
/*****************************监听软键盘弹出,输入框上移start************************************/
|
||||
private var isKeyboardTranslate = true
|
||||
|
||||
//是否需要适配底部EdgeToEdge
|
||||
var isEdgeToEdgeAdapterNavigationBars = true
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isFrontRunning = true
|
||||
super.onCreate(savedInstanceState)
|
||||
mViewBinding = inflater(layoutInflater)
|
||||
mContext = this
|
||||
mActivity = this
|
||||
//禁用屏幕旋转 代码设置无效
|
||||
// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
||||
mViewBinding.root.apply {
|
||||
//点击屏幕页面隐藏软键盘start
|
||||
setOnClickListener {
|
||||
hideInputMethod(this)
|
||||
}
|
||||
|
||||
//判断是否是深色模式
|
||||
if (AppUtils.isDarkThemeEnabled(mContext)) {
|
||||
// 设备处于深色模式
|
||||
setBackgroundResource(R.color.gray)
|
||||
} else {
|
||||
// 设备处于浅色模式,统一设置的渐变背景色
|
||||
background = ContextCompat.getDrawable(mContext, R.drawable.v2_bg_color_gradient)
|
||||
}
|
||||
}
|
||||
setContentView(mViewBinding.root)
|
||||
mTopBar = getTopBar()
|
||||
|
||||
//拦截返回按键
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
listenBackPressed()
|
||||
//Removing this callback
|
||||
// remove()
|
||||
// onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
})
|
||||
|
||||
initData()
|
||||
liveDataObserve()
|
||||
}
|
||||
|
||||
// 字体大小不跟随系统
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(getConfigurationContext(newBase))
|
||||
}
|
||||
|
||||
// 字体大小不跟随系统
|
||||
private fun getConfigurationContext(context: Context): Context {
|
||||
val configuration = context.resources.configuration
|
||||
configuration.fontScale = 1F
|
||||
return context.createConfigurationContext(configuration)
|
||||
}
|
||||
|
||||
/*
|
||||
lifecycleScope.launch {
|
||||
|
||||
Dispatchers.IO
|
||||
专为磁盘和网络IO进行了优化
|
||||
数据库-文件读写-网络处理
|
||||
Dispatchers.Default
|
||||
专为CPU密集型任务进行了优化
|
||||
数组排序 - JSON数据解析-处理差异判断
|
||||
withContext(Dispatchers.Default){
|
||||
|
||||
}
|
||||
lifecycleScope.coroutineContext
|
||||
}
|
||||
*/
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
isFrontRunning = true
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
//键盘隐藏恢复默认状态
|
||||
mTranslateView?.apply {
|
||||
scrollTo(0, 0)
|
||||
isKeyboardTranslate = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
showLoading(false)
|
||||
isFrontRunning = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 没有TopBar就设置返回null
|
||||
*/
|
||||
abstract fun getTopBar(): QMUITopBar?
|
||||
|
||||
/**
|
||||
* 注册监听livedata观察者
|
||||
*/
|
||||
open fun liveDataObserve() {}
|
||||
|
||||
/**
|
||||
* open修饰的类和方法可以被子类继承和重写
|
||||
* 初始化
|
||||
*/
|
||||
open fun initData() {
|
||||
//沉浸式状态栏
|
||||
QMUIStatusBarHelper.translucent(window)
|
||||
//判断是否是深色模式
|
||||
if (AppUtils.isDarkThemeEnabled(mContext)) {
|
||||
setStatusBarDark()
|
||||
} else {
|
||||
setStatusBarLight()
|
||||
}
|
||||
mTopBar?.apply {
|
||||
//适配状态栏
|
||||
this.parent?.let {
|
||||
edgeToEdgeAdapterBars(it as View, WindowInsetsCompat.Type.statusBars())
|
||||
}
|
||||
//去掉titleTopBar底部间隔下划线
|
||||
if (mDeleteBottomDivider) updateBottomDivider(0, 0, 0, 0)
|
||||
}
|
||||
//适配底部导航栏
|
||||
if (isEdgeToEdgeAdapterNavigationBars) edgeToEdgeAdapterBars(mViewBinding.root)
|
||||
}
|
||||
|
||||
/**
|
||||
* 和 setContentView 对应的方法
|
||||
*/
|
||||
private fun getContentView(): ViewGroup {
|
||||
return findViewById(Window.ID_ANDROID_CONTENT)
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听键盘弹出和隐藏,解决键盘弹出隐藏输入框的问题
|
||||
*/
|
||||
fun setListenKeyboardChange(windowTranslateY: Int = 500, view: View = window.decorView) {
|
||||
window.decorView.viewTreeObserver.addOnGlobalLayoutListener {
|
||||
onLayoutChange(view, windowTranslateY)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置其他包含的view点击。隐藏软键盘,如ScrollView
|
||||
*/
|
||||
fun setViewClickHideInputMethod(view: View) {
|
||||
// 点击外部隐藏软键盘,提升用户体验
|
||||
view.setOnClickListener {
|
||||
hideInputMethod(view)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* edgeToEdge全面屏适配Android15 底部。防止view被菜单、状态栏遮挡
|
||||
* https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650286452&idx=1&sn=354b78ae82c52b6d3d510256779a3df9&scene=21&poc_token=HN91iGij_n_mGA9z9ZarQC_44XYBhBjN9N9z_w1_
|
||||
*/
|
||||
fun edgeToEdgeAdapterBars(
|
||||
view: View, typeMask: Int = WindowInsetsCompat.Type.navigationBars()
|
||||
) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
|
||||
val bars = insets.getInsets(typeMask)
|
||||
v.setPadding(bars.left, bars.top, bars.right, bars.bottom)
|
||||
insets
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改状态颜色,有状态栏时用到,现在状态栏直接被占位
|
||||
*/
|
||||
// fun setStatusBarColor(color: Int) {
|
||||
// //这里动态修改颜色
|
||||
// window.statusBarColor = color
|
||||
// }
|
||||
|
||||
/**
|
||||
* 设置状态栏白色字体与图标
|
||||
*/
|
||||
fun setStatusBarDark() {
|
||||
QMUIStatusBarHelper.setStatusBarDarkMode(this)
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置状态栏黑色字体与图标
|
||||
*/
|
||||
fun setStatusBarLight() {
|
||||
QMUIStatusBarHelper.setStatusBarLightMode(this)
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置多个view的监听事件
|
||||
*/
|
||||
fun setOnClickListenerViews(vararg views: View?) {
|
||||
for (v in views) {
|
||||
v?.let {
|
||||
if (v is QMUIAlphaButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
} else if (v is QMUIAlphaImageButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
}
|
||||
v.setOnClickListener(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
// 默认不实现,让子类实现
|
||||
}
|
||||
|
||||
/**
|
||||
* 按钮开启/禁用点击
|
||||
*/
|
||||
fun setButtonEnabled(v: View, enabled: Int = ConstantInt.SpecialType) {
|
||||
when (enabled) {
|
||||
ConstantInt.SpecialType -> v.isEnabled = !v.isEnabled
|
||||
ConstantInt.Type0 -> v.isEnabled = false
|
||||
ConstantInt.Type1 -> v.isEnabled = true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置title标题 resIdTitle
|
||||
*/
|
||||
fun setTopBarTitle(resIdTitle: Int) {
|
||||
setTopBarTitle(getString(resIdTitle))
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置透明一体化状态栏TopBarTitle,只有返回按钮
|
||||
*/
|
||||
fun setTranslucentTopBar() {
|
||||
//去掉titleTopBar背景颜色,设置TopBar背景透明
|
||||
mTopBar!!.setBackgroundAlpha(0)
|
||||
setTopBarTitle("")
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置按钮图片
|
||||
*/
|
||||
fun setLeftBackImage(@DrawableRes resId: Int) {
|
||||
mTopBar!!.removeAllLeftViews()
|
||||
val leftBtn = mTopBar!!.addLeftImageButton(resId, R.id.topbar_left_change_button)
|
||||
if (resId == 0) {
|
||||
return
|
||||
}
|
||||
leftBtn.setOnClickListener { leftBackOnClick() }
|
||||
}
|
||||
|
||||
/**
|
||||
* 需要重写返回按钮时
|
||||
*/
|
||||
open fun leftBackOnClick() {
|
||||
finish()
|
||||
}
|
||||
|
||||
/**
|
||||
* 拦截返回按键
|
||||
*/
|
||||
// override fun onBackPressed() {
|
||||
// leftBackOnClick()
|
||||
// super.onBackPressed()
|
||||
// }
|
||||
|
||||
open fun listenBackPressed() {
|
||||
leftBackOnClick()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加TopBar右边图片按钮
|
||||
*/
|
||||
fun addRightImageButton(@DrawableRes resId: Int): QMUIAlphaImageButton {
|
||||
val rightBtn = mTopBar!!.addRightImageButton(resId, R.id.topbar_right_change_button)
|
||||
setOnClickListenerViews(rightBtn)
|
||||
return rightBtn
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加TopBar右边文字按钮
|
||||
*/
|
||||
fun addRightTextButton(
|
||||
@StringRes resId: Int, textColor: Int = R.color.select_color
|
||||
): Button {
|
||||
val textButton = mTopBar!!.addRightTextButton(
|
||||
getString(resId), R.id.topbar_right_change_textview
|
||||
).apply {
|
||||
setBackgroundResource(R.drawable.selector_transparent_pressed)
|
||||
setTextColor(ContextCompat.getColor(mContext, textColor))
|
||||
setOnClickListenerViews(this)
|
||||
}
|
||||
return textButton
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置title标题titleString
|
||||
*/
|
||||
fun setTopBarTitle(title: String) {
|
||||
if (null != mTopBar) {
|
||||
if (TextUtils.isEmpty(title)) mTopBar!!.showTitleView(false)
|
||||
else {
|
||||
mTopBar!!.setTitle(title)
|
||||
val tf =
|
||||
ViewUtil.instance.setTypeface(mContext, getString(R.string.roboto_bold_font))
|
||||
mTopBar!!.titleView!!.setTypeface(tf)
|
||||
}
|
||||
mTopBar!!.addLeftBackImageButton().setOnClickListener { leftBackOnClick() }
|
||||
}
|
||||
}
|
||||
|
||||
fun isShowLoading(): Boolean {
|
||||
if (null != mLoadingDialog && mLoadingDialog!!.isShowing) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun showLoading(show: Boolean, tipsRes: Int, cancelable: Boolean = true) {
|
||||
showLoading(show, getString(tipsRes), cancelable)
|
||||
}
|
||||
|
||||
fun showLoading(show: Boolean, tip: String = "", cancelable: Boolean = true) {
|
||||
// if (!isFrontRunning) {
|
||||
// return
|
||||
// }
|
||||
// if (show) {
|
||||
// if (isShowLoading()) {
|
||||
// mLoadingDialog!!.dismiss()
|
||||
// }
|
||||
// var message = tip
|
||||
// if (TextUtils.isEmpty(tip)) {
|
||||
// message = getString(R.string.txt_loading)
|
||||
// }
|
||||
// mLoadingDialog =
|
||||
// QMUITipDialog.Builder(mContext).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
|
||||
// .setTipWord(message).create(cancelable).apply {
|
||||
// setCanceledOnTouchOutside(false)
|
||||
// show()
|
||||
// }
|
||||
// } else {
|
||||
// mLoadingDialog?.dismiss()
|
||||
// }
|
||||
}
|
||||
|
||||
fun showNoCancelableLoading(show: Boolean) {
|
||||
if (!isFrontRunning) {
|
||||
return
|
||||
}
|
||||
if (show) {
|
||||
if (isShowLoading()) {
|
||||
mLoadingDialog!!.dismiss()
|
||||
}
|
||||
// var message = tip
|
||||
// if (TextUtils.isEmpty(tip)) {
|
||||
// }
|
||||
val message = getString(R.string.txt_loading)
|
||||
mLoadingDialog =
|
||||
QMUITipDialog.Builder(mContext).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
|
||||
.setTipWord(message).create(false).apply {
|
||||
setCanceledOnTouchOutside(false)
|
||||
show()
|
||||
}
|
||||
} else {
|
||||
mLoadingDialog?.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示提示toast
|
||||
*/
|
||||
fun showToast(
|
||||
tip: String, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
|
||||
// @QMUITipDialog.Builder.IconType iconType: Int = QMUITipDialog.Builder.ICON_TYPE_NOTHING
|
||||
) {
|
||||
if (gravity == Gravity.BOTTOM) Toaster.setGravity(gravity, 0, 300, 0f, 0f)
|
||||
if (isFinish) {
|
||||
// DialogUtils.showTipDialog(mContext, mViewBinding.root, tip, iconType, true)
|
||||
//activity前台显示运行才弹出
|
||||
if (isFrontRunning) {
|
||||
Toaster.show(tip)
|
||||
//根据文字长度来决定显示时间长短
|
||||
var showTime = if (AppUtils.isChina()) {
|
||||
tip.length * (1000L / 4)
|
||||
} else {
|
||||
tip.length * (1000L / 10)
|
||||
}
|
||||
if (showTime < 1000) showTime = 1500
|
||||
if (showTime > 8000) showTime = 8000
|
||||
mViewBinding.root.postDelayed({
|
||||
if (!isFinishing) {
|
||||
Toaster.cancel()
|
||||
finish()
|
||||
}
|
||||
}, showTime)
|
||||
}
|
||||
} else {
|
||||
Toaster.show(tip)
|
||||
}
|
||||
}
|
||||
|
||||
fun showToast(
|
||||
resIdString: Int, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
|
||||
// @QMUITipDialog.Builder.IconType iconType: Int = QMUITipDialog.Builder.ICON_TYPE_NOTHING
|
||||
) {
|
||||
showToast(getString(resIdString), isFinish, gravity)
|
||||
}
|
||||
|
||||
fun hideFragment(fragmentTransaction: FragmentTransaction, fragment: Fragment) {
|
||||
if (fragment.isAdded) {
|
||||
fragmentTransaction.hide(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
override fun finish() {
|
||||
super.finish()
|
||||
overridePendingTransition(R.anim.slide_still, R.anim.slide_out_right)
|
||||
}
|
||||
|
||||
override fun startActivity(intent: Intent) {
|
||||
super.startActivity(intent)
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
}
|
||||
|
||||
fun startActivityFinish(intent: Intent) {
|
||||
startActivity(intent)
|
||||
super.finish()
|
||||
}
|
||||
|
||||
override fun startActivity(intent: Intent, options: Bundle?) {
|
||||
super.startActivity(intent, options)
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
}
|
||||
|
||||
/**
|
||||
* onActivityResult 替换跳转方法
|
||||
*/
|
||||
fun launchActivity(activityResultLauncher: ActivityResultLauncher<Intent>, intent: Intent) {
|
||||
activityResultLauncher.launch(intent)
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一处理网络请求结果
|
||||
*/
|
||||
fun <T> dealRequestResult(
|
||||
it: Result<T>,
|
||||
getResultCallback: GetResultCallback,
|
||||
showLoading: Boolean = false,
|
||||
isShowNoDataTip: Boolean = true,
|
||||
isShowRequestErrorTip: Boolean = true,
|
||||
errorTip: String = getString(R.string.txt_net_error)
|
||||
) {
|
||||
try {
|
||||
showLoading(showLoading)
|
||||
//服务器返回错误信息
|
||||
val exceptionMessage = it.exceptionOrNull()?.message
|
||||
//服务器返回错误code
|
||||
val exceptionCode: String? = it.exceptionOrNull()?.toString()
|
||||
LogUtil.d("Throwable?", "code=${exceptionCode},${exceptionMessage}")
|
||||
if (null != exceptionCode) {
|
||||
//处理注册用户已存在的情况
|
||||
if (exceptionCode == ErrorCode.USER_HAS_EXIST.toString()) {
|
||||
getResultCallback.onRequestError(exceptionCode)
|
||||
}
|
||||
//拦截请求异常code
|
||||
if (netErrorCodeTips(exceptionCode)) {
|
||||
//已经处理相关错误码就直接返回
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
val data = it.getOrNull()
|
||||
if (null == data) {
|
||||
if (isShowRequestErrorTip) showToast(errorTip)
|
||||
if (mNetworkRequestsFailRetryCount < mNetworkRequestsFailMaxCount) {
|
||||
mNetworkRequestsFailRetryCount++
|
||||
getResultCallback.onRequestError(exceptionCode)
|
||||
} else {
|
||||
//请求次数上限
|
||||
getResultCallback.onRequestError(mNetworkRequestsFailLimit)
|
||||
}
|
||||
} else {
|
||||
mNetworkRequestsFailRetryCount = 0
|
||||
if (isShowNoDataTip && data is MutableList<*> && data.size == 0) {
|
||||
showToast(R.string.no_data)
|
||||
}
|
||||
//不做强制类型转换
|
||||
getResultCallback.onResult(0)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e("接口出错造成的异常:${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 网络请求错误code提示
|
||||
*/
|
||||
private fun netErrorCodeTips(exceptionCode: String): Boolean {
|
||||
//设备已过期,请续费
|
||||
when (exceptionCode) {
|
||||
ErrorCode.DEVICE_RENEWAL.toString() -> {
|
||||
showToast(R.string.txt_device_renewal)
|
||||
return true
|
||||
}
|
||||
//TOKEN失效或者过期
|
||||
ErrorCode.TOKEN_OVERDUE.toString() -> {
|
||||
showToast(R.string.txt_token_overdue)
|
||||
return true
|
||||
}
|
||||
//用户名或密码错误
|
||||
ErrorCode.USER_PASSWORD_ERROR.toString() -> {
|
||||
showToast(R.string.txt_user_password_error, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//验证码错误
|
||||
ErrorCode.VERIFY_CODE_ERROR.toString() -> {
|
||||
showToast(R.string.txt_verify_code_error, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//验证码已过期
|
||||
ErrorCode.VERIFY_CODE_EXPIRE.toString() -> {
|
||||
showToast(R.string.txt_verify_code_expire, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//注册失败
|
||||
ErrorCode.REGISTER_FAIL.toString() -> {
|
||||
showToast(R.string.txt_register_fail, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//用户不存在
|
||||
ErrorCode.USER_NO_EXIST.toString() -> {
|
||||
showToast(R.string.txt_user_no_exist, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//用户已存在
|
||||
ErrorCode.USER_HAS_EXIST.toString() -> {
|
||||
if (!isInterceptNetErrorCodeTip) {
|
||||
showToast(R.string.txt_user_has_exist, gravity = Gravity.BOTTOM)
|
||||
}
|
||||
return true
|
||||
}
|
||||
//邮箱格式不对
|
||||
ErrorCode.EMAIL_FORMAT_ERROR.toString() -> {
|
||||
showToast(R.string.txt_email_format_error, gravity = Gravity.CENTER)
|
||||
return true
|
||||
}
|
||||
//不能分享给自己
|
||||
ErrorCode.NO_SHARE_MYSELF.toString() -> {
|
||||
showToast(R.string.txt_no_share_myself)
|
||||
return true
|
||||
}
|
||||
//当前用户已经绑定该设备
|
||||
ErrorCode.DEVICE_HAS_BOUND.toString() -> {
|
||||
showToast(R.string.txt_device_has_bound)
|
||||
return true
|
||||
}
|
||||
//该设备已被绑定
|
||||
ErrorCode.DEVICE_HAS_BIND.toString() -> {
|
||||
showToast(R.string.txt_device_has_bind)
|
||||
return true
|
||||
}
|
||||
//设备不存在
|
||||
ErrorCode.DEVICE_NOT_EXIST.toString() -> {
|
||||
showToast(R.string.txt_no_dfu)
|
||||
return true
|
||||
}
|
||||
|
||||
else -> return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听软键盘隐藏
|
||||
*/
|
||||
open fun listenHideKeyboard() {}
|
||||
|
||||
/******************************点击屏幕页面隐藏软键盘start**************************************/
|
||||
// override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||
// if (ev.action == MotionEvent.ACTION_DOWN) {
|
||||
// val v = currentFocus
|
||||
// v?.let {
|
||||
// //如果搜索框内没有输入,隐藏键盘时则返回Contacts页面
|
||||
// if (isShouldHideKeyboard(v, ev)) {
|
||||
// if (hideInputMethod(it)) {
|
||||
// LogUtil.e("dispatchTouchEvent-->listenHideKeyboard,隐藏键盘")
|
||||
// listenHideKeyboard()
|
||||
// //这里可以执行隐藏需要执行的任务;
|
||||
// //隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件
|
||||
// //不拦截事件,按钮需要事件
|
||||
//// return true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// return super.dispatchTouchEvent(ev)
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取InputMethodManager
|
||||
*/
|
||||
private fun getInputMethodManager(): InputMethodManager? {
|
||||
if (null == mInputMethodManager) mInputMethodManager =
|
||||
getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
return mInputMethodManager
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏软键盘
|
||||
*/
|
||||
fun hideInputMethod(view: View): Boolean {
|
||||
getInputMethodManager()?.apply {
|
||||
return hideSoftInputFromWindow(view.windowToken, 0)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 弹出软键盘
|
||||
*/
|
||||
fun showInputMethod(view: View) {
|
||||
getInputMethodManager()?.apply {
|
||||
showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏
|
||||
*/
|
||||
private fun isShouldHideKeyboard(v: View?, ev: MotionEvent): Boolean {
|
||||
if (v != null && (v is EditText)) {
|
||||
val l = intArrayOf(0, 0)
|
||||
v.getLocationInWindow(l)
|
||||
val left = l[0]
|
||||
val top = l[1]
|
||||
val bottom = top + v.getHeight()
|
||||
val right = left + v.getWidth()
|
||||
return !(ev.x > left && ev.x < right && ev.y > top && ev.y < bottom)
|
||||
}
|
||||
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点
|
||||
return false
|
||||
}
|
||||
|
||||
/******************************点击屏幕页面隐藏软键盘end**************************************/
|
||||
|
||||
|
||||
/**
|
||||
* 软键盘显示
|
||||
*/
|
||||
open fun showSoftKeyboardCallback() {
|
||||
LogUtil.e("监听重写软键盘弹出")
|
||||
}
|
||||
|
||||
/**
|
||||
* 软键盘隐藏
|
||||
*/
|
||||
open fun hideSoftKeyboardCallback() {
|
||||
LogUtil.e("监听重写软键盘隐藏")
|
||||
}
|
||||
|
||||
/*
|
||||
* 获取导航栏高度
|
||||
*/
|
||||
private fun getNavigatorBarHeight(): Int {
|
||||
// val resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android")
|
||||
// val height = resources.getDimensionPixelSize(resourceId)
|
||||
return QMUIDisplayHelper.getNavMenuHeight(mContext)
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听因输入框弹出,遮挡输入框,界面移动
|
||||
* @param translateView 需要移动的view
|
||||
* @param translateY 移动的坐标点
|
||||
*/
|
||||
private fun onLayoutChange(translateView: View, translateY: Int) {
|
||||
mTranslateView = translateView
|
||||
//获取当前屏幕内容的高度
|
||||
val screenHeight = window.decorView.height
|
||||
//获取View可见区域的bottom
|
||||
val rect = Rect()
|
||||
window.decorView.getWindowVisibleDisplayFrame(rect)
|
||||
if (screenHeight - getNavigatorBarHeight() > rect.bottom) {
|
||||
// 获取按钮的左上角,按钮高度为40dp
|
||||
// val location = IntArray(2)
|
||||
// translateView.getLocationOnScreen(location)
|
||||
// val bottom = location[1] + resources.getDimensionPixelSize(R.dimen.dp_80)
|
||||
//// 如果按钮被覆盖,移动整个界面向上移动
|
||||
// if (bottom > rect.bottom) {
|
||||
// window.decorView.scrollBy(0, bottom - rect.bottom)
|
||||
// isKeyboardTranslate = true
|
||||
// }
|
||||
if (!isKeyboardTranslate) {
|
||||
//移动到指定位置点坐标
|
||||
translateView.scrollBy(0, translateY)
|
||||
isKeyboardTranslate = true
|
||||
}
|
||||
LogUtil.e("软键盘弹出")
|
||||
showSoftKeyboardCallback()
|
||||
} else {
|
||||
LogUtil.e("隐藏软键盘")
|
||||
if (isKeyboardTranslate) {
|
||||
translateView.scrollTo(0, 0)
|
||||
isKeyboardTranslate = false
|
||||
}
|
||||
hideSoftKeyboardCallback()
|
||||
}
|
||||
}
|
||||
/*****************************监听软键盘弹出,输入框上移end************************************/
|
||||
}
|
||||
96
app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt
Normal file
96
app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt
Normal file
@@ -0,0 +1,96 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.View.OnClickListener
|
||||
import android.view.WindowManager
|
||||
import androidx.annotation.StyleRes
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/1/11/011.-
|
||||
* @link
|
||||
* @dialogHeightDp 默认高度350dp
|
||||
* @description:BaseDialog
|
||||
*/
|
||||
abstract class BaseDialog<T : ViewBinding>
|
||||
(
|
||||
val inflater: (inflater: LayoutInflater) -> T,
|
||||
context: Context,
|
||||
dialogHeightDp: Int = 0,
|
||||
@StyleRes animationResId: Int = R.style.QMUI_Animation_Scale,
|
||||
@StyleRes themeResId: Int = R.style.my_Dialog_shadow_style
|
||||
) : AppCompatDialog(context, themeResId), OnClickListener {
|
||||
|
||||
protected lateinit var mViewBinding: T
|
||||
|
||||
val mContext = context
|
||||
|
||||
private val mAnimationResId = animationResId
|
||||
private val mDialogHeightDp = dialogHeightDp
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
mViewBinding = inflater(layoutInflater)
|
||||
setContentView(mViewBinding.root)
|
||||
//设置Dialog动画
|
||||
window!!.setWindowAnimations(mAnimationResId)
|
||||
//设置弹窗的高度
|
||||
val layoutParams: WindowManager.LayoutParams = window!!.attributes
|
||||
if (mDialogHeightDp == 0) {
|
||||
//采用自适应高度
|
||||
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
} else {
|
||||
layoutParams.height = AppUtils.dpToPx(mDialogHeightDp)
|
||||
}
|
||||
// layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
window!!.attributes = layoutParams
|
||||
|
||||
initView()
|
||||
}
|
||||
|
||||
abstract fun initView()
|
||||
|
||||
/**
|
||||
* 设置多个view的监听事件
|
||||
*/
|
||||
fun setOnClickListenerViews(vararg views: View?) {
|
||||
for (v in views) {
|
||||
v?.let {
|
||||
if (v is QMUIAlphaButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
} else if (v is QMUIAlphaImageButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
}
|
||||
v.setOnClickListener(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
// 默认不实现,让子类实现
|
||||
}
|
||||
|
||||
interface OnDialogOkListener {
|
||||
fun onOkClick(dialog: BaseDialog<*>)
|
||||
}
|
||||
|
||||
interface OnDialogSelectListener {
|
||||
fun onSelectClick(dialog: BaseDialog<*>, any: Any)
|
||||
}
|
||||
|
||||
interface OnDialogCancelListener {
|
||||
fun onCancelClick(dialog: BaseDialog<*>)
|
||||
}
|
||||
}
|
||||
|
||||
14
app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt
Normal file
14
app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/4/20/020.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
abstract class BaseDiffBean {
|
||||
// 判断当前对象和给定对象是否是同一对象
|
||||
abstract fun isSameObject(other: Any): Boolean
|
||||
|
||||
// 判断当前对象和给定对象是否拥有相同内容
|
||||
abstract fun hasSameContent(other: Any): Boolean
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/12/012.
|
||||
* @link
|
||||
* @description: DiffUtil基类封装
|
||||
*/
|
||||
open class BaseDiffCallBack<T>(oldList: MutableList<T>?, newList: MutableList<T>?) :
|
||||
DiffUtil.Callback() {
|
||||
|
||||
private var mOldList: MutableList<T>? = oldList
|
||||
private var mNewList: MutableList<T>? = newList
|
||||
|
||||
override fun getOldListSize() = if (mOldList == null) {
|
||||
0
|
||||
} else mOldList!!.size
|
||||
|
||||
override fun getNewListSize() = if (mNewList == null) {
|
||||
0
|
||||
} else mNewList!!.size
|
||||
|
||||
/**
|
||||
* 判断新旧item是否是同一个item,最好以唯一不变的id作比较
|
||||
*/
|
||||
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
||||
// if (null == mNewList || null == mOldList) return false
|
||||
val newItem = mNewList!![newItemPosition]
|
||||
if (newItem is BaseDiffBean) {
|
||||
return newItem.isSameObject(mOldList!![oldItemPosition]!!)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 是同一个item。然后比较新旧item的内容是否一样
|
||||
*/
|
||||
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
||||
val newItem = mNewList!![newItemPosition]
|
||||
if (newItem is BaseDiffBean) {
|
||||
return newItem.hasSameContent(mOldList!![oldItemPosition]!!)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 局部刷新比较,只更新某个item
|
||||
*/
|
||||
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
|
||||
val newDeviceBean = mNewList?.get(newItemPosition)
|
||||
if (!areContentsTheSame(oldItemPosition, newItemPosition)) {
|
||||
return newDeviceBean
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
167
app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt
Normal file
167
app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt
Normal file
@@ -0,0 +1,167 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.constant.GetResultCallback
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
||||
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/2/002.
|
||||
* @link
|
||||
* @description:Fragment基类
|
||||
* 关于@JvmOverloads constructor说明 https://stackoverflow.com/questions/34469487/caused-by-java-lang-nosuchmethodexception-init-class-android-content-contex
|
||||
*/
|
||||
abstract class BaseFragment<T : ViewBinding>(
|
||||
val inflater: (inflater: LayoutInflater, container: ViewGroup?, attachToRoot: Boolean) -> T
|
||||
) : Fragment(), View.OnClickListener {
|
||||
|
||||
protected lateinit var mViewBinding: T
|
||||
var mActivity: Activity? = null
|
||||
var mContext: Context? = null
|
||||
var mLoadingDialog: QMUITipDialog? = null
|
||||
|
||||
/**
|
||||
* Fragment中嵌套子Fragment时,如果父Fragment被销毁而子Fragment未被销毁,会导致子Fragment的视图不再显示
|
||||
*/
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
savedInstanceState?.remove("android:support:fragments")
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
||||
): View? {
|
||||
mViewBinding = this.inflater(inflater, container, false)
|
||||
LogUtil.e("${javaClass.simpleName},onCreateView")
|
||||
return mViewBinding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
mActivity = activity
|
||||
mContext = context
|
||||
//统一设置的渐变背景色
|
||||
mViewBinding.root.background =
|
||||
ContextCompat.getDrawable(mContext!!, R.drawable.v2_bg_color_gradient)
|
||||
LogUtil.e("${javaClass.simpleName},onViewCreated")
|
||||
initData()
|
||||
liveDataObserve()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 注册监听livedata观察者
|
||||
*/
|
||||
open fun liveDataObserve() {}
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
open fun initData() {}
|
||||
|
||||
fun showLoading(show: Boolean, tip: String = "", cancelable: Boolean = true) {
|
||||
(activity as BaseActivity<*>).showLoading(show, tip, cancelable)
|
||||
}
|
||||
|
||||
fun showLoading(show: Boolean) {
|
||||
(activity as BaseActivity<*>).showLoading(show)
|
||||
}
|
||||
|
||||
fun showNoCancelableLoading(show: Boolean) {
|
||||
(activity as BaseActivity<*>).showNoCancelableLoading(show)
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示提示toast
|
||||
*/
|
||||
fun showToast(
|
||||
tip: String, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
|
||||
) {
|
||||
// DialogUtils.showTipDialog(mContext!!, mViewBinding.root, tip, iconType, isFinish = isFinish)
|
||||
(activity as BaseActivity<*>).showToast(tip, isFinish, gravity)
|
||||
}
|
||||
|
||||
fun showToast(
|
||||
resIdString: Int, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
|
||||
) {
|
||||
// showToast(getString(resIdString), isFinish, iconType)
|
||||
(activity as BaseActivity<*>).showToast(resIdString, isFinish, gravity)
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置多个view的监听事件
|
||||
*/
|
||||
fun setOnClickListenerViews(vararg views: View?) {
|
||||
for (v in views) {
|
||||
v?.let {
|
||||
if (v is QMUIAlphaButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
} else if (v is QMUIAlphaImageButton) {
|
||||
//设置按下点击透明效果
|
||||
v.setChangeAlphaWhenPress(true)
|
||||
}
|
||||
v.setOnClickListener(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
// 默认不实现,让子类实现
|
||||
}
|
||||
|
||||
fun finish(activity: Activity) {
|
||||
(activity as BaseActivity<*>).finish()
|
||||
}
|
||||
|
||||
fun startActivity(activity: Activity, intent: Intent) {
|
||||
(activity as BaseActivity<*>).startActivity(intent)
|
||||
}
|
||||
|
||||
fun startActivityFinish(activity: Activity, intent: Intent) {
|
||||
(activity as BaseActivity<*>).startActivityFinish(intent)
|
||||
}
|
||||
|
||||
fun startActivity(activity: Activity, intent: Intent, options: Bundle?) {
|
||||
(activity as BaseActivity<*>).startActivity(intent, options)
|
||||
}
|
||||
|
||||
/**
|
||||
* onActivityResult 替换跳转方法
|
||||
*/
|
||||
fun launchActivity(
|
||||
activity: Activity, activityResultLauncher: ActivityResultLauncher<Intent>, intent: Intent
|
||||
) {
|
||||
(activity as BaseActivity<*>).launchActivity(activityResultLauncher, intent)
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一处理网络请求结果
|
||||
*/
|
||||
fun <T> dealRequestResult(
|
||||
it: Result<T>,
|
||||
getResultCallback: GetResultCallback,
|
||||
showLoading: Boolean = false,
|
||||
isShowNoDataTip: Boolean = true,
|
||||
isRequestErrorTip: Boolean = true,
|
||||
errorTip: String = getString(R.string.txt_net_error)
|
||||
) {
|
||||
(activity as BaseActivity<*>).dealRequestResult(
|
||||
it, getResultCallback, showLoading, isShowNoDataTip, isRequestErrorTip, errorTip
|
||||
)
|
||||
}
|
||||
}
|
||||
195
app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt
Normal file
195
app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt
Normal file
@@ -0,0 +1,195 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.content.Context
|
||||
import com.abbidot.baselibrary.constant.MMKVKey
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.tracker.bean.FencesBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.ui.fragment.map.baidumap.BaseBaiduMapFragment
|
||||
import com.abbidot.tracker.ui.fragment.map.googlemap.BaseGoogleMapFragment
|
||||
import com.abbidot.tracker.util.Util
|
||||
import com.baidu.mapapi.utils.DistanceUtil
|
||||
import com.google.android.gms.maps.model.LatLng
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/5/10/010.
|
||||
* @link
|
||||
* @description:重复调用方法写在这个类中
|
||||
*/
|
||||
open class BaseMapCommon {
|
||||
|
||||
/**
|
||||
* 地图是否加载好了,准备好了
|
||||
*/
|
||||
fun isMapLoadOk(
|
||||
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
|
||||
): Boolean {
|
||||
var loadOK = false
|
||||
if (null != baiduMapFragment) {
|
||||
loadOK = baiduMapFragment.isMapLoadOk
|
||||
} else if (null != googleMapFragment) {
|
||||
loadOK = googleMapFragment.isMapLoadOk
|
||||
}
|
||||
return loadOK
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始每隔几秒刷新用户位置
|
||||
*/
|
||||
fun startRefreshUserLocation(
|
||||
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
|
||||
) {
|
||||
googleMapFragment?.getLastLocation()
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换地图类型
|
||||
*/
|
||||
fun switchSatelliteAndNormalMapType(
|
||||
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
|
||||
) {
|
||||
val mapTypeSp = Util.getMapTypeSp()
|
||||
if (mapTypeSp == ConstantInt.Type0) {
|
||||
MMKVUtil.putInt(MMKVKey.MapType, ConstantInt.Type1)
|
||||
} else {
|
||||
MMKVUtil.putInt(MMKVKey.MapType, ConstantInt.Type0)
|
||||
}
|
||||
if (null != baiduMapFragment) {
|
||||
baiduMapFragment.switchSatelliteAndNormalMapType()
|
||||
} else googleMapFragment?.switchSatelliteAndNormalMapType()
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置宠物当前经纬度和头像
|
||||
*/
|
||||
fun setPetHeadAndCurrentLocation(
|
||||
petHeadUrl: String,
|
||||
petType: Int,
|
||||
lat: Double,
|
||||
lon: Double,
|
||||
baiduMapFragment: BaseBaiduMapFragment?,
|
||||
googleMapFragment: BaseGoogleMapFragment?
|
||||
) {
|
||||
if (null != googleMapFragment) {
|
||||
googleMapFragment.setPetCurrentLocation(petHeadUrl, lat, lon, petType)
|
||||
} else baiduMapFragment?.setPetCurrentLocation(petHeadUrl, lat, lon)
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换用户和宠物的位置居中显示
|
||||
*/
|
||||
fun switchShowLocationType(
|
||||
@ConstantInt type: Int,
|
||||
baiduMapFragment: BaseBaiduMapFragment?,
|
||||
googleMapFragment: BaseGoogleMapFragment?
|
||||
) {
|
||||
if (null != baiduMapFragment) {
|
||||
baiduMapFragment.switchShowLocation(type)
|
||||
} else googleMapFragment?.switchShowLocation(type)
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换用户、宠物和第三方的位置(围栏或者wifi zone)居中显示
|
||||
*/
|
||||
fun switchShowLocationType(
|
||||
@ConstantInt type: Int,
|
||||
lat: Double,
|
||||
lon: Double,
|
||||
baiduMapFragment: BaseBaiduMapFragment?,
|
||||
googleMapFragment: BaseGoogleMapFragment?
|
||||
) {
|
||||
if (null != baiduMapFragment) {
|
||||
if (type == ConstantInt.OtherLocationType) {
|
||||
baiduMapFragment.moveCameraLocation(lat, lon)
|
||||
} else {
|
||||
baiduMapFragment.switchShowLocation(type)
|
||||
}
|
||||
} else if (null != googleMapFragment) {
|
||||
if (type == ConstantInt.OtherLocationType) {
|
||||
googleMapFragment.moveCameraUpdate(lat, lon)
|
||||
} else {
|
||||
googleMapFragment.switchShowLocation(type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据预览围栏类型设置地图等级
|
||||
* @param padding 距离屏幕边缘的距离,px单位
|
||||
*/
|
||||
fun restoreFencesSetMapZoom(
|
||||
context: Context,
|
||||
fencesBean: FencesBean,
|
||||
baiduMapFragment: BaseBaiduMapFragment?,
|
||||
googleMapFragment: BaseGoogleMapFragment?,
|
||||
padding: Int
|
||||
) {
|
||||
fencesBean.apply {
|
||||
when (fenceShapeType) {
|
||||
ConstantInt.CircleShapeType -> {
|
||||
googleMapFragment?.apply {
|
||||
setLatLngZoom(
|
||||
context,
|
||||
padding,
|
||||
LatLng(ancillaryLatitude, ancillaryLongitude),
|
||||
LatLng(ancillaryOtherLatitude, ancillaryOtherLongitude)
|
||||
)
|
||||
}
|
||||
baiduMapFragment?.apply {
|
||||
setBaiduMapZoom(getDistanceZoom(radius.toDouble()) + 1)
|
||||
}
|
||||
}
|
||||
|
||||
ConstantInt.RectangleShapeType -> {
|
||||
googleMapFragment?.setLatLngZoom(
|
||||
context,
|
||||
padding,
|
||||
LatLng(latitudeA, longitudeA),
|
||||
LatLng(latitudeB, longitudeB),
|
||||
LatLng(latitudeC, longitudeC),
|
||||
LatLng(latitudeD, longitudeD)
|
||||
)
|
||||
baiduMapFragment?.apply {
|
||||
setBaiduMapZoom(
|
||||
getDistanceZoom(
|
||||
maxOf(
|
||||
shortDistance, longDistance
|
||||
).toDouble()
|
||||
) + 1
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
ConstantInt.PolygonShapeType -> {
|
||||
googleMapFragment?.setLatLngZoom(
|
||||
context,
|
||||
padding,
|
||||
LatLng(latitudeA, longitudeA),
|
||||
LatLng(latitudeB, longitudeB),
|
||||
LatLng(latitudeC, longitudeC),
|
||||
LatLng(latitudeD, longitudeD),
|
||||
LatLng(latitudeE, longitudeE),
|
||||
LatLng(latitudeF, longitudeF),
|
||||
)
|
||||
baiduMapFragment?.apply {
|
||||
val minLat =
|
||||
minOf(latitudeA, latitudeB, latitudeC, latitudeD, latitudeE, latitudeF)
|
||||
val maxLat =
|
||||
minOf(latitudeA, latitudeB, latitudeC, latitudeD, latitudeE, latitudeF)
|
||||
val minLon = minOf(
|
||||
longitudeA, longitudeB, longitudeC, longitudeD, longitudeE, longitudeF
|
||||
)
|
||||
val maxLon = minOf(
|
||||
longitudeA, longitudeB, longitudeC, longitudeD, longitudeE, longitudeF
|
||||
)
|
||||
val distance = DistanceUtil.getDistance(
|
||||
getBaiduMapLatLng(minLat, minLon), getBaiduMapLatLng(maxLat, maxLon)
|
||||
)
|
||||
setBaiduMapZoom(getDistanceZoom(distance))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/22/022.
|
||||
* @link
|
||||
* @description: QMUIRVItemSwipeAction.Callback
|
||||
*/
|
||||
abstract class BaseQMUIRVItemSwipeAction(swipeDirection: Int) : QMUIRVItemSwipeAction.Callback() {
|
||||
|
||||
private val mSwipeDirection = swipeDirection
|
||||
|
||||
abstract fun removeItem(position: Int)
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
removeItem(viewHolder.adapterPosition)
|
||||
}
|
||||
|
||||
override fun getSwipeDirection(recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder): Int {
|
||||
return mSwipeDirection
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.qmuiteam.qmui.recyclerView.QMUISwipeAction
|
||||
import com.qmuiteam.qmui.recyclerView.QMUISwipeAction.ActionBuilder
|
||||
import com.qmuiteam.qmui.recyclerView.QMUISwipeViewHolder
|
||||
import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
||||
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/20/020.
|
||||
* @link
|
||||
* @description:带有滑动删除菜单列表适配器,配合DiffUtil使用取消notifyDataSetChanged()方法
|
||||
*/
|
||||
abstract class BaseSwipeMenuAdapter<T>(context: Context, list: MutableList<T>) :
|
||||
RecyclerView.Adapter<QMUISwipeViewHolder>() {
|
||||
|
||||
private var mData: MutableList<T> = list
|
||||
private val mContext: Context = context
|
||||
private val mInflater: LayoutInflater = LayoutInflater.from(context)
|
||||
|
||||
private var mClickListener: BaseRecyclerAdapter.OnItemClickListener? = null
|
||||
private var mLongClickListener: BaseRecyclerAdapter.OnItemLongClickListener? = null
|
||||
|
||||
// 是否显示空布局,默认显示
|
||||
private var showEmptyView = true
|
||||
|
||||
//重试事件
|
||||
private var mAgainClickListener: BaseRecyclerAdapter.OnAgainClickListener? = null
|
||||
|
||||
/**
|
||||
* viewType--分别为item以及空view
|
||||
*/
|
||||
private val mViewTypeEmpty = 0
|
||||
private val mViewTypeItem = 1
|
||||
|
||||
//菜单样式Builder
|
||||
var mActionBuilder: ActionBuilder =
|
||||
ActionBuilder().textSize(QMUIDisplayHelper.sp2px(context, 14)).textColor(Color.WHITE)
|
||||
.paddingStartEnd(QMUIDisplayHelper.dp2px(context, 14))
|
||||
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QMUISwipeViewHolder {
|
||||
//空布局
|
||||
if (getEmptyLayoutId(viewType) != 0 && viewType == mViewTypeEmpty) {
|
||||
val itemView: View = mInflater.inflate(getEmptyLayoutId(viewType), parent, false)
|
||||
val swipeViewHolder = QMUISwipeViewHolder(itemView)
|
||||
if (null != mAgainClickListener) {
|
||||
itemView.setOnClickListener {
|
||||
showEmptyView(false)
|
||||
mAgainClickListener!!.onAgainListener()
|
||||
}
|
||||
}
|
||||
return swipeViewHolder
|
||||
} else {
|
||||
val itemView: View = mInflater.inflate(getItemLayoutId(viewType), parent, false)
|
||||
val swipeViewHolder = QMUISwipeViewHolder(itemView)
|
||||
//添加滑动菜单
|
||||
for (swipeAction in getSwipeActions()) {
|
||||
swipeViewHolder.addSwipeAction(swipeAction)
|
||||
}
|
||||
if (null != mClickListener) {
|
||||
itemView.setOnClickListener {
|
||||
mClickListener!!.onItemClick(itemView, swipeViewHolder.adapterPosition)
|
||||
}
|
||||
}
|
||||
if (null != mLongClickListener) {
|
||||
itemView.setOnLongClickListener {
|
||||
mLongClickListener!!.onItemLongClick(itemView, swipeViewHolder.adapterPosition)
|
||||
true
|
||||
}
|
||||
}
|
||||
return swipeViewHolder
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: QMUISwipeViewHolder, position: Int) {
|
||||
if (mData.size > 0) bindData(holder, position, mData[position])
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是空布局
|
||||
*/
|
||||
private fun isEmptyPosition(position: Int): Boolean {
|
||||
val count = mData.size
|
||||
return position == 0 && showEmptyView && count == 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置空布局显示。默认显示
|
||||
*/
|
||||
private fun showEmptyView(isShow: Boolean) {
|
||||
if (isShow != showEmptyView) {
|
||||
showEmptyView = isShow
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount() = if (mData.size == 0 && showEmptyView) 1 else mData.size
|
||||
|
||||
override fun getItemViewType(position: Int) =
|
||||
if (isEmptyPosition(position)) mViewTypeEmpty else mViewTypeItem
|
||||
|
||||
fun setData(list: MutableList<T>?) {
|
||||
if (list != null) {
|
||||
mData = list
|
||||
//出现没有数据就显示空布局
|
||||
if (mData.size == 0) {
|
||||
showEmptyView(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getData() = mData
|
||||
|
||||
fun remove(oldList: MutableList<T>, pos: Int): MutableList<T> {
|
||||
val newList: MutableList<T> = oldList.toMutableList()
|
||||
newList.removeAt(pos)
|
||||
return newList
|
||||
}
|
||||
|
||||
fun getItem(pos: Int) = mData[pos]
|
||||
|
||||
/**
|
||||
* 设置显示空布局 等于0不显示空布局
|
||||
*/
|
||||
abstract fun getEmptyLayoutId(viewType: Int): Int
|
||||
|
||||
//菜单集合
|
||||
abstract fun getSwipeActions(): MutableList<QMUISwipeAction>
|
||||
abstract fun getItemLayoutId(viewType: Int): Int
|
||||
abstract fun bindData(holder: QMUISwipeViewHolder?, position: Int, item: T)
|
||||
|
||||
fun setOnItemClickListener(listener: BaseRecyclerAdapter.OnItemClickListener?) {
|
||||
mClickListener = listener
|
||||
}
|
||||
|
||||
fun setOnItemLongClickListener(listener: BaseRecyclerAdapter.OnItemLongClickListener?) {
|
||||
mLongClickListener = listener
|
||||
}
|
||||
|
||||
fun setOnAgainClickListener(listener: BaseRecyclerAdapter.OnAgainClickListener?) {
|
||||
mAgainClickListener = listener
|
||||
}
|
||||
|
||||
}
|
||||
51
app/src/main/java/com/abbidot/tracker/base/BaseView.kt
Normal file
51
app/src/main/java/com/abbidot/tracker/base/BaseView.kt
Normal file
@@ -0,0 +1,51 @@
|
||||
package com.abbidot.tracker.base
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Paint
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/10/11/011.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
open class BaseView : View {
|
||||
|
||||
lateinit var mContext: Context
|
||||
var mWidth = 0
|
||||
var mHeight = 0
|
||||
var mValue = 0
|
||||
var mStrokeWidth = 0f
|
||||
|
||||
lateinit var mPaint: Paint
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
||||
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
|
||||
context, attrs, defStyleAttr
|
||||
)
|
||||
|
||||
open fun init(context: Context, attrs: AttributeSet?) {
|
||||
mContext = context
|
||||
|
||||
//禁用硬件加速,防止返回到界面多次执行onDraw
|
||||
setLayerType(LAYER_TYPE_SOFTWARE, null)
|
||||
|
||||
mStrokeWidth = AppUtils.dpToPx(1f)
|
||||
mPaint = Paint()
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
canvas.apply {
|
||||
startDraw(this)
|
||||
}
|
||||
}
|
||||
|
||||
open fun startDraw(canvas: Canvas) {
|
||||
|
||||
}
|
||||
}
|
||||
40
app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt
Normal file
40
app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt
Normal file
@@ -0,0 +1,40 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/15/015.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
@Parcelize
|
||||
data class ActiveTimeBean(
|
||||
var activeId: String,
|
||||
var activeTime: Int,
|
||||
var goalTime: Int,
|
||||
var goal: Int,
|
||||
var calories: Double,
|
||||
var dayTime: String,
|
||||
var deviceId: String,
|
||||
var distance: Double,
|
||||
var lickCounts: Int,
|
||||
var persisted: Int,
|
||||
var scratchCounts: Int,
|
||||
var steps: Long,
|
||||
var timeZone: Int,
|
||||
var updateDate: String,
|
||||
var vomitCount: Int,
|
||||
var avgActiveTime: Int,
|
||||
var avgSleepTime: Int,
|
||||
var totalTimes: Int,
|
||||
var totalDistance: Double,
|
||||
var activeValue: String,
|
||||
var avgCalories: Int,
|
||||
var sevenDatas: MutableList<ActiveTimeBean>?,
|
||||
var thirtyDatas: MutableList<ActiveTimeBean>?,
|
||||
) : Parcelable {
|
||||
constructor() : this(
|
||||
"", 0, 0, 0, 0.0, "", "", 0.0, 0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0.0, "", 0, null, null
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/7/29/029.
|
||||
* @link
|
||||
* @description:微信支付预支付订单
|
||||
*/
|
||||
data class AlipayOrderBean(val orderString: String) {
|
||||
constructor() : this("")
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2025/3/19/019.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
data class BleReportDataBean(
|
||||
var mac: String,
|
||||
var haveDeviceStateData: Boolean,
|
||||
var updateTime: Long,
|
||||
var latLonUpdateTime: Long,
|
||||
var powerSwitch: Int,
|
||||
var lteSignal: Int,
|
||||
var gpsSignal: Int,
|
||||
var batteryLevel: Int,
|
||||
var gnssInterval: Int,
|
||||
var ledSwitch: Int,
|
||||
var ledMode: Int,
|
||||
var ledRedValue: Int,
|
||||
var ledGreenValue: Int,
|
||||
var ledBlueValue: Int,
|
||||
var liveFlag: Int,
|
||||
var inSafeZone: Int,
|
||||
var inNoGoZone: Int,
|
||||
var cFencesId: String,
|
||||
var inWifiZone: Int,
|
||||
var wiFiZoneMac: String,
|
||||
var haveLocationData: Boolean,
|
||||
var locationMode: Int,
|
||||
var locationList: MutableList<HistoryDataBean>?,
|
||||
var haveActiveSleepData: Boolean,
|
||||
var year: Int,
|
||||
var month: Int,
|
||||
var day: Int,
|
||||
var activeTime: Long,
|
||||
var steps: Long,
|
||||
var timeZone: Int,
|
||||
var cTime: Int,
|
||||
var cActiveTime: Int,
|
||||
var cSleepTime: Int
|
||||
) {
|
||||
constructor() : this(
|
||||
"",
|
||||
false,
|
||||
0L,
|
||||
0L,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"",
|
||||
0,
|
||||
"",
|
||||
false,
|
||||
0,
|
||||
null,
|
||||
false,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0L,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import com.abbidot.baselibrary.constant.ConState
|
||||
import com.clj.fastble.data.BleDevice
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/5/27/027.
|
||||
* @link
|
||||
* @description:已绑定添加的设备实体类
|
||||
*/
|
||||
data class BleTrackDeviceBean(var mac: String,
|
||||
var bleDevice: BleDevice?,
|
||||
@ConState var conState: Int) {
|
||||
constructor() : this("", null, ConState.DISCONNECTED)
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/5/23/023.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
data class CountryCodeBean(var countryCode: Int)
|
||||
30
app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt
Normal file
30
app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Ignore
|
||||
import androidx.room.PrimaryKey
|
||||
import com.abbidot.tracker.database.MyDatabase
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/4/1/001.
|
||||
* @link
|
||||
* @description:保存用户输入信用卡
|
||||
*/
|
||||
@Parcelize
|
||||
@Entity(tableName = MyDatabase.CreditCardTableName)
|
||||
data class CreditCardBean(
|
||||
@PrimaryKey @ColumnInfo var cardNumber: String,
|
||||
@ColumnInfo var firstName: String,
|
||||
@ColumnInfo var lastName: String,
|
||||
@ColumnInfo var cardName: String,
|
||||
@ColumnInfo var expirationDate: String,
|
||||
@ColumnInfo var cvv: String,//信用卡验证值(Card Verification Value)
|
||||
@ColumnInfo var countryCode: String,
|
||||
@ColumnInfo var isPrimary: Boolean,
|
||||
@Ignore var checked: Boolean = false
|
||||
) : Parcelable {
|
||||
constructor() : this("", "", "", "", "", "", "USA", false, false)
|
||||
}
|
||||
12
app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt
Normal file
12
app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/3/23/023.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
data class DFUStateBean(var stateName: String, var progress: Int, var filePath: String) {
|
||||
constructor() : this("", 0, "")
|
||||
constructor(stateName: String, progress: Int) : this(stateName, progress, "")
|
||||
constructor(stateName: String) : this(stateName, 0, "")
|
||||
}
|
||||
43
app/src/main/java/com/abbidot/tracker/bean/DataBean.kt
Normal file
43
app/src/main/java/com/abbidot/tracker/bean/DataBean.kt
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.abbidot.tracker.constant.MultipleEntity
|
||||
import com.chad.library.adapter.base.entity.MultiItemEntity
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import kotlinx.parcelize.IgnoredOnParcel
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/12/20/020.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
@Parcelize
|
||||
data class DataBean(
|
||||
var id: String,
|
||||
var name: String,
|
||||
var value: String,
|
||||
var imageId: Int,
|
||||
var state: Int,
|
||||
var selectImageId: Int,
|
||||
var unit: String,
|
||||
var selected: Boolean = false,
|
||||
var checked: Boolean = false,
|
||||
var menuType: Int
|
||||
) : MultiItemEntity, Parcelable {
|
||||
|
||||
//设置空的构造方法
|
||||
constructor() : this("", "", "", 0, 0, 0, "", false, false, MultipleEntity.TEXT)
|
||||
|
||||
constructor(name: String, value: String) : this(
|
||||
"", name, value, 0, 0,0, "", false, false, MultipleEntity.TEXT
|
||||
)
|
||||
|
||||
//设置多个构造方法
|
||||
constructor(name: String, value: String, imageId: Int, unit: String) : this(
|
||||
"", name, value, imageId, 0, 0, unit, false, false, MultipleEntity.TEXT
|
||||
)
|
||||
|
||||
@IgnoredOnParcel
|
||||
@MultipleEntity
|
||||
override val itemType = menuType
|
||||
}
|
||||
53
app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt
Normal file
53
app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Ignore
|
||||
import com.abbidot.baselibrary.constant.ConState
|
||||
import com.abbidot.baselibrary.constant.DeviceType
|
||||
import com.abbidot.tracker.base.BaseDiffBean
|
||||
import com.abbidot.tracker.database.MyDatabase
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2021/11/8/008.
|
||||
* @link
|
||||
* @description:连接保存的设备表
|
||||
*/
|
||||
// 定义表名称,SQLite 中的表名称不区分大小写,2个主键
|
||||
@Entity(tableName = MyDatabase.DeviceTableName, primaryKeys = ["deviceOutId", "deviceId"])
|
||||
@Parcelize
|
||||
data class DeviceBean(//@PrimaryKey(autoGenerate = true) var id: Long,//autoGenerate = true 自动增长分配ID
|
||||
@ColumnInfo @DeviceType var type: Int,//设备类型
|
||||
@ColumnInfo var deviceName: String,
|
||||
@ColumnInfo var deviceOutId: String,
|
||||
@ColumnInfo var deviceId: String,
|
||||
@ColumnInfo var shared: Int, //0=没有分享,1=是授权分享的
|
||||
@ColumnInfo var batteryCapacity: Int,
|
||||
@ColumnInfo var ledSwitch: Int,
|
||||
@ColumnInfo @ConState var conState: Int,//连接状态
|
||||
@ColumnInfo var macId: String,
|
||||
@ColumnInfo var deviceInfoId: String,
|
||||
@ColumnInfo var surplusDays: Int,
|
||||
@ColumnInfo var gnssSignal: Int,
|
||||
@ColumnInfo var lteSignal: Int,
|
||||
@ColumnInfo var turnOff: Int,
|
||||
@ColumnInfo var lightMode: Int,
|
||||
@Ignore var pet: PetBean?) : BaseDiffBean(), Parcelable {
|
||||
// 如果某个实体中有您不想保留的字段,则可以使用 @Ignore 为这些字段添加注释
|
||||
|
||||
//设置空的构造方法
|
||||
constructor() : this(DeviceType.TYPE_ONE, "", "", "", 0, 0, 0, ConState.DISCONNECTED, "", "", 0,
|
||||
0, 0, 0, 0, null)
|
||||
|
||||
override fun isSameObject(other: Any): Boolean {
|
||||
val oldItem = other as DeviceBean
|
||||
return deviceId == oldItem.deviceId
|
||||
}
|
||||
|
||||
override fun hasSameContent(other: Any): Boolean {
|
||||
val oldItem = other as DeviceBean
|
||||
return oldItem.deviceOutId == deviceOutId && oldItem.batteryCapacity == batteryCapacity && oldItem.ledSwitch == ledSwitch && oldItem.pet == pet && oldItem.gnssSignal == gnssSignal && oldItem.lteSignal == lteSignal
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/2/28/028.
|
||||
* @link
|
||||
* @description:设备详情
|
||||
*/
|
||||
@Parcelize
|
||||
data class DeviceDetailBean(var deviceOutId: String,
|
||||
var deviceId: String,
|
||||
var macId: String,
|
||||
var pet: PetBean?,
|
||||
var fenceCount: Int,
|
||||
var surplusDays: Int,
|
||||
var familieCount: Int,var deviceInfo:DeviceInfoBean?) : Parcelable {
|
||||
constructor() : this("", "", "", null, 0, 0,0,null)
|
||||
}
|
||||
22
app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt
Normal file
22
app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt
Normal file
@@ -0,0 +1,22 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
data class DeviceInfoBean(var deviceInfoId: String,
|
||||
var red: Int,
|
||||
var green: Int,
|
||||
var blue: Int,
|
||||
//第一个 是:几分钟设备上报。2信号强度,3电量 4设备关机还是开机 5 light登打开还是关闭。5 wifi强度
|
||||
var gnssInterval: Int,
|
||||
var gnssSignal: Int,
|
||||
var batteryLevel: Int,
|
||||
var turnOff: Int,
|
||||
var ledSwitch: Int,
|
||||
var wifiSignal: Int,
|
||||
//当前LTE网络信号
|
||||
var lteSignal: Int,
|
||||
var lightMode: Int) : Parcelable {
|
||||
constructor() : this("", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
}
|
||||
39
app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt
Normal file
39
app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt
Normal file
@@ -0,0 +1,39 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.abbidot.tracker.base.BaseDiffBean
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/2/28/028.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
@Parcelize
|
||||
data class FamilyBean(
|
||||
var acceptEmail: String,
|
||||
var deviceId: String,
|
||||
var familyId: String,
|
||||
var imgurl: String,
|
||||
var inviteDate: String,
|
||||
var sendEmail: String,
|
||||
var status: Int,//设备的分享状态 1 是分享成功 0 分享中 2 已拒绝
|
||||
var userId: String,
|
||||
var relation: Int,//关系 1 Family 2 friend 3 love 4 colleague
|
||||
var avatar: Int,//头像 1 男生 2 女生 3 未知
|
||||
var userName: String,
|
||||
var petId: String,
|
||||
var petName: String
|
||||
) : Parcelable, BaseDiffBean() {
|
||||
constructor() : this("", "", "", "", "", "", 0, "", 1, 1, "", "", "")
|
||||
|
||||
override fun isSameObject(other: Any): Boolean {
|
||||
val oldItem = other as FamilyBean
|
||||
return familyId == oldItem.familyId
|
||||
}
|
||||
|
||||
override fun hasSameContent(other: Any): Boolean {
|
||||
val oldItem = other as FamilyBean
|
||||
return oldItem.imgurl == imgurl && oldItem.acceptEmail == acceptEmail
|
||||
}
|
||||
}
|
||||
13
app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt
Normal file
13
app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/10/010.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
data class FamilyPetBean(var petName: String,
|
||||
var petImgurl: String,
|
||||
var deviceOutId: String,
|
||||
var families: MutableList<FamilyBean>?) {
|
||||
constructor() : this("", "", "", null)
|
||||
}
|
||||
96
app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt
Normal file
96
app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt
Normal file
@@ -0,0 +1,96 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.abbidot.tracker.base.BaseDiffBean
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/2/28/028.
|
||||
* @link
|
||||
* @description:围栏
|
||||
*/
|
||||
@Parcelize
|
||||
data class FencesBean(
|
||||
var deviceId: String,
|
||||
var deviceServiceId: String,
|
||||
var fenceId: String,
|
||||
var name: String,
|
||||
var address: String,
|
||||
var imgurl: String,
|
||||
var isOn: Int,
|
||||
var radius: Int,
|
||||
var longitude: Double,
|
||||
var latitude: Double,
|
||||
var fenceShapeType: Int,// fenceShapeType 围栏类型,1是圆形,2是矩形 3是六边形
|
||||
var fenceType: Int,//围栏类型,1是Safe Zone,2是No Go Zone
|
||||
var fenceNameType: Int,//名称类型,1是home,2是Office,3是Garden,4是Park,5是Play,6是Garage,7是vegetable garden,8是River
|
||||
var longitudeA: Double,
|
||||
var latitudeA: Double,
|
||||
var longitudeB: Double,
|
||||
var latitudeB: Double,
|
||||
var longitudeC: Double,
|
||||
var latitudeC: Double,
|
||||
var longitudeD: Double,
|
||||
var latitudeD: Double,
|
||||
var longitudeE: Double,
|
||||
var latitudeE: Double,
|
||||
var longitudeF: Double,
|
||||
var latitudeF: Double,
|
||||
var longitudeCenter: Double,
|
||||
var latitudeCenter: Double,
|
||||
var ancillaryLatitude: Double,
|
||||
var ancillaryLongitude: Double,
|
||||
var ancillaryOtherLatitude: Double,
|
||||
var ancillaryOtherLongitude: Double,
|
||||
var longDistance: Int,
|
||||
var shortDistance: Int,
|
||||
var startDrag: Boolean//围栏形状是否开始拖动
|
||||
) : Parcelable, BaseDiffBean() {
|
||||
constructor() : this(
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
0.0,
|
||||
0.0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0,
|
||||
0,
|
||||
false
|
||||
)
|
||||
|
||||
override fun isSameObject(other: Any): Boolean {
|
||||
val oldItem = other as FencesBean
|
||||
return oldItem.fenceId == fenceId
|
||||
}
|
||||
|
||||
override fun hasSameContent(other: Any): Boolean {
|
||||
val oldItem = other as FencesBean
|
||||
return oldItem.isOn == isOn && oldItem.name == name && oldItem.imgurl == imgurl && oldItem.address == address && oldItem.fenceType == fenceType
|
||||
}
|
||||
|
||||
}
|
||||
16
app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt
Normal file
16
app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/3/22/022.
|
||||
* @link
|
||||
* @description:固件信息
|
||||
*/
|
||||
data class FirmwareBean(
|
||||
var deviceName: String,
|
||||
var version: String,
|
||||
var remark: String,
|
||||
var fileName: String,
|
||||
var firmwareUrl: String,
|
||||
var mac: String,
|
||||
var firmwareSize: String
|
||||
)
|
||||
19
app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt
Normal file
19
app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/4/25/025.
|
||||
* @link
|
||||
* @description:获取围栏数据返回
|
||||
*/
|
||||
@Parcelize
|
||||
data class GetFencesBean(
|
||||
var latitude: Double,
|
||||
var longitude: Double,
|
||||
var normalFenceList: MutableList<FencesBean>?,
|
||||
var nogoFenceList: MutableList<FencesBean>?
|
||||
) : Parcelable {
|
||||
constructor() : this(0.0, 0.0, null, null)
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/16/016.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
@Parcelize
|
||||
data class HistoryDataBean(var dayTime: String,
|
||||
var deviceId: String,
|
||||
var deviceInfoId: String,
|
||||
var historyPointId: String,
|
||||
var latitude: Double,
|
||||
var longitude: Double,
|
||||
var address: String,
|
||||
var positionMode: Int,
|
||||
var timeStamp: Long,
|
||||
var ledSwitch: Int,
|
||||
var gnssSignal: Int,
|
||||
var batteryLevel: Int,
|
||||
var lightMode: Int,
|
||||
@ConstantInt var inFance: Int,
|
||||
var petName: String,
|
||||
var petImgurl: String) : Parcelable {
|
||||
constructor() : this("", "", "", "", 0.0, 0.0, "", 0, 0L, 0, 0, 0, 0, ConstantInt.GoodZone, "",
|
||||
"")
|
||||
}
|
||||
14
app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt
Normal file
14
app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2022/3/15/015.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
data class HomeDataBean(
|
||||
var activeTime: ActiveTimeBean?,
|
||||
var sleepTime: SleepTimeBean?,
|
||||
var updateTime: Long
|
||||
) {
|
||||
constructor() : this(null, null, 0)
|
||||
}
|
||||
10
app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt
Normal file
10
app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2024/12/4/004.
|
||||
* @link
|
||||
* @description:设备邀请信息
|
||||
*/
|
||||
data class InviteInfoBean(
|
||||
var deleteArray: MutableList<FamilyBean>, var inviteArray: MutableList<FamilyBean>
|
||||
)
|
||||
16
app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt
Normal file
16
app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/7/10/010.
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
@Parcelize
|
||||
data class LKSimListBean(
|
||||
var partnerCode: String, var planList: MutableList<LKSimSetMealBean>?
|
||||
) : Parcelable {
|
||||
constructor() : this("", null)
|
||||
}
|
||||
24
app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt
Normal file
24
app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt
Normal file
@@ -0,0 +1,24 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/7/7/007.
|
||||
* @link
|
||||
* @description:领科sim卡套餐价格
|
||||
*/
|
||||
@Parcelize
|
||||
data class LKSimPriceBean(
|
||||
var autoRenewal: String,
|
||||
var currency: String,
|
||||
var currencySymbol: String,
|
||||
var discountPriceCNY: String,
|
||||
var discountPriceUSD: Double,
|
||||
var orderPeriod: String,
|
||||
var packageType: String,
|
||||
var specifications: String,
|
||||
var specifiedNameLabel: String
|
||||
) : Parcelable {
|
||||
constructor() : this("", "", "", "", 0.0, "", "", "", "")
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.abbidot.tracker.bean
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
*Created by .yzq on 2023/7/7/007.
|
||||
* @link
|
||||
* @description:领科sim卡套餐
|
||||
*/
|
||||
@Parcelize
|
||||
data class LKSimSetMealBean(
|
||||
var currency: String,
|
||||
var currencyId: String,
|
||||
var currencySymbol: String,
|
||||
var languageCode: String,
|
||||
var minOrderPeriod: String,
|
||||
var packageCode: String,
|
||||
var servicePlanCode: String,
|
||||
var servicePlanDetailsDesc: String,
|
||||
var servicePlanShortDesc: String,
|
||||
var servicePlanShowName: String,
|
||||
var specAndPriceList: MutableList<LKSimPriceBean>?,
|
||||
var stripeCoupon: String
|
||||
) : Parcelable {
|
||||
constructor() : this("", "", "", "", "", "", "", "", "", "", null, "")
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user